Detectar la contraseña de texto sin formato escrita en el directorio / tmp

3

Recientemente estuve leyendo sobre Ansible y la forma en que administra las contraseñas de sudo. Más específicamente:

  

Cuando se utiliza Become_user para un usuario que no sea root, los argumentos del módulo se escriben brevemente en un archivo temporal aleatorio en / tmp. Estos se eliminan inmediatamente después de ejecutar el comando. Esto solo ocurre cuando se cambian los privilegios de un usuario como "bob" a "timmy", no cuando se va de "bob" a "root", o al iniciar sesión directamente como "bob" o "root". Si le preocupa que estos datos se puedan leer brevemente (no se pueden escribir), evite transferir las contraseñas no cifradas con el conjunto de usuario. En otros casos, / tmp no se usa y esto no entra en juego. Ansible también se encarga de no registrar los parámetros de contraseña.

¿No es esto un riesgo de seguridad? ¿Podría un usuario no privilegiado escribir una secuencia de comandos de vigilancia que rastree el contenido de los archivos recién creados en el directorio / tmp?

    
pregunta bergercookie 09.04.2017 - 00:21
fuente

2 respuestas

3

Un posible atacante también puede usar el mecanismo inotify del kernel de Linux para rastrear los eventos del sistema de archivos en el directorio /tmp .

Si se crea un nuevo archivo, cree también un vínculo físico a este archivo. El resultado será que el archivo seguirá existiendo en el disco duro, incluso después de que el software atacado piense que ya se haya eliminado.

Esta es una solución orientada a eventos, que ocurre en el lugar después de la creación del archivo, es invisible para el software atacado, y obtener el evento y crear el enlace solo requiere 2 llamadas al kernel. Es más rápido que cualquier cosa que pueda hacer el software atacado.

El código requerido es de alrededor de 30 líneas en C. La mayoría de los rootkits probablemente contienen esta función, pero en un entorno no endurecido no necesitas root para eso.

    
respondido por el peterh 09.04.2017 - 03:26
fuente
1

Sí, si supiera el nombre del archivo que se está escribiendo, podría escribir un simple bucle para intentar leer rápidamente el archivo. Si el nombre del archivo es aleatorio, entonces necesitaría averiguar el algoritmo que usa el software para obtener el nombre del archivo o intentar hacer estadísticas rápidamente y luego copiar o leer archivos en / tmp.

Si pudiera forzar al software a realizar esta operación en sucesión, entonces se reduce a una condición de carrera entre forzar la acción y leer el archivo. Esto aumentaría la probabilidad de éxito.

    
respondido por el Joshua Gimer 09.04.2017 - 00:30
fuente

Lea otras preguntas en las etiquetas