昨日、litellm v1.82.8が、SSHキー、クラウド認証情報、Kubernetes設定、暗号ウォレットをインストールしたあらゆるマシンから収集する三段階のバックドア付きでPyPIに公開されました。月間97百万ダウンロード。この侵害されたパッケージは、Cursor内において、MCPプラグインがトランジティブ依存関係としてそれを取り込んだことで発見されました。
Karpathyのそれに関する投稿は1,100万回の閲覧を獲得しました。GitGuardian、Snyk、The Hacker News、JFrog、Endor Labsはすべて詳細な分析を公開しました。英国のNCSC CTOは同日、「Vibe Check」と題したブログを投稿し、AI生成コードを「容認しがたいリスク」と呼びました。
しかし、これらのスレッドの誰も話していないのは、こちらです。litellmの攻撃が成功したのは、今のほとんどの「vibeコード」アプリに存在するのと同じパターンのせいです。
The Pattern That Makes Vibe-Coded Apps Vulnerable
litellmのバックドアが機能したのは、次の理由によります:
トランジティブ依存関係 - 開発者がMCPプラグインを使いました。そのプラグインがlitellmを取り込みました。開発者はlitellmを選んだこともなく、監査もせず、依存関係ツリーの中にそれが存在することも知りませんでした。
セキュリティレビューの欠如 - パッケージをインストールするAIエージェントは「動くかどうか」を最適化し、「安全かどうか」は最適化しませんでした。
認証情報が環境にある - SSHキー、AWSトークン、データベースのパスワードはすべて、不適切に保存されていたため、悪意のあるコードからアクセス可能でした。
聞き覚えがありますか? これは、Escape.techが5,600件のvibeコードアプリをスキャンして見つけたのとまったく同じパターンだからです:
- アプリ全体で2,000件以上の脆弱性
- 400件の露出したシークレット(APIキー、データベース認証情報、認証トークン)
- 現実のvibeコードアプリの60%が基本的なセキュリティスキャンに失敗
litellmの攻撃はサプライチェーンでした。しかし、あなたのアプリの脆弱性は?それらは、あなたのAIコーディングアシスタントによってそこに置かれたのです。
What Your Vibe-Coded App Probably Has Wrong
Escape.techのデータ(15アプリで69件の脆弱性のTenzai、AIコードでXSS脆弱性が2.74倍多かったCodeRabbit)と、私たちが実在のLovable/Bolt/Cursorプロジェクトを独自にスキャンした結果に基づくと:
1. ハードコードされたAPIキー
あなたのAIアシスタントは、Firebaseの設定、Supabaseキー、またはStripeのシークレットを、クライアント側コードに直接埋め込みます。あなたのアプリのすべてのユーザーは、ブラウザの開発者ツールでそれらを見られます。
2. ロウ(行)レベルセキュリティがない
Supabaseを使っている場合(ほとんどのLovableアプリはそうです)、重要なRLSの欠陥がある確率は10.3%です。ユーザーは他のユーザーのデータを読み取り、変更し、削除できます。
3. APIルートへの認証が欠けている
あなたの書き込み、削除、決済のルートはおそらく「そのユーザーが実際にログインしているか」をチェックしていません。AIがルートを生成するのであって、認証チェックは生成しないのです。
4. セキュリティヘッダーがない
Tenzaiは、15件のAIで作られたアプリのうち0件が適切なセキュリティヘッダーを持っていたことを発見しました。CSPなし、HSTSなし、X-Frame-Optionsなし。あなたのアプリはiframeに埋め込まれ、スクリプトを注入され、HTTPで配信され得ます。
5. 露出した.envファイル
28/100が、ランダムなLovableリポジトリをスキャンして見つけた中での最低スコアでした。そのアプリでは、.envファイルが平文のFirebaseキーとともに公開リポジトリにコミットされていました。
How to Fix This in 15 Minutes
あなたはセキュリティエンジニアになる必要はありません。次の5つを確認するだけです:
手順1:リポジトリをスキャンする(2分)
VibeCheckを使ってGitHubリポジトリをスキャンしてください。無料で、サインアップ不要です。100点満点でのスコアと、見つかったすべての問題の一覧が表示されます。
手順2:.envを確認する(1分)
リポジトリで git log --all --full-history -- .env を実行します。何かが返ってきたら、シークレットがgitの履歴にコミットされています。ファイルを削除しても、履歴からは消えません。
手順3:SupabaseのRLSを確認する(3分)
Supabaseのダッシュボード > Authentication > Policies に移動します。ユーザーデータを含むすべてのテーブルには、少なくとも1つのRLSポリシーが必要です。「RLS disabled」という警告がどのテーブルでも表示されるなら、今すぐ修正してください。
手順4:セキュリティヘッダーを確認する(2分)
securityheaders.comにアクセスして、デプロイ済みURLを入力します。B未満の結果が出たら、重要な防御が不足しています。
手順5:APIルートを監査する(5分)
コードベースで export async function POST と export async function DELETE を検索します。これらのそれぞれの先頭には認証チェックがあるべきです。なければ、インターネット上の誰でも呼び出せてしまいます。
The Copy-Paste Fix
脆弱性の種類ごとに、それを修正するためのプロンプトをAIコーディングツールにそのまま貼り付けられます。露出したAPIキーの例:
"すべてのAPIキーとシークレットを環境変数に移してください。.env.localファイルを作成します(.gitignoreに追加)。外部サービスへのリクエストをプロキシするサーバー側APIルートを作成します。機密キーへのクライアント側参照をすべて削除してください。"
私たちは、これらの修正プロンプトを25個以上まとめて The Vibe Coding Security Playbook として公開しています。Lovable、Bolt、Cursor、Firebase、Supabase、Next.jsにおけるあらゆる脆弱性タイプをカバーしています。$19。
litellmの攻撃は何千人もの開発者を数時間で侵害しました。あなたのvibeコードアプリの脆弱性は、あなたのユーザーに同じことをする準備ができています。違いは、あなたは今すぐ自分のものを修正できるという点です。
VibeCheckは、vibeコードアプリ向けの無料でサインアップ不要のセキュリティスキャナーです。The State of Vibe Coding Security 2026では、すべてのインシデント、データ、スキャナーが追跡されています。