1 puntos por GN⁺ 2025-08-20 | Aún no hay comentarios. | Compartir por WhatsApp
  • Un equipo de investigación de seguridad logró ejecución remota de código (RCE) en los servidores de producción de CodeRabbit y filtración de tokens de API y secretos
  • Mediante un PR que aprovechaba Rubocop, fue posible extraer variables de entorno, además de acceder a PostgreSQL y obtener lectura/escritura sobre 1 millón de repositorios
  • La filtración de la clave privada de la GitHub App permitió inyectar código malicioso y modificar código fuente en un gran volumen de repositorios, públicos y privados, haciendo posible un impacto real
  • CodeRabbit respondió de inmediato en cuestión de horas tras el reporte de la vulnerabilidad y reforzó sus medidas de seguridad
  • Se subraya la necesidad de prevenir incidentes de seguridad al ejecutar herramientas externas mediante aislamiento en sandbox, privilegio mínimo y bloqueo de red

Introducción

  • En enero de 2025, el equipo de investigación de Kudelski Security reveló una vulnerabilidad crítica en CodeRabbit
  • En CodeRabbit, una herramienta ampliamente usada para automatizar revisiones de PR, se confirmó un problema grave: remote code execution (RCE), filtración de variables de entorno e información sensible, y obtención de permisos de lectura/escritura sobre más de 1 millón de repositorios
  • Este artículo contiene un análisis detallado de la vulnerabilidad divulgada en Black Hat USA, y tiene alto valor como caso real de fallas en herramientas de revisión basadas en código y sistemas integrados
  • La vulnerabilidad reportada fue parcheada rápidamente justo después de ser informada

Resumen de CodeRabbit

  • CodeRabbit es la app de revisión de código con IA más instalada en GitHub Marketplace y GitLab Marketplace
  • Revisa 1 millón de repositorios y 5 millones de pull requests en ambas plataformas
  • Cada vez que un usuario crea o actualiza un PR, el motor de IA analiza el código y genera automáticamente comentarios y sugerencias
  • Ofrece grandes beneficios para la productividad de desarrollo, como resúmenes de código, detección de vulnerabilidades de seguridad, sugerencias de mejora y generación de diagramas

Uso de CodeRabbit y estructura de permisos

  • El plan Pro ofrece funciones de integración con herramientas de linter y SAST (análisis estático)
  • Al autenticar una cuenta de GitHub e instalar la app, se le otorgan permisos de lectura y escritura sobre los repositorios seleccionados
  • Si esta gestión de permisos fuera abusada, podría tener un impacto directo sobre el código de todos los repositorios donde está instalada

Ejecución de herramientas externas y hallazgo del exploit

  • Cuando CodeRabbit detecta cambios de código dentro de un PR, ejecuta automáticamente múltiples herramientas externas de análisis estático (por ejemplo, Rubocop)
  • Rubocop está diseñado para usar el archivo de configuración .rubocop.yml, que puede cargar archivos externos de extensión Ruby (como ext.rb)
    • Un atacante puede insertar código malicioso en .rubocop.yml y ext.rb, enviar un PR y hacer que CodeRabbit ejecute ese código en su servidor remoto
  • El código ejecutado con esta técnica envió todas las variables de entorno del servidor al servidor del atacante

Análisis del contenido filtrado en variables de entorno

  • Las variables de entorno filtradas incluían API keys, tokens y contraseñas de diversos servicios, entre ellos:
    • claves de API de Anthropic/OpenAI, salt/password de cifrado, clave privada de GitHub App, credenciales de PostgreSQL, etc.
  • Mediante RCE, el potencial de daño secundario era alto y de gran alcance: acceso a bases de datos, modificación de código y filtración de información interna del servicio
  • Era posible continuar con más exploración maliciosa sobre el servidor real, pero por consideraciones operativas del servicio se verificó solo lo mínimo y luego se detuvo

Obtención de permisos de lectura/escritura sobre 1 millón de repositorios

  • Usando GITHUB_APP_PEM_FILE (clave privada) incluida en las variables de entorno, era posible autenticarse ante la GitHub API
  • Sobre todos los repositorios a los que CodeRabbit tenía acceso (incluyendo públicos y privados), se podían ejercer permisos muy potentes, como:
    • leer/escribir código fuente, reemplazar archivos de release (ataque a la cadena de suministro), alterar historial de git, etc.
  • Se publicó un código de reproducción (PoC) que demostró la viabilidad real de explotación

Resumen del PoC

  • Usando librerías como PyGitHub y la clave privada filtrada, el App ID y otros datos, se pueden emitir tokens de acceso para repositorios arbitrarios
  • Con esos tokens, es posible automatizar la clonación de repositorios privados, modificación de archivos, nuevos commits y manipulación de archivos de release

Posible compromiso de repositorios internos/privados de CodeRabbit

  • Como la propia organización de CodeRabbit también tenía instalada la app en su servicio, también era posible acceder y clonar los repositorios internos del código fuente de CodeRabbit
  • Con solo conocer el nombre de la organización, se podía consultar el installation ID y acceder de inmediato a la lista de repositorios correspondientes

Resumen del impacto

  • Acceso no autorizado a repositorios privados y filtración de datos personales
  • Amenaza de ataques a la cadena de suministro, como manipulación de código fuente e inserción de malware/backdoors
  • Posibilidad de encadenarlo con vulnerabilidades adicionales, como las de GitHub Actions
  • RCE directo con potencial de causar destrucción de datos, caída del servicio y daños en cascada sobre otros servicios

Contexto y límites del juicio de la IA

  • Incluso durante el ataque, el propio PR fue revisado normalmente por CodeRabbit, y aunque dejó un comentario de advertencia sobre la vulnerabilidad, en la práctica no logró identificar la sintaxis maliciosa como amenaza
  • Esto muestra que una herramienta de revisión de código con IA no necesariamente comprende el contexto real de una situación de riesgo

Respuesta y recomendaciones

  • CodeRabbit deshabilitó Rubocop, rotó secretos y realizó una auditoría del sistema en cuestión de horas tras el reporte
  • El problema ocurrió en una herramienta (Rubocop) a la que no se le aplicaba sandbox; después de las medidas, se mejoró para que todas las herramientas externas se ejecuten en entornos aislados
  • Para reforzar la seguridad, se subraya la necesidad de un diseño defensivo en el entorno de ejecución de herramientas externas: minimizar variables de entorno, restringir IPs de acceso de red, bloquear acceso a internet, etc.

Divulgación responsable y conclusión

  • En enero de 2025, tras el reporte, se llevaron a cabo una respuesta y medidas rápidas
  • Se quedó solo en un PoC, pero quedó demostrado que un atacante malicioso podría abusarlo fácilmente para seleccionar repositorios de alto valor, desplegar ransomware a gran escala o realizar ataques destructivos a la cadena de suministro
  • Se reafirma la importancia de implementar sandbox y el principio de mínimo privilegio al integrar herramientas externas de análisis y servicios de automatización basados en IA

Aún no hay comentarios.

Aún no hay comentarios.