【緊急投稿】バイブコーディングで起きている不穏な話:APIキー流出とLLMジャッキングの現実 | システム開発はAIに任せよう!
AIで手軽にコードが書けるようになった。ノリと勢いで動くものができる。これが「バイブコーディング」と呼ばれる開発スタイルです。
楽しい。便利。でも今、これが原因で洒落にならない事件が起きています。
LLMジャッキングとは何か
「LLMジャッキング(LLMjacking)」という攻撃手法が報告されています。
仕組みはシンプルです。誰かのAPIキーを盗んで、そのキーを使って大量のAIリクエストを投げる。費用は盗まれた側に請求される。悪意ある第三者はタダでClaudeやGPTを使い放題、被害者には数百万〜数千万円規模の請求が届くケースも報告されています。かつて私自身がAWSから喰らった20万円請求どころの話ではありません。
そしてAPIキーの流出源として最も多いのがGitHubです。
何が起きているか
バイブコーディングでよくあるパターンがこれです。
- AIにコードを書いてもらう
- 動いた!嬉しい!そのままGitHubにプッシュ
- コードの中にAPIキーがベタ書きされていた
- GitHubのリポジトリを自動クロールしているボットに即座に発見される
- 数時間後、見知らぬ誰かにAPIキーが使われはじめる
「プライベートリポジトリだから大丈夫」と思っている人もいるかもしれません。でも一瞬でもパブリックにした、うっかり設定を間違えた、それだけでボットに拾われます。ボットは常に監視しています。
HTMLファイルにAPIキーをハードコピーしてそのままWebに公開、というケースも報告されています。ブラウザの開発者ツールで誰でも見えます。
Claudeはどう対策しているか
Anthropic(Claudeの開発元)はAPIキーの不正利用対策としていくつかの仕組みを持っています。
GitHubと連携したシークレットスキャン機能があり、公開リポジトリにAnthropicのAPIキーが含まれていると自動検出して通知・無効化する仕組みがあります。また異常な使用量を検知した場合にアラートを出す仕組みも整備されています。
ただし、これはあくまで「流出後の対応」です。流出させないことが最優先です。
正しいAPIキーの扱い方
基本ルールは3つです。
①コードにAPIキーを直接書かない
環境変数(`.env`ファイルや、AWSならLambdaの環境変数設定)で管理します。コードには`process.env.API_KEY`のような変数名だけを書く。
②`.env`ファイルはGitHubにアップしない
`.gitignore`に`.env`を必ず追加します。これを忘れると環境変数ごとGitHubに上がります。
③HTMLやフロントエンドのコードにAPIキーを書かない
HTMLやJavaScriptに書いたAPIキーはブラウザから丸見えです。フロントエンドからAPIを叩く場合は、必ずバックエンド(LambdaなどのサーバーサイドAPI)を経由する構成にします。
マンチーが気をつけていること
これは他人事ではなく、自分でも常に意識していることです。
AIを使ってサービスを作るとき、APIキーや認証情報は全てLambdaの環境変数として設定しています。コードには一切書かない。HTMLやJavaScriptにも当然書きません。
フロントエンドからAIのAPIを直接叩く構成は最初から採用しません。必ずLambdaをプロキシとして挟み、APIキーはサーバーサイドにだけ存在する設計にする。これは最初に決めたルールです。
GitHubへのプッシュ前には`.gitignore`の確認を必ずやる。これも習慣にしています。
「AIが書いたコードだから安全」ではありません。AIはセキュリティより「動くこと」を優先してコードを書きます。セキュリティは人間が確認する、これがバイブコーディング時代の鉄則です。
楽しく使うために知っておくこと
バイブコーディング自体は素晴らしい文化だと思っています。AIのおかげで「作れなかったものが作れる」時代になった。それはこのブログで何度も書いてきた通りです。
でも楽しく使い続けるために、APIキーの扱いだけは手を抜かないでほしいです。
APIキー流出による高額請求は笑えない話です。バイブコーディングを楽しむのはいい。でも「動いた!プッシュ!」の前に、一呼吸おいてAPIキーの場所だけ確認してください。
参考になれば幸いです。
📝 このブログでは、AIと一緒に作った作品の顛末記を書いています
ブログ「システム開発はAIに任せよう!」
👉 https://munchie.jp

コメント