¿Es útil el hashing de una DLL para protegerse del secuestro de DLL?

1

Quiero asegurarme de que las bibliotecas de enlaces dinámicos utilizadas por mi aplicación no puedan ser reemplazadas por otras bibliotecas del mismo nombre para inyectar código malicioso. Por lo tanto, pensé en crear una huella digital de las DLL antes de lanzar nuevas versiones de aplicaciones.

La aplicación validaría la huella dactilar antes de que se cargue la DLL. ¿Proporcionaría esto una buena protección en el escenario anterior?

Con respecto a la función hash: no estoy seguro de si usar MD5 o uno de los algoritmos SHA. Sé que MD5 no es seguro para los ataques de colisión, pero es seguro contra los ataques de preimagen.

¿Contra qué ataques debo proteger las bibliotecas (usando huellas digitales)?

    
pregunta WMEZ 23.04.2014 - 08:47
fuente

1 respuesta

2

Todo se reduce a cuán comprometido está su sistema. Si el atacante solo puede colocar / reemplazar sus archivos DLL por otros maliciosos: Probablemente algún tipo de firma digital ayudará a filtrar nuestros archivos DLL no confiables.

Si el atacante controla el sistema lo suficiente para reemplazar no solo los archivos DLL, sino también su ejecutable: él puede modificar el código que verifica la firma, derrotando su protección.

En cuanto a los nombres fuertes de los ensamblajes .net: el nombre seguro no es para seguridad y no debe ser Considerado como una protección. Solo puede ayudar a asegurar que la asamblea fuera emitida por un Vendedor, y no modificado desde entonces. El ensamblaje se puede modificar y volver a firmar en cualquier punto con diferente clave privada (por supuesto, el proveedor cambiará en este caso). Pero asamblea seguirá siendo válido y firmado.

En cuanto al algoritmo de hash, es probable que esté bien usar SHA256, Microsoft lo usa cuando computa Hash para firma digital de ensamblajes.

    
respondido por el Alexander 23.04.2014 - 10:39
fuente

Lea otras preguntas en las etiquetas