Selon Kudelski Security (blog de recherche), un enchaînement de failles dans l’intégration de Rubocop par CodeRabbit a permis d’obtenir une exécution de code à distance (RCE) sur des serveurs de production, d’exfiltrer de nombreux secrets (dont la clé privée du GitHub App CodeRabbit) et, par ricochet, d’accéder en lecture/écriture à des dépôts GitHub installés (jusqu’à 1 M de dépôts). Les correctifs ont été déployés rapidement en janvier 2025, notamment la désactivation puis l’isolation de Rubocop.

• Vulnérabilité et vecteur d’exploitation: un PR malveillant incluant un fichier .rubocop.yml chargeait une extension Ruby (ext.rb) via require, exécutée par Rubocop. Comme Rubocop ne tournait pas dans l’environnement isolé prévu, le code du PR s’exécutait sur un serveur de production CodeRabbit, permettant la RCE et l’exfiltration des variables d’environnement via une requête HTTP sortante.

• Secrets exfiltrés (exemples): clé privée du GitHub App CodeRabbit (GITHUB_APP_PEM_FILE), client ID/secret de l’app, clés API Anthropic et OpenAI, jetons et secrets divers (Aperture, Courier, LangChain, LanguageTool, Pinecone), identifiants PostgreSQL (hôte, base, user, mot de passe), secrets Jira, GitLab PAT, etc. La présence de la clé privée GitHub App permettait de générer des tokens d’installation et d’accéder aux dépôts où l’app était autorisée, y compris des dépôts privés.

• Impact potentiel: avec la clé GitHub App, un attaquant pouvait lister les installations (≈80 000+), énumérer les dépôts associés, générer des jetons d’accès valides 10 minutes et cloner/pousser vers les dépôts affectés. Risques majeurs de supply chain: modification de l’historique Git, remplacement d’actifs de releases, diffusion de malware, et mouvements latéraux via workflows/actions vulnérables. Côté infrastructure, la RCE ouvrait la voie à l’accès interne (ex. PostgreSQL), opérations destructrices ou DoS.

• Chronologie et remédiation: signalée le 24 janvier 2025; CodeRabbit a confirmé, désactivé Rubocop, roté les secrets, puis déployé un correctif le 30 janvier 2025, en replaçant Rubocop dans un sandbox sécurisé, en auditant les services, en automatisant l’enforcement du sandbox et en durcissant les gates de déploiement.

• IOCs et TTPs:

  • IOCs: IP d’exemple de C2 utilisée dans le PoC: 1.2.3.4 (démonstration)
  • TTPs: abus de configuration .rubocop.yml (require d’extension locale), exécution de code côté serveur via outil tiers non isolé, exfiltration de variables d’environnement par HTTP POST JSON, abus de GitHub App (JWT RS256, tokens d’installation, API GitHub) pour lister installations/dépôts et cloner/pousser, risque de supply chain par modification de releases et historique Git.

Article de type publication technique visant à documenter la vulnérabilité, ses impacts et un PoC, avec une note de divulgation responsable et de remédiation par l’éditeur.

🧠 TTPs et IOCs détectés

TTP

abus de configuration .rubocop.yml (require d’extension locale), exécution de code côté serveur via outil tiers non isolé, exfiltration de variables d’environnement par HTTP POST JSON, abus de GitHub App (JWT RS256, tokens d’installation, API GitHub) pour lister installations/dépôts et cloner/pousser, risque de supply chain par modification de releases et historique Git

IOC

IP d’exemple de C2 utilisée dans le PoC: 1.2.3.4


🔗 Source originale : https://research.kudelskisecurity.com/2025/08/19/how-we-exploited-coderabbit-from-a-simple-pr-to-rce-and-write-access-on-1m-repositories/