Wiz detecta una vulnerabilidad crítica en el servicio AWS CodeBuild.

Investigadores de seguridad de la empresa Wiz descubrieron una vulnerabilidad crítica en el servicio AWS CodeBuild, que permitía tomar el control total de los repositorios de GitHub de Amazon y potencialmente comprometer los entornos en la nube de clientes en todo el mundo.
La vulnerabilidad, denominada CodeBreach, fue divulgada por Amazon en agosto del año pasado y corregida en septiembre, antes de que los atacantes pudieran utilizarla. Según los investigadores, esto evitó un ataque a la cadena de suministro que podría haber superado en escala al tristemente célebre incidente de SolarWinds.
"Esta vulnerabilidad comprometió una biblioteca clave utilizada en la consola de AWS —el sistema nervioso central de la nube—", declaró a The Register el investigador de Wiz Yuval Avrahami. Subrayó que si el ataque a SolarWinds dio a los atacantes acceso a redes corporativas, esta brecha podría haber permitido ejecutar código directamente en la interfaz mediante la cual los administradores gestionan toda su infraestructura.
La causa de la vulnerabilidad resultó ser sorprendentemente simple: faltaban dos caracteres en los filtros de webhook. CodeBuild es un servicio administrado de integración continua de Amazon, que suele conectarse a repositorios de GitHub. Para protegerse de solicitudes de extracción no confiables se usan filtros especiales, y uno de ellos —ACTOR_ID— permite crear una lista de usuarios de GitHub aprobados a los que se les permite iniciar una compilación.
El problema era que la expresión regular para ese filtro no estaba "anclada": le faltaban los caracteres de inicio y fin de línea. Sin ellos, el sistema no requería una coincidencia exacta del identificador y solo buscaba una subcadena. Esto significaba que cualquier usuario de GitHub cuyo identificador contuviera el ID de un mantenedor aprobado podía eludir la protección.
Los investigadores de Wiz encontraron una forma de registrar el identificador necesario mediante la función GitHub Apps, automatizando la creación de doscientas solicitudes de registro de aplicaciones. Una de ellas tuvo éxito y permitió obtener el ID de mantenedor confiable del repositorio AWS SDK para JavaScript.
Luego prepararon una solicitud de extracción que parecía una corrección normal de un problema real. Sin embargo, en su interior había una carga útil: una dependencia de un paquete NPM diseñada para extraer credenciales de GitHub del entorno de compilación. En cuestión de momentos, los investigadores obtuvieron acceso completo al repositorio y pudieron crear un administrador con permisos para publicar código en la rama principal y aprobar solicitudes de extracción.
La escala potencial del ataque es impresionante: según Wiz, el SDK de JavaScript de Amazon se usa en 66% de los entornos en la nube, y uno de sus usuarios es la propia consola de AWS. Un atacante podría haber inyectado código malicioso en el SDK justo antes del lanzamiento semanal, contaminando a todos los usuarios de la biblioteca.
Según Avrahami, no se requerían habilidades técnicas especiales para llevar a cabo este ataque: bastaba el nivel de un desarrollador medio. La verdadera dificultad consistía únicamente en camuflar el código malicioso como algo inocuo.
Amazon afirmó que la vulnerabilidad no afectó a ningún entorno de cliente ni a ningún servicio de la empresa. El gigante de la nube solucionó el problema en 48 horas tras el primer aviso, realizó una auditoría de todos los entornos de compilación públicos y revisó los registros, que confirmaron que nadie, aparte de los investigadores de Wiz, explotó la brecha. La compañía también publicó un boletín de seguridad sobre este incidente.
No obstante, Avrahami advierte que esta amenaza no es exclusiva de AWS. Esta vulnerabilidad explota un punto ciego en la seguridad de las canalizaciones de integración y entrega continuas, y con un riesgo similar se enfrentan todos los grandes proveedores de nube y las empresas tecnológicas que usan GitHub Actions, Jenkins u otros sistemas de integración continua.