- セキュリティ研究チームが CodeRabbitの本番サーバーでリモートコード実行(RCE) および APIトークン・機密情報の漏えい に成功
- Rubocopを利用したPRにより環境変数を窃取し、PostgreSQLへのアクセスと100万件のリポジトリの読み書きが可能 だった
- GitHub Appのプライベートキー の漏えいにより、公開/非公開リポジトリを含む大規模な保存領域へのマルウェア注入、ソースコード改変など実害が生じうる状態だった
- CodeRabbit側は 脆弱性報告から数時間以内に即時対応 し、セキュリティ対策を強化した
- 外部ツール実行時にはサンドボックス分離・最小権限・ネットワーク遮断などで セキュリティ事故を防ぐ 必要性が強調される
紹介
- 2025年1月、Kudelski Security研究チームがCodeRabbitの深刻なセキュリティ脆弱性を公開
- PRレビュー自動化ツールとして広く使われるCodeRabbitで、remote code execution(RCE)、環境変数および機密情報の漏えい、100万件を超えるリポジトリへのRead/Write権限の確保 という重大な問題が確認された
- この記事はBlack Hat USAで発表された公開脆弱性の詳細分析を扱っており、コードレビュー型ツールと連携システムの脆弱性の実例 として参考価値が高い
- 報告された脆弱性は申告直後に迅速にパッチ適用された
CodeRabbitの概要
- CodeRabbitはGitHub/GitLab Marketplaceで 最も多くインストールされているAIベースのコードレビューアプリ
- 両プラットフォームで 100万件のリポジトリと500万件のpull request をレビューしている
- ユーザーがPRを作成または更新するたびに、AIエンジンがコードを分析してコメントと提案を自動生成する
- コード要約、セキュリティ脆弱性検出、改善点の提示、ダイアグラム生成など 開発生産性 の向上効果が大きい
CodeRabbitの利用と権限構造
- Proプランはlinter・SAST(静的解析)ツール連携機能を提供する
- GitHubアカウント認証およびアプリインストール時に 選択したリポジトリへの読み書き権限 を付与することになる
- この権限管理が悪用された場合、インストールされたすべてのリポジトリのコードに 直接的な影響 を与えうる
外部ツール実行とエクスプロイトの発見
- CodeRabbitはPR内のコード変更を検知すると 複数の外部静的解析ツール(例: Rubocop) を自動実行する
- Rubocopは
.rubocop.yml 設定ファイルを使って 外部Ruby拡張ファイル(ext.rbなど) をロードできるよう設計されている
- 攻撃者は
.rubocop.yml と ext.rb に悪意あるコードを挿入してPRを提出し、CodeRabbitがリモートサーバー上でそのコードを実行するよう誘導できた
- この手法で実行されたコードは サーバー上のすべての環境変数を攻撃者のサーバーへ送信 した
環境変数漏えい内容の分析
- 漏えいした環境変数には、次のような 多様なサービスのAPIキー、トークン、パスワード などが含まれていた
- Anthropic/OpenAI APIキー、Encryption salt/password、GitHub Appプライベートキー、PostgreSQL接続情報など
- RCEを通じてデータベースアクセス、コード改変、サービス内部情報漏えいなど 二次被害が大きく波及性も高い
- 本番サーバー上でさらに悪意ある探索を進めることも可能だったが、サービス運用を考慮して最小限の確認にとどめて中断した
100万件のリポジトリRead/Write権限の獲得
- 環境変数に含まれていた GITHUB_APP_PEM_FILE(プライベートキー) を使ってGitHub APIへ認証可能
- CodeRabbitがアクセス可能なすべてのリポジトリ(公開/非公開を含む)に対して
- ソースコードの読み書き、リリースファイルの差し替え(サプライチェーン攻撃)、git履歴の変更など非常に強力な権限を行使できた
- 再現コード(PoC) が公開され、実際に悪用可能であることが証明された
PoC要約
- PyGitHubなどのライブラリを使い、漏えいしたプライベートキー、App IDなどで 任意のリポジトリアクセストークンを発行
- このトークンを通じて、非公開リポジトリの複製、ファイル変更、新規コミット、リリースファイル改ざんなどを自動化できる
CodeRabbit社内/非公開リポジトリ侵害の可能性
- CodeRabbit組織自身も自社サービスに導入して利用していたため、CodeRabbitの内部ソースコードリポジトリへのアクセスおよび複製 も可能だった
- 組織名さえ分かれば、インストールIDを照会してすぐにそのリポジトリ一覧へアクセスすることが可能だった
影響の要約
- 非公開リポジトリへの不正アクセス・個人情報漏えい
- ソースコード改ざん、マルウェア/バックドア挿入など サプライチェーン攻撃 の脅威
- GitHub Actionsなど追加脆弱性との連鎖の可能性
- 直接的なRCEによるデータ破壊、サービス停止、他サービスへの連鎖被害の発生
文脈とAI判断の限界
- 攻撃中であってもPR自体はCodeRabbitによって正常にレビューされ、脆弱性警告コメントは残したものの実際には脅威となる構文を識別できなかった
- 「AIコードレビューツール」が実際の危険状況の文脈まで把握できるわけではないことを示している
対応と推奨事項
- CodeRabbitは 脆弱性報告から数時間以内にRubocopを無効化し、機密情報の差し替え、システム監査を実施 した
- サンドボックス未適用のツール(Rubocop)で問題が発生し、対応後は すべての外部ツールを隔離環境で実行 するよう改善した
- セキュリティ強化のため、外部ツール実行環境における環境変数の最小化、ネットワークアクセスIP制限、インターネットアクセス遮断など 防御的設計の必要性 が強調される
責任ある公開と結論
- 2025年1月、報告後に迅速な対応と措置が行われた
- PoCにとどまったものの、悪意ある攻撃者であれば高価値リポジトリの選別、大規模ランサムウェア、破壊的サプライチェーン攻撃などに容易に悪用しうることが確認された
- 外部解析ツール・AIベース自動化サービスとの連携時には、サンドボックスと最小権限の原則 を実装する重要性が再確認された
まだコメントはありません。