Ataques a la cadena de suministro - Amenazas en la distribución de software
Lectura de 2 min aprox.
Un compromiso de la cadena de suministro es una técnica de ataque en la que un atacante interviene en alguna etapa del desarrollo, la compilación o la distribución del software para inyectar código malicioso en software legítimo. Como abusa de la ruta de actualización confiable del software, resulta extremadamente difícil de detectar con las medidas de seguridad tradicionales. El incidente de la puerta trasera de xz Utils en 2024 puso de relieve la fragilidad de las estructuras de mantenimiento del código abierto y renovó la conciencia sobre la importancia del SBOM (Software Bill of Materials).
Lo que la verificación puede y no puede confirmar
Un mecanismo que registra y compara la huella de lo distribuido responde a si lo obtenido es igual a lo publicado. Lo que no puede responder es si lo publicado es en sí mismo legítimo. Cuando una versión que pasó por los procedimientos del lado del desarrollador y se publicó por el canal debido contiene código malicioso, la comparación coincide. Ahí está el motivo por el que este tipo de ataque encaja mal con la detección convencional: los rastros de la intrusión no quedan en el entorno del usuario, sino en el entorno de trabajo situado más arriba, que el usuario no puede ver. Después, la decisión de fijar una versión tiene también dos caras. Fijarla hace que no se produzcan sustituciones no previstas, pero al mismo tiempo detiene la incorporación de las correcciones. Si pasa el tiempo con la versión fijada, resulta fácil acabar usando una versión en la que permanece un defecto ya publicado. Ni fijar ni actualizar es la opción segura; la elección se convierte en una cuestión de dónde situar el esfuerzo de comprobación. El tercer punto es la extensión de lo abarcado. Al elegir las piezas que se van a incorporar, lo elegido es solo el conjunto cuyos nombres se escribieron directamente, mientras que lo que realmente entra es el conjunto completo que incluye las piezas que aquellas necesitan. A medida que crece el número, crece también la proporción de piezas cuyos nombres nunca se han visto. Por eso, abarcar la extensión no consiste en confeccionar una lista de lo elegido, sino en contar el conjunto completo, incluido todo lo que entra en cadena a partir de ahí. Respecto a la parte que no se abarca, tampoco hay manera de saber si ha habido una actualización.
Flujo de un ataque a la cadena de suministro
Antecedentes históricos
El compromiso de la cadena de suministro atrajo la atención mundial con el incidente de SolarWinds de 2020. Se implantó una puerta trasera en el proceso de compilación de la herramienta de gestión de TI Orion, afectando a más de 18.000 organizaciones, incluidas agencias del gobierno de EE. UU. Con incidentes como el ataque a Kaseya VSA de 2021 y la puerta trasera de xz Utils de 2024, los ataques dirigidos a las cadenas de suministro se vuelven más sofisticados año tras año. Los informes de vulnerabilidades relacionadas con la cadena de suministro también se disparan en la base de datos CVE.
Medidas defensivas
Crear y gestionar un SBOM (Software Bill of Materials) es la base de la defensa. Conozca qué bibliotecas de código abierto utiliza y sus versiones, y supervise de forma continua la información sobre vulnerabilidades. Confirme (commit) los lockfiles de las dependencias (package-lock.json, Gemfile.lock) para evitar cambios de versión no deseados. En la canalización de compilación, introduzca mecanismos que detecten la manipulación de los artefactos mediante la verificación de firmas y la comprobación de hash. También es importante prestar especial atención a las adiciones y cambios de dependencias durante la revisión de código. Proteja los sistemas de CI/CD y las cuentas del registro de paquetes con contraseñas aleatorias fuertes para evitar el acceso no autorizado al proceso de compilación.
¿Te resultó útil este artículo?