CodeRabbit 本番環境サーバにおける RCE 脆弱性:100 万件以上のリポジトリに影響が生じた可能性

CodeRabbit’s Production Servers RCE Vulnerability Enables Write Access on 1M Repositories

2025/08/20 CyberSecurityNews — CodeRabbit の本番環境インフラで確認された、深刻なリモート・コード実行 (RCE) 脆弱性により、100万以上のコード・リポジトリへの不正アクセスが、プライベート・リポジトリを含むかたちで可能になっていた。このプラットフォームの静的解析ツール統合を悪用する攻撃者は、機密 API 認証情報を窃取し、GitHub App 秘密鍵を掌握することで、リポジトリへの書込権限の取得が可能な状況にあった。この脆弱性は、2024年12月に発見され、2025年1月に責任あるかたちで開示された。

主なポイント
  • 悪意の ” .rubocop.yml” ファイルにより、本番環境のサーバ上で任意の Ruby コードが実行された。
  • 漏洩した GitHub App 秘密鍵により、100万以上のリポジトリへの書き込みアクセス権が付与された。
  • CodeRabbit は Rubocop を無効化し、すべての認証情報をローテーションすることで、数時間以内に問題を解決した。

GitHub Marketplace で最も多くインストールされ、80,000 件を超えるインストール数を持つ AI 支援アプリ CodeRabbit は、脆弱性のある Rubocop 統合を無効化し、侵害の可能性がある認証情報をローテーションすることで、情報が公開された直後に、この問題を修正した。

1 million repositories in review
1 million repositories in review
CodeRabbit の Rubocop 統合における脆弱性

Kudelski Security によると、この脆弱性は CodeRabbit と Rubocop の統合に起因するものとされる。Rubocop とは、プルリクエストで送信された、”.rubocop.yml” コンフィグ・ファイルを処理する Ruby 静的アナライザーのことである。

研究者たちが発見したのは、”require: ./ext.rb” ディレクティブを取り込んだ悪意のコンフィグ・ファイルを作成し、CodeRabbit にプル・リクエストを処理させると、任意 Ruby コードの実行により、Rubocop 拡張メカニズムの悪用が可能になることだった。

 Illustration of malicious pull request 
 Illustration of malicious pull request 

この脆弱性の悪用プロセスで作成されるリポジトリに取り込まれるものとしては、”.rubocop.yml” コンフィグ・ファイルと、ペイロード・コードを含む悪意の ext.rb 拡張ファイル、Rubocop の実行をトリガーするダミー Ruby ファイルの3つがある。

このペイロードが、Ruby の環境変数アクセス機能 (ENV.to_h) を悪用し、攻撃者が管理する指定 IP アドレス・サーバへの HTTP POST リクエストを通じて、機密データを外部へと盗み出す。

このエクスプロイトにより、CodeRabbit の本番環境へ向けた広範なアクセスが可能となり、Anthropic/OpenAI/Langchain/Pinecone などの重要な API キーや、PostgreSQL データベース認証情報、暗号化キーなどに、不正取得の可能性が生じていた。

最も深刻な侵害は、CodeRabbit の GitHub App 秘密鍵を取り込んだ、GITHUB_APP_PEM_FILE 環境変数で発生するものだ。この秘密鍵に付与されていたのは、ユーザーが CodeRabbit アプリケーションをインストールした、すべてのリポジトリへの書き込みアクセス権である。

つまり、この秘密鍵を悪用する攻撃者は、CodeRabbit が監視する 100万のリポジトリに対する、包括的な権限を持つアクセストークンを生成し、コンテンツの読取と書込/メタデータの読取/プルリクエストの書込/リポジトリ管理などが可能だった。

また、PyGitHub ライブラリと、漏洩したアプリ ID を悪用する攻撃者は、プログラムによりインストール状況を列挙し、アクセス可能なリポジトリを一覧表示し、CodeRabbit の内部リポジトリである coderabbitai/mono や coderabbitai/pr-reviewer-saas などを含む、プライベート・リポジトリの複製が可能だった。

緩和策

CodeRabbit は、恒久的な修正を開発するまでの間において、Rubocop の処理を完全に無効化し、通知から数時間以内において、侵害された可能性のある認証情報と API キーをローテーションした。

そして、恒久的な解決策として、CodeRabbit の安全なサンドボックス環境へと、Rubocop および関連する外部ツールが移行された。このサンドボックス環境には、Rubocop を保護対象から除外する、既存の分離メカニズムが備わっている。さらに、追加のセキュリティ強化策として実施されたものには、包括的システム監査/サンドボックスの自動適用メカニズム/デプロイメント・ゲート強化によるインシデント防止などがある。

この脆弱性は、2025年1月30日までに完全に解決された。そこで実証されたのは、信頼できないコード実行が、深刻なサプライチェーン攻撃ベクターを生み出す CI/CD 環境では、サードパーティ・ツール統合に対する適切なサンドボックス化が重要になることだ。