Durante mucho tiempo la calidad del software ha tomado una importancia cada vez mayor. Pareciera que todos los esfuerzos van en la dirección del proceso de desarrollo, como si la clave para solucionar todos los problemas estuvieran en el proceso. Habitualmente la práctica y lo que vemos en la industria se encarga de demostrarnos lo contrario, y es así como vemos a gigantes del software creando parches, o siendo atacados por problemas de seguridad en su software.
Cuando Microsoft, IBM, HP y Google, reportan problemas de seguridad o parches críticos para solucionar problemas graves, nadie pone en duda ni siquiera por un minuto que estas compañías no tienen implementado un prolijo y super poderoso proceso de desarrollo de software…y como si fuera poco, un staff de desarrolladores de elite. Y entonces?, acaso un buen proceso de desarrollo y desarrolladores talentosos no es suficiente?…al parecer no.
Coverity Scan: 2010 Open Source Integrity Report
El último reporte de Integridad del Open Source de la compañía Coverity, al parecer demuestra que hasta los mas grandes se ven involucrados en la construcción de software defectuoso con mas 359 defectos de los cuales 88 son de alto riesgo. Hablamos de involucrados, porque Androide es open-source…y aquí aparece la cara no tan amable del open-source cuando buscamos responsabilidades. Android esta basado en Linux, con cientos de contribuidores, mas los del proyecto Android de Google y a eso le sumamos otros cuantos cientos de la misma comunidad de Android y uno que otro OEM. Es decir que en este caso no solo Google crea software defectuoso si no que cualquiera lo hace.
En los últimos 3 años el análisis de proyectos open-source demuestra que los defectos se repiten una y otra vez, siendo los mas comunes errores reportados por iniciativas y/o organizaciones tales como OWASP, SANS, CWE y CVE.
OWASP Top 10
El OWASP Top 10, es un ranking de los 10 riesgos mas comunes en aplicaciones Web. Obviamente detrás de cada uno de esos riesgos existe una (ó mas) vulnerabilidad, es decir errores introducidos por un desarrollador. Los errores reportados por OWASP son:
- A1: Injection
- A2: Cross-Site Scripting (XSS)
- A3: Broken Authentication and Session Management
- A4: Insecure Direct Object References
- A5: Cross-Site Request Forgery (CSRF)
- A6: Security Misconfiguration
- A7: Insecure Cryptographic Storage
- A8: Failure to Restrict URL Access
- A9: Insufficient Transport Layer Protection
- A10: Unvalidated Redirects and Forwards
SANS/CWE Top 25
El SANS Top 25, también es un ranking pero esta vez de los 25 errores (de programación) mas peligrosos de un software. Los que comúnmente son fáciles de encontrar y de explotar. Los errores reportados por SANS/CWE son:
- Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)
- Improper Neutralization of Special Elements used in an SQL Command (‘SQL Injection’)
- Buffer Copy without Checking Size of Input (‘Classic Buffer Overflow’)
- Cross-Site Request Forgery (CSRF)
- Improper Access Control (Authorization)
- Reliance on Untrusted Inputs in a Security Decision
- Improper Limitation of a Pathname to a Restricted Directory (‘Path Traversal’)
- Unrestricted Upload of File with Dangerous Type
- Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’)
- Missing Encryption of Sensitive Data
- Use of Hard-coded Credentials
- Buffer Access with Incorrect Length Value
- Improper Control of Filename for Include/Require Statement in PHP Program (‘PHP File Inclusion’)
- Improper Validation of Array Index
- Improper Check for Unusual or Exceptional Conditions
- Information Exposure Through an Error Message
- Integer Overflow or Wraparound
- Incorrect Calculation of Buffer Size
- Missing Authentication for Critical Function
- Download of Code Without Integrity Check
- Incorrect Permission Assignment for Critical Resource
- Allocation of Resources Without Limits or Throttling
- URL Redirection to Untrusted Site (‘Open Redirect’)
- Use of a Broken or Risky Cryptographic Algorithm
- Race Condition
Errores como: “NULL Pointer Dereference” y “Resource Leak” se repiten una y otra vez en los proyectos open-source y son la causa raiz de muchos problemas de integridad y seguridad presentes en la industria. Ambos defectos son reportados y documentados por OWASP Top 10, como por SANS/CWE Top 25.
La CWE (de manera independiente a SANS) por su parte documenta defectos que van mas allá de la seguridad del software, e incluyen defectos que ponen en riesgo la integridad del mismo sin la connotación de seguridad, pero igualmente graves.
La causa raíz de la mayoría de los problemas de seguridad e integridad se debe a alguno de estos errores o riesgos (como le llaman estos reportes) y no a “innovaciones” por parte de los desarrolladores. Que sería –aunque cueste aceptarlo- el mejor de los escenarios.
Gracias a soluciones existentes en el mercado, el desafío de sortear la incertidumbre de los defectos que ponen en riesgo la integridad y seguridad del software pasan a una gestión efectiva de defectos y Remediación preventiva de vulnerabilidades.
Carlos Laborda – Juan Carlos Herrera