¿Cómo se pueden evitar las contraseñas y otros datos confidenciales enviados y recibidos desde páginas web ASP.NET en archivos de volcado IIS/ASP.NET?¿Cómo se puede evitar que las contraseñas y otra información confidencial aparezcan en un volcado de ASP.NET?
Pasos para reproducir
- mediante Visual Studio 2010, cree una aplicación de 3 intranet ASP.NET MVC.
- Configúrelo para usar IIS 7.5.
- fuego para arriba y para registrar una cuenta (dicen bob123 como el usuario y Pa $$ w0rd como la contraseña. Asumo que se crea la base de datos SQL Express y el sitio es totalmente funcional.
- Usando el administrador de tareas, clic derecho en el proceso de w3wp y crear un vertedero.
- Abrir el vertedero en un editor capaz de mostrar su contenido como hexagonal, como SlickEdit.
- Búsqueda de "Pa $$ 0RD" y "Pa% 24% 24w0Rd "en el volcado hexadecimal. Debería poder encontrar varias copias almacenadas como ASCII, Unicode o codificadas.
Tenga en cuenta que no importa si usa HTTPS porque solo encripta la comunicación. ASP.NET almacena esos datos en forma clara en la memoria o el disco.
El problema
La sabiduría popular lo tiene para encriptar los datos sensibles y no para almacenarlo en la clara. Sin embargo, un empleado puede recibir un volcado de una aplicación IIS/ASP.NET y descubrir contraseñas y otros datos confidenciales de los usuarios porque esta información no está encriptada, ni ASP.NET borra la memoria después del uso.
Esto los pone en riesgo simplemente porque tienen acceso a él. Dump a veces se comparte con socios (como Microsoft) para ayudarlos a diagnosticar problemas en su código. Es una parte necesaria para diagnosticar algunos problemas realmente complejos en la aplicación.
cosas miré al
- Uso SecureString para las contraseñas y otros datos sensibles. Sin embargo, el proveedor de Membresía ASP.NET, junto con otros marcos como WCF, a menudo acepta contraseñas como System.String, lo que significa que esas copias aún estarán en el volcado.
- Miró para ver si hay algo en el marco para borrar una copia de System.String cuando ya no se usa. No pude encontrar nada.
- Se investigó si se puede poner a cero la memoria utilizada para solicitudes y respuestas una vez que IIS finaliza, pero no pude encontrar nada.
- Investigué si se pueden encriptar los archivos que IIS recibe (como HttpPostFile) para que no se almacenen en el claro. Podemos recibir documentos que son extremadamente confidenciales y cada paso se realiza para encriptarlos y protegerlos en el servidor. Sin embargo, alguien puede extraerlos claramente de un volcado de IIS.
Lo que esperaba es decirle a IIS/ASP.NET que una solicitud/respuesta específica contiene datos confidenciales y que IIS/ASP.NET borrará la memoria cuando haya terminado de usarla.
+1 Pregunta muy interesante. No estaba al tanto de esto hasta ahora. Una pregunta que quería hacerte es: ¿Has hashing las contraseñas cuando utilizas membresías o las guardas en texto plano? – Seany84
Hashing con dos sales. Pero eso no importa porque la contraseña es visible en texto claro en la solicitud a ASP.NET y, por lo tanto, en el volcado. Además, esa copia que el proveedor de membresía recibe es visible a la vista. Y luego también hay una copia de su contraseña hash. – bloudraak
Si no es un administrador, no puede obtener un volcado en el paso 4. Si no tiene volcado, ¿cómo puede realizar los siguientes pasos? Si no puede realizar los siguientes pasos, ¿de dónde proviene su preocupación? –