297
92

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[地獄] OpenAI APIが不正使用された件

Last updated at Posted at 2025-12-19

image.png

APIキーの管理は、生成AI時代のエンジニアにとって生命線です。

個人開発や学習目的では「とりあえず動けばいい」で済ませがちですが、組織でAPIを運用する場合、一晩で数千ドルの被害が発生する可能性を、身をもって体験しました。

2025年8月2日、私は地獄を見ました。Slackを確認すると、開発チームから「OpenAI APIが使えなくなった」という報告が。管理画面を開いた瞬間、血の気が引きました。

クレジット残高: -$3,700.76

前日まで +$1,700 あったはずの残高が、一瞬にして マイナス5,400ドル以上の変動。月額制限を$2,500に設定していたにもかかわらず、です。

本記事では、実際に起きたAPIキー漏洩事件の全貌、OpenAIサポートとのやり取り、そして同じ被害を防ぐための具体的な対策を共有します。

事件の概要

発覚の経緯

2025年9月2日 16:46 JST、突然以下のエラーが表示されました。

Error: 429 You exceeded your current quota

「おかしい、制限にはまだ余裕があるはずなのに」と思いながら管理画面を確認した瞬間、目を疑いました。

項目 期待値 実際の値
クレジット残高 +$2,000程度 -$3,700.76
月額使用制限 $2,500 設定済み
ダッシュボード表示の使用料 - 約$200
実際の請求額 - $6,200以上

なぜこの事件は起きたのか?

問題1: 使用制限が「ソフトリミット」だった

月額$2,500ドルの制限を設定していたにもかかわらず、実際には$6,200ドル以上の請求が発生しました。

OpenAIのサポートによると

Usage limits are set within your OpenAI account but are not always "hard stops"; they're designed as soft limits to alert you before exceeding your budget.

つまり、使用制限は「警告」であって「強制停止」ではないのです。これは公式ドキュメントでも明確に説明されていない重要な仕様です。

問題2: 内部データ漏洩

私たちの組織では、開発者が効率的に作業できるよう、APIキーを配布していました。

  • Roo Code での利用
  • Codex CLI での利用
  • その他の開発ツール

しかし、内部でデータ漏洩が発生し、これらのAPIキーが外部に流出した可能性が高いと判断しました。

発覚後の対応

緊急対応(2時間の死闘)

状況が不明で被害範囲も特定できなかったため、被害を最小限に抑えるために全てのAPIキーを削除する決断をしました。

ここで新たな問題が発生しました。管理APIからAPIキーを一括削除できないかとも考えたのですがのです。数百程度でしたので画面をクリックするCookie Clickerのようなマクロを作って全部消しました。

OpenAIサポートとのやり取り

AIサポートの循環ループ地獄

最初にOpenAIのAIチャットサポートに連絡しましたが、返金処理に関して循環ループに陥りました。同じ説明を何度も繰り返すだけで、具体的な進展がありません。

メールサポートへの切り替え

チャットでの解決を諦め、2025年9月2日 20:43に以前問い合わせした際に、対応頂いたメールサポートに連絡しました。

送信した情報:

項目 内容
アカウント情報 メールアドレス、組織名、組織ID
被害状況 残高の変動、制限設定値、発覚日時
対応済み事項 アーカイブしたプロジェクト一覧、削除したAPIキー
要求事項 調査、返金、ログ提供、再発防止策

AIサポートからの回答

興味深いことに、API不正利用にかんするメールサポートも機械的な応答でAIが対応していました1。しかし、チャットよりも的確な回答が得られました。つい数ヶ月前まで、人間の名前で人間ぽい人が回答してたのに、凄い進歩です。

重要な情報として、以下が判明しました:

  1. 使用制限はソフトリミット - 超過しても即時での自動停止しない
  2. 証拠があれば返金の可能性あり - ただし保証はない

証拠の提出

9月2日 20:54、以下のUsageの内容をExportして証拠を提出しました

添付ファイル(11件):
├── openai.md (180K) - APIキー一覧
├── cost_2025-08-02_2025-09-02.csv (5K)
├── completions_usage_2025-08-02_2025-09-02.csv (2760K)
├── web_searches_usage_2025-08-02_2025-09-02.csv (70K)
├── embeddings_usage_2025-08-02_2025-09-02.csv (33K)
├── file_searches_usage_2025-08-02_2025-09-02.csv (3K)
├── code_interpreter_sessions_usage_2025-08-02_2025-09-02.csv (3K)
├── vector_stores_usage_2025-08-02_2025-09-02.csv (3K)
├── audio_speeches_usage_2025-08-02_2025-09-02.csv (3K)
├── audio_transcriptions_usage_2025-08-02_2025-09-02.csv (3K)
└── images_usage_2025-08-02_2025-09-02.csv (3K)

また、APIキーの使用地域についても報告しました:

We use API keys in Vietnam, Japan, and United States. Access from any other countries should basically be considered unauthorized requests.

返金の確認(通知なし)

9月3日 3:22、ふと管理画面を確認すると、クレジット残高が $1,365.99 に復旧していました。

OpenAIからの返金通知は一切ありませんでした。

自分で確認しなければ、返金されたことすら気づかなかったでしょう。その後、2回メールで連絡しましたが、返事はありませんでした。

教訓と対策

被害を最小限に抑えるために

  1. APIキーは必要最小限の数を発行する
  2. 可能なら定期的にローテーションする
  3. 不要になったキーは即座に削除する
  4. 複数の監視・アラートを設定する
  5. インシデント発生時の対応手順を事前に整備する

今回は幸いにも返金されましたが、これは保証されたものではありません。APIキー管理は、クレジットカードの管理と同じレベルの注意が必要です。

生成AIの民主化が進む中、開発者一人ひとりがセキュリティ意識を高く持つことが、組織を守る最後の砦となります。この記事が、同じ被害を防ぐ一助となれば幸いです。


とはいえ、萎縮する必要はない

APIキーの流出は確率的に発生するものであり、異常なまでに恐れる必要はありません。基本的な対策を講じていれば、多くのケースは防げますし、万が一漏洩しても迅速に無効化すれば被害は限定的です。

「絶対に漏らしてはならない」というプレッシャーでAgentic Coding推進が止まるのは、むしろ本末転倒です。Agentic Coding時代において重要なのは、リスクを正しく理解した上で、積極的にチャレンジすること。

使用量アラートの設定、月額上限の設定、定期的なキーローテーションといった「仕組み」でリスクをコントロールしながら、どんどん試していきましょう。

リスクゼロを目指して何もしないより、適切なリスク管理のもとで前に進む方が、はるかに価値があります。


もしこの記事が「参考になった!」「気をつけよう!」と思ったら、LGTM(いいね!)で応援してくださると嬉しいです。同じ被害に遭う人を一人でも減らすために、シェアしていただけると幸いです。

参考リンク

  1. メールの冒頭に「Hello, I'm an AI support agent.」と明記されていた

297
92
2

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
297
92

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?