Estaba leyendo la página de manual deunzip
, y me encontré con lo siguiente
-P password
use password to decrypt encrypted zipfile entries (if any). THIS
IS INSECURE! Many multi-user operating systems provide ways for
any user to see the current command line of any other user; even on
stand-alone systems there is always the threat of over-the-shoulder
peeking.
Si bien la precaución de seguridad de no escribir contraseñas en texto claro (y hacer que terminen en el historial de shell) es, por supuesto, cierta, me resulta difícil creer que existan sistemas operativos en los que cualquier usuario pueda ver la línea de comandos de cualquier otro de usuario . ¿Podría alguien darme un ejemplo (sistemas heredados incluidos)?
Creo ps
, top
etc. son la respuesta para UNIX.
command-line
operating-systems
4ae1e1
fuente
fuente
Respuestas:
Supongo que en los sistemas Unix / Linux el uso
lsof
podría exponer la interacción del usuario. La lógica es quelsof
muestra una lista de archivos abiertos en el sistema. Y quizás si uno está descomprimiendo un archivo enorme, entonces todavía estaría abierto el tiempo suficiente para que alguien lo note y luego observe la actividad. Diablos, sería bastante trivial escribir un script Bash y ejecutarlo cada minuto más o menos a través de un trabajo cron para recopilar un registro continuo de actividad de archivo abierto.Pero eso todavía me suena falso. Quiero decir
lsof
, expone potencialmente algo como las contraseñas MySQL en línea de esta manera. Pero no estoy al 100% en cuanto a si un usuario normal sinsudo
/ derechos de root podría ver lalsof
actividad de otros usuarios como ese.fuente
lsof
muestra archivos abiertos de otros usuarios y no necesita privilegios elevados (probado en el servidor de mi institución). Del mismo modo,ps
ytop
revelar las líneas de comando de otros usuarios.ps
,top
ylsof
no encontré ninguna mención de privilegio. También está esta pregunta: ¿Cómo hacer que un proceso sea invisible para otros usuarios? . Así que supongo que las líneas de comando son visibles para todos en los sistemas UNIX. Mmm, gran sorpresa.ttysnoop
y,conspy
sin embargo, no estoy seguro de si requieren o no privilegios de root.lsof
que permiten ver el parámetro de la línea de comando? con, por ejemplo,lsof -a +c0 /dev/null
puedo ver el nombre del comando largo pero no el parámetro pasado al comando. ¿Qué me perdí? :-)Unix permite "ps". Además, Unix comúnmente tiene un comando "w" que mostrará qué usuarios están ejecutando. "w" normalmente puede cortar comandos basados en el tamaño del terminal, pero eso puede ser anulado. (Una forma fácil puede ser simplemente usar un terminal más ancho).
Esto probablemente también afectará a múltiples sistemas similares a Unix (Linux, sistemas BSD, Solaris, etc.)
Creo que Microsoft Windows también lo mostraría en el Administrador de tareas. Bueno, tal vez eso sea menos común con Windows Vista y Control de cuentas de usuario, ya que puede ser necesario el Control de cuentas de usuario. Pero en el pasado en WinXP / Server2003 y anteriores, tales restricciones pueden haber sido más laxas. Hay una razón por la cual NET USE comenzó a admitir un asterisco y luego solicitó al usuario una contraseña. Con:
un usuario probablemente ni siquiera necesita estar en la misma computadora para ver un comando que se ejecuta. Por otro lado, sospecharía que varios de TaskList, TList y PSList (todos distribuidos libremente por Microsoft) probablemente también admitan la capacidad de ver lo que está sucediendo, independientemente de qué usuario se esté ejecutando. Al menos, usuarios con privilegios de administrador, que era más común en los sistemas operativos anteriores a Vista. (En Win9x, el estándar general era que todos los usuarios tenían habilidades de administrador). Tenga en cuenta que Info-Zip, que es la documentación que está citando, es bastante más antiguo que WinXP. De improviso creo que es más antiguo que Win95.
Con los sistemas multiusuario más antiguos, el secreto no era una gran preocupación. Poder ver lo que está haciendo la computadora, incluidos los comandos que otros usuarios estaban ejecutando, probablemente fue visto como una característica positiva, no una violación negativa en la seguridad. Quizás una pregunta más aplicable es: ¿Hay algún sistema operativo multiusuario que no sea compatible con los usuarios para poder ver qué comandos se ejecutan en la computadora?
El enfoque más seguro es nunca poner contraseñas confidenciales en una línea de comando. Otra opción puede ser poner contraseñas en un archivo y luego especificar ese archivo en la línea de comando. p.ej:
Al menos de esa manera, los permisos basados en la implementación del sistema de archivos probablemente ofrecerán cierta protección.
fuente
Algunas (y no creo) todas las formas de Linux para ver el comando
zip -PThat_Password ...
de otro usuario sin privilegios de root :cat /proc/24695/cmdline
si el PID es 24695 ...Nota: Sin espacios, pero es posible adivinar la contraseña.
grep -H -e "zip" /proc/[0-9]*/cmdline
bueno, si funciona
cat
, funciona todo lo demás basado en texto ...pgrep -a zip
la opción -a enumera la línea de comando completa, así como la ID del proceso. (no siempre disponible en la versión anterior [por ejemplo, <2008] depgrep
)y, por supuesto, la operación mencionada
ps -aux | grep zip
top -c -b -n 1 | grep zip
esa respuesta con algo comofuente
cat /proc/24695/cmdline
dar salida sin espacios ...en Unix / Linux y similares.
fuente