¿Cuál sería una forma segura de manejar las solicitudes de contraseña en el shell?

4

Tengo un script que un miembro de nuestro equipo L1 ejecutará en un servidor linux (ssh'ed in - non root) que ingresará su contraseña y la pasará a kinit a través de un script de expectativa incorporado (que finalmente habla con nuestros KDC de Kerberos de autenticación) para ejecutar un cheque comercial listo.

Una consideración fue el uso de getpass2 python, pero no está disponible de forma interna. Existe una posible solución a través de un script de shell utilizando:

read -s -p "Password for $USER: " PASS

He leído en este blog . El autor afirma

  

Entre la solicitud y la ejecución del shell, la contraseña está en texto sin cifrar   .

¿Hay pasos a seguir para mitigar esto?

Me doy cuenta de que la contraseña también está en texto sin cifrar en la RAM, pero por ahora es un problema aparte.

    
pregunta james6125 04.04.2018 - 19:21
fuente

3 respuestas

3

Usted asume (al igual que muchas personas que deberían saberlo mejor) que cuando ingresa una contraseña, hay algo de magia mágica que protege su texto claro en el programa. Si puede asegurar la integridad del programa que lee la contraseña y no persiste ni exporta deliberadamente el texto en claro, no podrá acceder a otros programas.

Un script es un poco más fácil de comprometer que un programa binario que asume que el atacante tiene acceso de nivel de raíz al sistema de archivos, pero en ese momento ya está prácticamente terminado el juego. Existe un argumento de que si el programa se intercambia fuera de la memoria, entonces el texto no cifrado persistirá en el espacio de intercambio, pero ese es casi el mismo problema que la protección de la RAM (de todos modos, no debería utilizar el almacenamiento remoto para el intercambio). / p>

Actualizar La respuesta de Sergey parece abordar lo que haces con la contraseña después de haber capturado el texto claro (aunque no es muy claro). Pero si está utilizando un shell incorporado para insertar la contraseña en el programa de destino, no aparecerá en la salida de 'ps'

    
respondido por el symcbean 05.04.2018 - 00:47
fuente
0

kinit tiene su propia facilidad para la entrada de contraseña. Por ejemplo ...

$ kinit user@realm Enter password for user@realm:

Sugeriría el método de entrada de herramientas que ya oculta la entrada del terminal

    
respondido por el jas- 05.04.2018 - 12:19
fuente
0

Cada comando no incorporado en los scripts aparece como un proceso separado, por lo que del ejemplo de blog cited PASS (que se debe citar, por cierto, para evitar la división de palabras) aparecerá en la salida de ps .

Vea también enlace  y enlace para conocer las posibles formas de resolverlo

También hay implicaciones de seguridad en la división de palabras: enlace

    
respondido por el Sergiy Kolodyazhnyy 05.04.2018 - 03:36
fuente

Lea otras preguntas en las etiquetas