A medida que el desarrollo de software avanza a lo largo del ciclo de vida de la cadena de suministro de software, la etapa del paquete emerge como una coyuntura fundamental, que convierte el código fuente en artefactos ejecutables preparados para su distribución. Sin embargo, esta etapa crítica no es inmune a las vulnerabilidades, lo que la convierte en un objetivo principal para los actores maliciosos que buscan socavar la integridad y la seguridad del software. Esta publicación de blog profundiza en las amenazas predominantes que pueden surgir durante esta fase y describe estrategias efectivas para mitigarlas. Este contenido sirve como continuación de nuestra serie de blogs que exploran software supply chain security a través del SDLC.
La etapa del paquete en el ciclo de vida del desarrollo de software
La etapa de paquete del ciclo de vida de la cadena de suministro de software abarca el proceso de empaquetar y preparar el software para su distribución a los usuarios. Esta etapa implica la creación de paquetes de instalación, la gestión de dependencias y la generación de metadatos para el software.
Las amenazas a la integridad de la compilación son vulnerabilidades que podrían permitir a los atacantes introducir cambios no autorizados en el software durante el proceso de empaquetado. Estas amenazas se pueden introducir a través de varios métodos, como comprometer el registro de paquetes, explotar vulnerabilidades en las herramientas de empaquetado o manipular dependencias de terceros.
La dependencia total de componentes de código abierto en el software moderno hizo que esta etapa fuera la más frecuente.SCA Objetivo. Introducir malware oculto en un componente popular de código abierto es el sueño de muchos ciberdelincuentes. Por eso, más de Se encontraron 245,000 paquetes maliciosos durante 2023.
Ejemplos de Software Supply Chain Security Amenazas en la etapa del paquete
Usar paquete comprometido
Esto se refiere al acto de implementar o utilizar un paquete de software que ha sido manipulado o modificado por un adversario.
Esto puede suceder después de que el paquete haya abandonado el registro oficial de paquetes, ya sea mediante acceso directo al sistema del usuario o mediante tácticas de ingeniería social que engañan al usuario para que descargue o instale un paquete malicioso. Un ejemplo de este vector fue el Navegador Typosquatting Ataque.
Un atacante, que buscaba comprometer los sistemas Linux y Mac, se infiltró en el proceso de desarrollo de una popular biblioteca Node.js llamada Browserify. El atacante deslizó código malicioso en el código fuente del proyecto, con la intención de distribuirlo a través del registro de paquetes NPM. Una vez que el paquete Browserify contaminado se cargaba en NPM, los desarrolladores desprevenidos lo descargaban e instalaban, creyendo que era la versión legítima. El código malicioso, incrustado en el paquete, se ejecutaría silenciosamente, comprometiendo la integridad de los sistemas que infectaba. Esto podría provocar robo de datos, inestabilidad del sistema o incluso acceso remoto al atacante.
Registro de paquetes comprometidos
Un registro de paquetes comprometido es un repositorio de software que ha sido infiltrado por un adversario que obtuvo acceso no autorizado a la interfaz administrativa o la infraestructura del registro.
Esto permite al adversario modificar o reemplazar paquetes de software legítimos por otros maliciosos, que luego pueden distribuirse a usuarios instalados desprevenidos. Un ejemplo de este tipo de amenaza fue el Ataque a los espejos de paquetes: Un investigador, con la intención de promover el software de código abierto, comprometió varios registros de paquetes populares, incluidos Maven Central, NPM y RubyGems. Al obtener acceso a estos registros, el investigador pudo crear espejos y réplicas de los repositorios originales, lo que proporcionó una alternativa conveniente para que los desarrolladores descargaran paquetes.
Sin embargo, estos espejos albergaban un propósito siniestro. Los espejos comprometidos sirvieron como conductos para que el investigador distribuyera paquetes maliciosos. Estos paquetes reemplazaron a los legítimos, que no fueron detectados por los registros primarios, y los desarrolladores desprevenidos los descargaron e instalaron sin saberlo. Una vez instalados, estos paquetes maliciosos liberaron su carga útil, ejecutando código arbitrario, robando datos confidenciales o interrumpiendo operaciones.
Cargar paquete modificado
Un adversario carga un paquete modificado en un repositorio o canal de distribución que contiene código malicioso o cargas útiles. Esto se puede hacer modificando el código fuente, el empaquetado o los metadatos del paquete.
Una de las más notorias de este tipo de amenazas fue la Ataque CodeCov en 2021. Un atacante que busca comprometer proyectos de software que utilizan CodeCov, un popular sistema de integración y entrega continua (CI/CD) utilizaba credenciales filtradas para obtener acceso no autorizado al bucket de Google Cloud Storage (GCS) de un proyecto. Una vez que el atacante accedía al bucket de GCS, subía un artefacto malicioso, una versión modificada del paquete CodeCov, que se distribuía a los usuarios a través del servicio CodeCov. Desarrolladores desprevenidos, aprovechando la función de actualizaciones automáticas, descargaban e instalaban el paquete malicioso, creyendo que era legítimo. Una vez instalado, el código malicioso se ejecutaba silenciosamente, comprometiendo la integridad de los sistemas infectados. Esto podía provocar el robo de datos, la inestabilidad del sistema o incluso el acceso remoto del atacante.
Los ataques a los registros de paquetes son tan comunes que algunos patrones de ataque recibieron un nombre:
In Typosquatting, el mal actor carga en el registro varios paquetes maliciosos con ligeros errores tipográficos o nombres similares a los legítimos y populares, con la esperanza de que los desarrolladores escriban mal el nombre del paquete deseado con uno malicioso. A menudo, el paquete malicioso se hace pasar por el legítimo y pasa desapercibido, lo que aumenta la probabilidad de ser atacado por la observación de estrellas.
Confusión de dependencia aprovecha la forma en que algunos administradores de paquetes resuelven los paquetes solicitados desde múltiples registros. Cuando una organización utiliza componentes internos publicados en un registro interno, un atacante que conozca el hecho puede publicar un componente malicioso con el mismo nombre en un registro público. Si el nombre utilizado para el componente interno no tiene alcance, algunos administradores de paquetes buscarán el componente malicioso en lugar del interno.
Con Paquetes de Troya, el ciberdelincuente disfraza el malware entre códigos válidos y útiles. Esto podría ser utilizado por el autor real o por un colaborador que se ofrezca a mantener el paquete. Esto también se conoce como Secuestro de paquetes. Los atacantes utilizaron muchas técnicas para secuestrar un paquete existente, como Adquisición de dominio donde el atacante tomó un dominio caducado abandonado y recreó el antiguo correo electrónico del mantenedor y realizó la recuperación de la contraseña para hacerse cargo de la cuenta del mantenedor.
Observaciones finales
A medida que las organizaciones adoptan cada vez más metodologías de desarrollo de software que priorizan la automatización y la entrega continua, la importancia de asegurar la etapa del paquete de software nunca ha sido más primordial. Al implementar medidas de seguridad sólidas durante esta fase crítica, las organizaciones pueden mitigar sustancialmente el riesgo de sucumbir a ataques maliciosos que pueden comprometer la integridad y seguridad de su software.
Las estrategias delineadas en esta publicación de blog, junto con los ejemplos proporcionados, sirven como claro recordatorio de que la etapa del paquete representa un punto vulnerable dentro de la cadena de suministro de software. Las organizaciones deben prestar atención a estas amenazas e implementar las medidas de seguridad necesarias para proteger su software de ataques. Al hacerlo, pueden garantizar la integridad, seguridad y confiabilidad de su software para sus usuarios y clientes.
Únase a nuestro viaje hacia un ecosistema de software seguro
No pierdas la oportunidad de estar un paso por delante en el ámbito de software supply chain security. Suscríbase a nuestro blog hoy y sea uno de los primeros en recibir nuestros conocimientos más recientes, garantizando que su organización siga siendo resiliente y segura frente a las amenazas en evolución. Juntos, podemos construir un ecosistema de software más sólido y seguro para todos.
Recuerda, software supply chain security Es un viaje continuo, no un destino. Al evaluar y adaptar continuamente las prácticas de seguridad para abordar las amenazas emergentes, las organizaciones pueden salvaguardar su cadena de suministro de software y ofrecer software confiable a sus usuarios.
Vea nuestra demostración en vídeo





