Vulnerabilidades de seguridad en el código
El software del sistema operativo, el software de aplicación o el firmware de un sistema integrado son componentes elementales de cualquier infraestructura digital. Sin embargo, la creciente aceleración y la presión de los plazos en los proyectos de digitalización llevan a menudo a descuidar aspectos imperativos de la seguridad de la información. Los requisitos de desarrollo de los programas informáticos suelen estar centrados en las funciones y hacen hincapié en los aspectos constructivos, de modo que la visión destructiva de las posibles vulnerabilidades de seguridad suele ser diametralmente opuesta a los objetivos reales de desarrollo: muchos programadores simplemente carecen también de una visión estructurada y afinada de la ciberseguridad.
En estas condiciones, los equipos de desarrollo tienen dificultades para revisar continuamente y asegurar de forma coherente la codificación de su software, como demuestran las numerosas vulnerabilidades que la corporación sin ánimo de lucro MITRE Corporation publica cada año en su lista CVE (Common Vulnerabilities and Exposures). Los parches de seguridad periódicos de incluso los fabricantes de software más conocidos son un indicador de la tarea de Sísifo que supone cerrar los fallos relevantes para la seguridad, por no hablar de identificarlos antes incluso de que se lancen al mercado.
Código fuente abierto: un caso especial
Cuando codifican software de desarrollo propio, a los programadores les gusta recurrir a bibliotecas y módulos de código abierto. Las ventajas prácticas son evidentes: al no tener que reinventar la rueda una y otra vez, se benefician de este impulso tecnológico, un desarrollo más rápido, menores costes de desarrollo, más transparencia gracias al código fuente abierto y una mayor interoperabilidad mediante estándares e interfaces abiertos.
También se suele decir que el código de fuente abierta ofrece un alto grado de seguridad porque el código ha sido validado por muchos usuarios y la inteligencia de enjambre de la comunidad de fuente abierta permite corregir errores con rapidez y eficacia.
En la práctica, esta confianza debe evaluarse ahora de forma diferenciada y crítica. El ejemplo más grave es la vulnerabilidad de seguridad de día cero Log4Shell en la muy utilizada biblioteca de registro Log4J para aplicaciones Java, que se descubrió en noviembre de 2021. Es posible que haya oído hablar del nivel de alerta roja emitido por la Oficina Federal Alemana de Seguridad de la Información (BSI) para Log4Shell. La biblioteca Log4J, distribuida como un cuasi-estándar de funcionamiento fiable a través de la Fundación Apache, se ha establecido en muchos sistemas desde 2013 - incluyendo conocidos servicios web como Amazon AWS.
La complejidad de estas bibliotecas bien desarrolladas y también mantenidas proporciona implícitamente potentes funcionalidades de las que un desarrollador importador a menudo no es consciente en su propio desarrollo nuevo combinado, pero que pueden ser explotadas por los atacantes.
Otro factor de inseguridad de los componentes de código abierto son los llamados ataques a la cadena de suministro, es decir, vulnerabilidades incorporadas intencionadamente por actores malintencionados que se hacen pasar por parte de la comunidad de código abierto y colaboran en el desarrollo del código. Una vulnerabilidad de este tipo es una forma extremadamente eficaz para que los hackers ataquen a un gran número de organizaciones de usuarios posteriores. No es de extrañar, entonces, que este vector de ataque esté creciendo rápidamente: un estudio de Sonatype diagnosticó un aumento del 650% al comparar 2020 y 2021.