¿Puede Snyk detectar algoritmos criptográficos débiles? Adiós, MD5
25 de febrero de 2025
0 minutos de lecturaUsar criptografía sólida es esencial para proteger los datos y la seguridad de las aplicaciones, por ejemplo, para tareas como aplicar hash a las contraseñas (aunque, técnicamente, esto no es criptografía clásica con fines de cifrado). Sin embargo, es posible que todavía haya código heredado en producción que use algoritmos criptográficos débiles y obsoletos que no se detectaron. ¿Cómo puede ayudarte Snyk Code a encontrar estas aplicaciones vulnerables?
Los peligros de los algoritmos criptográficos débiles
Los algoritmos débiles y obsoletos, ya sean de cifrado o de hash, representan graves riesgos de seguridad y pueden exponer información confidencial a los atacantes. Confiar en implementaciones inadecuadas da una falsa sensación de seguridad y deja los sistemas vulnerables. Es esencial comprender las limitaciones de los algoritmos antiguos y adoptar prácticas criptográficas modernas y seguras.
Varios algoritmos criptográficos se consideran actualmente inseguros y deben evitarse. MD5, por ejemplo, está criptográficamente roto y no es apto para ninguna aplicación de seguridad, sobre todo para aplicar hash a contraseñas. Como es fácil encontrar colisiones, distintas entradas pueden producir el mismo valor hash. Esto permite que los atacantes averigüen la contraseña original o creen una falsa que coincida con el hash almacenado. Otros ejemplos de algoritmos débiles son DES y RC4, que tienen vulnerabilidades conocidas y ya no deben usarse.
Algoritmo MD5 débil en Java
Considera la siguiente aplicación Java, que usa MD5 para aplicar hash a las contraseñas de los usuarios:
Nota: Consulta el código fuente completo en GitHub.
Probablemente sabes que no debes usar MD5 para aplicar hash a las contraseñas. Pero ¿qué pasa cuando tienes que mantener muchas aplicaciones y una gran cantidad de repositorios de código, y necesitas revisar rápidamente cientos de miles de líneas de código?
Si conectas Snyk a tus repositorios de código (o lo integras de cualquier otra forma), puede analizar de manera rápida y sencilla el código vulnerable, ya sea que esté latente en una de tus aplicaciones heredadas o que se haya generado con errores mediante GenAI y otros asistentes de código con IA.
Snyk detecta el algoritmo MD5 débil y señala la ruta de llamada de origen a destino en tu código:

¿Cómo corregimos el algoritmo MD5 débil en Java?
Snyk enriquece los hallazgos de seguridad y, además de detectar el código vulnerable, también ofrece un análisis de las correcciones. En el siguiente ejemplo se muestra cómo se corrigió la API MessageDigest en un proyecto de código abierto (en este caso, el registro de seguridad de OWASP) y cómo se reemplazó el algoritmo hash obsoleto SHA-1 por una versión más actualizada: SHA-256:

Snyk también ofrece prácticas recomendadas para usar algoritmos sólidos en el hash y la criptografía, y explica los riesgos de almacenar información confidencial en texto sin formato.
Recomendaciones y prácticas recomendadas para la seguridad de los algoritmos
Se recomienda elegir los algoritmos adecuados para cada tarea. Si necesitas aplicar hash a contraseñas, debes elegir un algoritmo criptográfico seguro que proteja contra ataques de fuerza bruta y ofrezca un rendimiento adecuado para aplicaciones del mundo real. Bcrypt es uno de los principales ejemplos y lleva décadas siendo el estándar de facto de la industria. Otros ejemplos son PBKDF2 y el más reciente Argon2.
Asegúrate de consultar las prácticas recomendadas de seguridad criptográfica, como los recursos de OWASP.
Por último, empieza a usar Snyk (¡es gratis!) y suma puntos de seguridad al encontrar y detectar código vulnerable, dependencias obsoletas, criptografía débil y otros problemas de seguridad.
Herramienta gratuita en línea para revisar código
Protege tu código antes de tu próximo commit.



