Un investigador de seguridad dice que una puerta trasera disfrazada de un paquete legítimo de lenguaje de programación GO utilizado por miles de organizaciones se dejó sin ser detectado durante años.
Kirill Boychenko, analista de inteligencia de amenazas de Socket Security, escribió hoy en su blog hoy sobre lo que parece ser un ataque de la cadena de suministro en el módulo de la base de datos BOLTDB, que depende de más de 8,000 paquetes y organizaciones principales como Shopify y Heroku.
Boltdb, cuya URL legítima es github.com/boltdb/bolt, fue creada hace nueve años, pero fue declarada completa por el autor un año después y no se ha actualizado desde entonces.
El imitador malicioso utiliza el popular tipOsquatting técnica para tratar de engañar a los usuarios para que lo descarguen. Si un desarrollador confunde el paquete legítimo con el copycat (github.com/boltdb-go/bolt-diferencia sutil), terminarían teniendo una puerta trasera que permite la ejecución de código remoto (RCE) en su proyecto.
La versión maliciosa todavía se puede buscar en el proxy del módulo GO y se ha dejado sin ser detectado durante tres años, dice Boychenko, que envió una solicitud a Ir para su eliminación.
Afortunadamente, también parece no haber sido detectado por muchos mantenedores de proyectos, con solo dos importaciones de la versión trasera grabada, ambas por un solo proyecto de criptomonedas con solo siete seguidores.
Sin embargo, no hay forma de saber cuántas veces se ha descargado el paquete, ya que Go no rastrea la métrica. Sin embargo, mirando la página de GitHub de la versión dudosa, muestra cero estrellas o horquillas, y no se realizan solicitudes de extracción en tres años, lo que sugiere que ha volado en gran medida bajo el radar.
De todos modos, Boychenko dice que la forma en que el creador explotó el sistema de paquetes de GO destaca un defecto que requiere una mayor comprensión entre los desarrolladores.
El paquete original de BoltDB-go se publicó para Girub. Cuando se solicita por primera vez, el servicio de espejo GO del módulo almacena el paquete y lo pone a disposición indefinidamente.
El autor del proyecto malicioso luego modificó las etiquetas GIT del proyecto para señalar la versión legítima (BOLTDB) para que una revisión manual de BOLTDB-go no revelara ningún signo de juego sucio, todo mientras la versión maliciosa aún se estaba sirviendo a los desarrolladores despeinantes. .
«Este ataque es uno de los primeros casos documentados de un actor malicioso que explota el almacenamiento en caché indefinido de módulos del Module Module GO», dice Boychenko en su artículo. «Si bien no se han informado públicamente casos anteriores, este incidente destaca una necesidad crítica de crear conciencia sobre tácticas de persistencia similares en el futuro.
«Con módulos inmutables que ofrecen beneficios de seguridad y posibles vectores de abuso, los desarrolladores y los equipos de seguridad deben monitorear ataques que aprovechen las versiones de los módulos en caché para evadir la detección».
Los módulos inmutables de Go significan que los malos no pueden entrar en un paquete popular y modificar su código después de ser descargado, lo cual es una bendición para la seguridad del ecosistema y sustenta muchas de las características del equipo GO cita que ayudan a mitigar ataques de la cadena de suministro de software.
Sin embargo, la inmutabilidad de GO significa que una vez que se almacena una versión maliciosa como Boltdb-go, está allí para siempre. Sigue siendo servido para ir a los desarrolladores en su estado dañino.
«Para mitigar las amenazas de la cadena de suministro, los desarrolladores deben verificar la integridad del paquete antes de la instalación, analizar las dependencias para las anomalías y usar herramientas de seguridad que inspeccionan el código instalado en un nivel más profundo», agrega Boychenko.
«Asegurar que el ecosistema del módulo de GO permanezca resistente a tales ataques requiere una vigilancia continua, mecanismos de seguridad mejorados y una mejor conciencia de cómo los actores de amenaza explotan los canales de distribución de software».
Socket informó que BoltDB-go y un Bolt-DB similar, que no se consideró malicioso, para los desarrolladores de Go para la extracción permanente para que ninguno de los dos pueda ser mal utilizado en el futuro.
El registro preguntó el equipo de Go para hacer comentarios, pero no respondió de inmediato. ®