Si el rango posible del contenido del archivo era lo suficientemente pequeño (ya sea porque el archivo es muy corto, porque el atacante conoce todas las partes del archivo excepto por una parte muy corta, o porque el atacante sabe que el contenido del archivo es uno de un conjunto limitado de cosas, entonces el atacante puede realizar una búsqueda de fuerza bruta de los posibles contenidos del archivo y verificar el resumen de hash de cada resultado para ver si coincide con el nombre del archivo.
Tenga en cuenta que esta vulnerabilidad no tiene nada que ver con el hecho de que MD5 está criptográficamente roto y en desuso; Cualquier función hash sería vulnerable al mismo problema. Si desea evitar el riesgo, debe evitar el cifrado de archivos pequeños / predecibles, o no debe dejar que el resumen de hash de texto sin formato de cada archivo se coloque en el mismo texto (el nombre del archivo).
Otro ataque que podría ser posible es si el atacante conoce al menos algunos de los archivos que ha almacenado y puede generar un nuevo archivo para que lo almacene. Debido a que el MD5 está dañado, el atacante podría crear un archivo malicioso que tenga el mismo MD5 que el archivo que le interesa, y luego, cuando almacene el archivo provisto por el atacante, sobrescribirá su archivo original porque tendría el mismo nombre. El uso del cifrado es irrelevante aquí (excepto en la medida en que hace que sea más difícil para el atacante saber qué archivos ha almacenado); esto es simplemente una consecuencia de la desduplicación de archivos utilizando un algoritmo para el que sabemos cómo crear colisiones y pre-imágenes (parciales). Para evitar este riesgo, no permita que un atacante potencial sepa qué archivos almacenó, no almacene los archivos que suministra un atacante potencial y / o pase a utilizar un algoritmo hash seguro como un miembro de las familias SHA2 o SHA3.