2026年4月19日にVercelが公表したサプライチェーン攻撃の全容と、影響を受けた可能性のある利用者が今すぐ実施すべき具体的な対応手順を詳しく解説します。
「自分のプロジェクトは大丈夫?」と思ったVercel利用者へ
2026年4月19日、Vercelが公式ブログおよびサポートナレッジベースで衝撃的な発表を行いました。同社のシステムに関連したサプライチェーン攻撃が確認され、一部顧客の環境変数が流出した可能性があるというものです。
「Next.jsのデプロイをVercelに任せているが、うちのAPIキーは安全か?」「どのプロジェクトが影響を受けたのか分からない」「まず何から手をつければいいか見当もつかない」——そんな不安を抱えているWeb担当者・エンジニアの方は少なくないはずです。
この記事では、Vercel公式KB・BleepingComputer・Hacker Newsの報告をもとに、攻撃の経緯を正確に整理したうえで、利用者が今すぐ実施すべき緊急対応を具体的な手順とともに解説します。推測や憶測は一切含めず、確認された事実のみをお伝えします。
攻撃の経緯と影響範囲:何が起きたのか
サプライチェーン攻撃の起点はAIツール「Context.ai」
Vercel公式の発表によると、今回の攻撃はVercel自身のインフラへの直接侵入ではありませんでした。起点となったのは、Context.aiというAIアシスタントツールです。
Context.aiはGoogle Workspace連携のOAuth(認証連携)機能を提供していましたが、このGoogle Workspace OAuthフローに脆弱性が存在し、攻撃者に悪用されました。Context.aiを通じてVercelのシステムに接続していた一部の顧客環境が、この侵害の影響を受けた形になります。
flowchart TD
A[攻撃者] --> B[Context.ai のGoogle Workspace OAuth侵害]
B --> C[Context.ai経由でVercelへのアクセス権取得]
C --> D[一部顧客の環境変数へのアクセス]
D --> E[暗号化されていない環境変数が流出した可能性]
E --> F[攻撃者が200万ドルの身代金を要求]攻撃者と身代金要求
ハッキングフォーラム「BreachForums」で**「ShinyHunters」を名乗る投稿者がVercelのデータ販売を持ちかけており、Telegram上では200万ドル(約3億円超)の身代金**を要求したと主張しています。
ただしBleepingComputerの取材に対しては、過去のShinyHunters関連の攻撃に関わったとされる人物が今回の事件への関与を否定しています。攻撃者の正体は現時点で確定しておらず、「ShinyHuntersの名を騙った別の人物」である可能性も残されています。なお、ShinyHuntersの名で活動する集団は過去にTicketmasterやAT&Tなど大手企業のデータ流出に関わってきたとされており、その知名度を利用した便乗の可能性も指摘されています。
影響範囲は「限定的な顧客サブセット」
Vercel公式の発表では、影響を受けたのは全顧客ではなく、限定的な一部の顧客グループ(a limited subset of customers)であると明言されています。特にContext.aiとのOAuth連携を有効にしていたプロジェクト、または類似のサードパーティ連携を持つ環境が対象となる可能性があります。
最も懸念されるのは、暗号化されていない状態で保存されていた環境変数が流出した可能性がある点です。DATABASE_URL、STRIPE_SECRET_KEY、SENDGRID_API_KEYといったクレデンシャルが含まれていた場合、第三者による悪用リスクが生じます。
「Sensitive」フラグが付いた環境変数は保護された可能性が高い
Vercel公式の発表では、Sensitiveとしてマークされた環境変数は特別な保護メカニズムにより、今回の不正アクセスでは読み取られなかった可能性が高いとされています。一方、通常の環境変数として保存されていた値については流出のリスクが残ります。
出典: Vercel公式ナレッジベース「Vercel April 2026 security incident」、BleepingComputer「Vercel confirms breach as hackers claim to be selling stolen data」、Hacker News ディスカッション
今すぐ実施すべき緊急対応:7つのステップ
「影響を受けているかどうか分からない段階でも、対応を後回しにしてはいけない」というのが弊社の見解です。影響がなかったとしても、これを機にセキュリティ態勢を強化しておくことは長期的に見て必ずプラスになります。
ステップ1:環境変数とAPIキーのローテーション(最優先)
最初に手をつけるべきは、全プロジェクトの環境変数・APIキーの無効化と再発行です。「影響を受けていないかもしれない」という楽観的な見方は、この段階では禁物です。
# プロジェクトの環境変数一覧を確認
vercel env ls
# 特定の環境変数を削除(例:本番環境のSTRIPE_SECRET_KEY)
vercel env rm STRIPE_SECRET_KEY production
# 新しいキーを再設定
vercel env add STRIPE_SECRET_KEY production
ローテーションが必要な主なキーの種類は以下の通りです。
- データベース接続文字列(
DATABASE_URL、MYSQL_URLなど) - 決済サービスAPIキー(Stripe、PayJPなど)
- メール送信サービスキー(SendGrid、Resendなど)
- 外部API認証情報(OpenAI、AWS、GCPなど)
- JWTシークレット・セッションシークレット
ステップ2:Sensitive環境変数機能を活用する
Vercelには環境変数を**「Sensitive」(機密)として指定する機能**があります。この設定を有効にした変数は、ダッシュボード上での表示が制限され、ログへの出力も抑制されます。今回の事故を教訓に、全ての機密情報にこの設定を適用してください。
# Vercel CLIでSensitive環境変数として追加する場合
# ダッシュボードから設定する場合は、変数追加時に「Sensitive」トグルをオンにする
vercel env add STRIPE_SECRET_KEY production
# → CLIでは追加後、ダッシュボードでSensitiveフラグを手動でオンにする
ダッシュボードでの操作手順:
Settings > Environment Variablesを開く- 変数の編集画面で 「Sensitive」トグル をオンにする
- 一度Sensitiveとして保存された変数は、その後ダッシュボード上で値が表示されなくなる
ステップ3:アクティビティログの精査
Vercelダッシュボードの 「Activity」 タブから、不審なアクセスやデプロイが行われていないか確認します。
確認すべきポイント:
- 自分や自社チーム以外のユーザーによる操作ログ
- 心当たりのないデプロイの実行記録
- 普段と異なる時間帯(深夜・早朝など)の操作
- 見覚えのないIPアドレスやデバイスからのアクセス
# Vercel CLIでデプロイ履歴を確認
vercel ls --all
# 特定プロジェクトのデプロイ一覧
vercel ls [プロジェクト名]
ステップ4:疑わしいデプロイメントの削除
アクティビティログで心当たりのないデプロイを発見した場合は、速やかに削除します。
# デプロイURLを指定して削除
vercel remove [デプロイURL or デプロイID]
# 例
vercel remove my-project-abc123.vercel.app
ダッシュボードからは Deployments タブ → 対象デプロイの「...」メニュー → Delete で削除できます。
ステップ5:デプロイメント保護の有効化
VercelのProプラン以上では 「Deployment Protection」 機能が利用できます。これにより、デプロイされたURLへのアクセスを認証済みユーザーに限定できます。
設定場所:
Settings > Deployment Protection
主な設定項目:
- Vercel Authentication:Vercelアカウントによる認証を要求
- Password Protection:パスワードによるアクセス制限
- Trusted IPs:特定IPアドレスからのアクセスのみ許可
ステージング・プレビュー環境は特に野ざらしになりがちです。本番環境だけでなく、プレビューデプロイにも保護を設定することを強く推奨します。
ステップ6:OAuth連携サービスの監査と不審な連携の削除
今回の攻撃の起点がOAuth連携だったことを踏まえ、Vercelに連携している全サードパーティサービスを確認・監査します。
確認場所:
Vercelダッシュボード > Settings > Integrations
確認手順:
1. 全ての統合(Integrations)を一覧表示
2. 現在も使用中のサービスか確認
3. 不要・見覚えのない連携は即座に削除
4. Context.ai連携が存在する場合は特に注意して確認
さらに、各OAuthサービス側でも認可済みアプリケーションの一覧を確認してください。
GoogleアカウントのOAuth確認:
https://myaccount.google.com/permissions
→ Vercelおよび関連サービスへのアクセス許可を確認
→ 不審なアプリは「アクセスを削除」
ステップ7:GitHub/npmトークンの再発行
VercelはGitHub連携を通じてリポジトリにアクセスします。攻撃者がこの連携を悪用した場合、GitHubのPATやnpmのアクセストークンも侵害されている可能性があります。
1. GitHub.com > Settings > Developer settings
2. Personal access tokens > Tokens (classic) or Fine-grained tokens
3. Vercel関連のトークンを特定して「Regenerate」または削除
4. 新しいトークンをVercelダッシュボードで再設定
確認URL:
https://github.com/settings/tokens
よくある失敗パターンと注意点
失敗①「影響なしメールが来ていないから大丈夫」という誤解
Vercelからの個別通知がなかったとしても、安全が保証されているわけではありません。調査中の段階では通知が遅れることもあります。「連絡がないから問題なし」という判断は危険です。 少なくとも主要なAPIキーのローテーションは実施しておくべきです。
失敗②ローテーション後のリデプロイを忘れる
環境変数を更新しても、既にデプロイ済みのビルドには変更が反映されません。 環境変数を更新したら必ず手動でリデプロイを実行してください。
# 最新の環境変数を反映させるために再デプロイ
vercel --prod
失敗③GitHub Secretsとの二重管理ミス
GitHub ActionsとVercelを併用している場合、GitHub Secrets側の値も同様に更新が必要です。片方だけ更新してCI/CDパイプラインが壊れるケースが多発します。必ずVercelとGitHub両方のシークレット管理画面を確認してください。
失敗④チームメンバーへの周知漏れ
複数人でVercelプロジェクトを管理している場合、一人が対応しても他のメンバーが旧キーを使い続けることがあります。対応開始時にSlackやメールでチーム全体へ即時共有することを忘れないでください。
今後の再発防止策:環境変数管理のベストプラクティス
今回の事故は「Vercel固有の問題」ではなく、サードパーティOAuth連携全般に潜む構造的リスクを示しています。弊社でも、クライアントのNext.js+Vercel案件では以下のような管理ルールを標準化しています。
- Sensitiveフラグの徹底:全ての機密環境変数に必ず設定
- 最小権限の原則:APIキーは必要なスコープのみに制限
- 定期的なローテーション:主要なキーを90日ごとに再発行
- 不要なOAuth連携の即時削除:使わなくなったIntegrationはその日のうちに削除
- Vercel Team Auditログの定期確認:月1回以上のログレビューを習慣化
まとめと今すぐ着手すべきこと
2026年4月19日に発覚したVercelのサプライチェーン攻撃は、Context.aiのGoogle Workspace OAuth侵害を起点とし、一部顧客の暗号化されていない環境変数が流出した可能性があります。ShinyHuntersを名乗る攻撃者は200万ドルの身代金を要求しており、影響範囲は限定的ながら、放置は許されない状況です。
「自分のプロジェクトは大丈夫だろう」という根拠のない楽観論を捨て、まず動くこと。 それが今この瞬間に求められる正しい姿勢です。
サーバー管理、丸ごとお任せください
サーバー保守・運用
監視・障害対応・パフォーマンス改善まで、安定稼働をサポートします
※ 通常1営業日以内にご返信します
Vercel運用でご不安な点はFivenine Designにご相談ください
弊社・Fivenine Designは神奈川を拠点に20年以上、Laravel・WordPress・Next.jsを活用したWeb開発を手がけてきました。Vercel上でのNext.jsプロジェクト運用はもちろん、セキュリティ観点での環境変数管理・インフラ設計の見直しも対応しております。
「自社のVercel環境が今回の件で問題ないか確認してほしい」「本番環境のセキュリティ診断をお願いしたい」といったご相談は、お気軽にお問い合わせください。初回のヒアリングは無料で承っております。
参考出典