Top 25 errores más peligrosos en el desarrollo de software

CWE (Common Weakness Enumeration) y la SANS han publicado un estudio donde enumeran los 25 errores de programación mas peligrosos en el desarrollo de software. En la lista se muestran errores que muchos programadores toman como inofensivos pues desconocen que pueden permitir a «atacantes» tener acceso a información privada.

El top 25 errores más peligrosos en el software es:

  • No filtrar propiamente las sentencias SQL (Inyección SQL) (Puntaje 93.8) (ID CWE-89)
  • No filtrar las llamadas al sistema de forma adecuada (Inyección en comandos del SO) (Puntaje 83.3) (ID CWE-78)
  • No chequear el tamaño de la memoria reservada a la hora de copiar datos (desbordamiento de memoria) (Puntaje 79.0) (ID CWE-120)
  • No detectar la inyección de scripting (XSS) (Puntaje 77.7) (ID CWE-79)
  • No autentificar en llamada a funciones críticas (Puntaje 76.9) (ID CWE-306)
  • No autorización (Puntaje 76.8) (ID CWE-862)
  • Usar credenciales estáticos en el código (Puntaje 75.0) (ID CWE-798)
  • No cifrado de datos sensibles (Puntaje 75.0) (ID CWE-311)
  • No restringir la subida de ficheros a ciertos formatos (Puntaje 74.0) (ID CWE-434)
  • Confiar en una fuente de datos no confiable a la hora de tomar una decisión de seguridad (Puntaje 73.8) (ID CWE-807)
  • Ejecución con privilegios innecesarios (Puntaje 73.1) (ID CWE-250)
  • Cross-Site Request Forgery (CSRF) (Puntaje 70.1) (ID CWE-352)
  • No limitar el acceso al sistema de ficheros a directorios restringidos (Puntaje 69.3) (ID CWE-22)
  • Descarga de código sin chequear la integridad del mismo (Puntaje 68.5) (ID CWE-494)
  • Autorización incorrecta (Puntaje 67.8) (ID CWE-863)
  • Permitir la integración de funcionalidades de fuentes no confiables (Puntaje 66.0) (ID CWE-829)
  • Asignación de permisos incorrecta a recursos críticos (Puntaje 65.5) (ID CWE-732)
  • Uso de funciones potencialmente peligrosas (Puntaje 64.6) (ID CWE-676)
  • User un algoritmo de cifrado que ha sido comprometido o roto (Puntaje 64.1) (ID CWE-327)
  • Cálculo incorrecto del tamaño de memoria (Puntaje 62.4) (ID CWE-131)
  • No restricción a un número de intentos fallidos de acceso (Puntaje 61.5) (ID CWE-307)
  • Redirección URL a sitios no confiables (‘Open Redirect’) (Puntaje 61.1) (ID CWE-601)
  • Formato de cadena no controlado (Puntaje 61.0) (ID CWE-134)
  • Desbordamiento de enteros (Puntaje 60.3) (ID CWE-190)
  • Aplicar una función hash sin usar la sal (Puntaje 59.9) (ID CWE-759)

Si cometes por lo menos uno de estos errores en el desarrollo de tus aplicaciones, no dudes en hacer click en su respectivo ID, donde encontraras toda la información necesaria para entender mejor el problema y corregirlo. Puedes descargar todo el informe en PDF o verla online en la pagina oficial de la Common Weakness Enumeration.

Me parece interesante le hecho de que el error más peligroso (inyección SQL) sea también el error más común en el desarrollo web. Para evitarlo básicamente debe validarse que las variables no incluyan caracteres que puedan formar parte de una cadena SQL.

Fuente: DragonJar