対象:Vercelでアプリをデプロイしている開発者・運用者、環境変数に本番の秘密(APIキー、データベースの認証情報、署名鍵など)を置いているチーム、Google Workspaceの管理者、そして同じ仕組みのPaaSを使っている人。本記事はVercelの公式発表(セキュリティ速報)と公式ドキュメントにもとづく解説で、攻撃の手順や侵害の痕跡(IoC)の値は扱いません。
Vercelの利用者が今日やること
Vercelからの連絡を確かめる——来ていなくても次の手順へ進む
Vercelは、影響を確認した顧客に直接連絡し、認証情報の即時ローテーションを勧めたとしています。4月22日の更新では、調査を広げた結果追加で見つかった少数のアカウントにも通知したと書いています。まず、チームのオーナーや請求先など、Vercelからの連絡が届くアドレスを確認してください。ただしVercelは、以下の見直しを連絡の有無にかかわらず従うべき推奨として挙げています。連絡が来ていないことは、何もしなくてよい理由にはなりません。
「sensitive」でない環境変数を洗い出し、秘密から順にローテーションする
Vercelは、sensitiveに設定されていなかった環境変数のうち、APIキー、トークン、データベースの認証情報、署名鍵などを、漏れた可能性があるものとして優先的にローテーションするよう求めています。ダッシュボードの環境変数の一覧には、変数ごとに Config(読める)か Secret(書き込み専用)かのラベルが表示されます。Configのラベルが付いた秘密が、今日の作業の対象です。プロジェクト単位の変数だけでなく、チーム単位で共有している変数も見てください。
ローテーションは「新しい鍵を入れて再デプロイ → 古い鍵を無効化」の順で
Vercelのドキュメントは、止めずに入れ替える順序として次を示しています。①接続先のサービス(データベースやAPIの提供元)で新しい認証情報を発行する(古いものはまだ消さない)、②Vercelの環境変数を新しい値に更新する、③再デプロイする(チーム単位の変数なら、それを使う全プロジェクト)、④動作を確かめてから古い認証情報を無効化する。環境変数を書き換えただけでは、動いているデプロイは古い値のままです。そして、④まで終えて初めて、漏れた値は使えなくなります。
新しい値は Secret として登録する
ローテーションで作った新しい値は、Secret(書き込み専用)として保存します。Vercelは発表の中で、sensitiveの機能を使えば秘密の値が今後読み取られないよう保護できるとしています。2026年9月30日時点のドキュメントでは、Secretは保存後に値が表示されず、変更は新しい値の上書きで行います。また、以前はProductionとPreviewに限られていたSecretがDevelopmentでも使えるようになっています。区分の選び方は、この記事の後半の比較表を参照してください。
プロジェクトを消す前に、必ずローテーションする
Vercelは、プロジェクトやアカウントを削除するだけではリスクはなくならないと明記しています。漏れた秘密は、接続先のデータベースやAPIでは有効なままだからです。「この機会にVercelをやめる」「古いプロジェクトを片付ける」場合も、先に接続先で鍵を無効化してから削除してください。
アクティビティログと最近のデプロイを確認する
Vercelは、アカウントと環境のアクティビティログ(ダッシュボードまたはCLIで確認できる)に不審な操作がないかを確認し、最近のデプロイに、身に覚えのないものや不審なものがないかを調べるよう勧めています。疑わしいデプロイは削除するよう求めています。環境変数の値を誰かが見た形跡がないかも、この記録で確認します。
Deployment Protectionを Standard 以上にし、トークンを入れ替える
Vercelは、Deployment Protectionを最低でも Standard に設定すること、Deployment Protectionのトークンを設定している場合はそれもローテーションすることを勧めています。Standardは、Vercelのドキュメントでは多くのプロジェクトに推奨される設定で、本番の公開ドメイン以外のプレビューやデプロイごとのURLを保護します。
Vercelアカウントに多要素認証を設定する
Vercelは、認証アプリまたはパスキーによる多要素認証の設定を勧めています。SMSより強い方式を選ぶ理由は 多要素認証の選び方 にまとめています。
Google Workspaceの管理者は、発表に掲載されたOAuthアプリを検索する
Vercelは、侵入の起点になったAIツールのGoogle Workspace向けOAuthアプリの識別子を発表に掲載し、Google Workspaceの管理者とGoogleアカウントの所有者に、そのアプリが使われていないかをすぐに確認するよう勧めています。Vercelによれば、このOAuthアプリは多くの組織にまたがる広い侵害の対象で、利用者は数百に及ぶ可能性があります。Vercelを使っていない組織も対象になり得ます。識別子は下の出典にあるVercelの発表で確認してください。
社員がつなぐAIツールとOAuthアプリの権限を絞る
Vercelの発表によれば、攻撃者は外部のAIツールへのアクセスを足がかりに、その社員のGoogle Workspaceアカウントを乗っ取り、そこからVercelのアカウントへ進みました。社員が便利なAIツールを「Googleでログイン」「Googleドライブへのアクセスを許可」で会社のアカウントにつなぐのは、どの組織でも毎日起きていることです。以下は、それをGoogle Workspaceの管理者が今日できる単位に置き換えたものです。
会社のアカウントにつながっている外部アプリの一覧を出す
Googleの管理者向けヘルプ「Control which apps access Google Workspace data」によれば、管理コンソールでは、組織のデータにアクセスしたアプリの一覧、どのユーザーが許可したか、各アプリが要求した権限の範囲(OAuthスコープ)を確認できます。まず一覧を出し、誰も説明できないアプリと、ドライブやメールの全体を読める範囲を持つアプリに印を付けます。
使っていないアプリはブロックし、残すアプリは範囲を絞る
同じヘルプによれば、アプリごとに「信頼できる」「制限付き」「特定のGoogleデータのみ」「ブロック」のいずれかを設定できます。業務で使うと決めたアプリは必要なデータだけに絞り、それ以外はブロックにします。
未設定のアプリを、社員が自由につなげないようにする
管理者が設定していない外部アプリについて、社員が自由にアクセスを許可できるかを組織の方針として決められます。基本的なログイン情報しか求めないアプリだけを許す設定にしておくと、新しいAIツールを試すときに管理者の確認を一度はさむ運用にできます。Gmailやドライブについては、メールの送信やファイルの削除など危険度の高い権限を個別に制限することもできます。
本番の管理画面に入れるアカウントと、AIツールをつなぐアカウントを分ける
これは当サイトの提案です。今回の経路では、AIツールをつないでいたGoogleアカウントが、そのままVercelのアカウントへの入口になりました。本番環境やホスティングの管理権限を持つ人は、それらにログインするアカウントに、試用中のAIツールをつながないことを検討してください。つなぐなら、業務データへのアクセス範囲を絞った別のアカウントで。
何が起きたのか(Vercelの発表より)
以下はすべて、Vercelのセキュリティ速報「Vercel April 2026 security incident」に書かれた内容です。Vercelは速報を複数回更新しており、4月24日以降は重要な更新があるときだけ更新する方針に切り替えています。
2026年4月19日
Vercelが社内システムへの不正アクセスを公表。インシデント対応の専門家に調査を依頼し、法執行機関に通知したと発表。外部の組織が自分の環境を点検できるよう、OAuthアプリの識別子を公開。4月19日(同日の更新)
攻撃の起点(外部のAIツールの侵害)と、追加の推奨事項を掲載。4月20日
侵害された認証情報の定義を明確化し、推奨事項を追加。同日、npmパッケージが改ざんされていないことを確認したと発表し、多要素認証の案内と製品の改善を追加。4月22日
調査を広げた結果を公表。今回の事案で侵害された少数のアカウントを追加で確認し、通知。別に、今回とは別とみられる侵害の兆候がある少数の顧客アカウントも見つけ、個別に対応策を伝えたとした。4月23日
調査結果の記述をさらに明確化。4月24日
新たな更新はなし。以後は、重要な更新があれば影響を受ける顧客に知らせ、速報を更新する方針に。
- 起点
- Vercelの社員が使っていた外部のAIツールの侵害。そのツールのGoogle Workspace向けOAuthアプリが、多くの組織にまたがる広い侵害の対象だった
- 経路
- 社員のGoogle Workspaceアカウントの乗っ取り → その社員のVercelアカウント → Vercelの環境 → システムをたどって環境変数を列挙・復号
- 取得されたもの
- 一部の顧客の、sensitiveに設定されていない(復号すると平文になる)環境変数
- 追加の確認
- 今回の事案で侵害された少数のアカウントを追加で確認し通知。別に、今回とは別とみられる侵害の兆候がある少数のアカウントがあり、Vercelのシステムが起点ではないとみられる
- 影響がないとしたもの
- Vercelが公開したnpmパッケージ(GitHub、Microsoft、npm、セキュリティ企業と協力して確認)
- Vercelの評価
- 攻撃者は、動きの速さとVercelの製品のAPIへの深い理解から高度な能力を持つと評価。インシデント対応の専門企業、業界の同業者、法執行機関と連携
- 製品の改善
- 環境変数の管理の改善(より強い既定値、保護策、製品内の説明)、チーム全体の環境変数の管理とセキュリティの一覧、アクティビティログの使いやすさの改善
読み方の注意:件数は公表されておらず、ツールの名前も本記事では扱わない
Vercelは影響を受けた顧客の数を「限られた一部」「少数」と表現しており、具体的な数は公表していません。当サイトは公表されていない数字を推測で載せません。また、Vercelの発表は起点になったAIツールの提供元の名前を挙げていますが、当サイトの方針として、被害を公表した組織以外の第三者の名前は記事に載せず、役割(「外部のAIツール」)で書いています。自分の組織への影響を調べるには、名前ではなく、Vercelの発表に掲載されたOAuthアプリの識別子で確認してください。
どこで止められたか
① 外部のAIツール
OAuthアプリが広く侵害される
↓→
止め所
つなげるアプリと権限の範囲を管理者が絞る
② 社員のGoogleアカウント
乗っ取られ、Vercelへの入口になる
↓→
止め所
本番の管理用アカウントに試用中のツールをつながない
③ Vercelの環境
環境変数が列挙される
↓→
止め所(利用者側)
ここは利用者には止められない。だから④で決まる
④a 読める区分(Config)
復号されて平文で取得された
④b 書き込み専用(Secret)
Vercelが取得されたと書いているのは④aのみ
Config(読める)——置いてよいのはここまで
- 公開しても困らない値:公開用のURL、機能フラグ、ログの出力レベル
- ブラウザに届く値:
NEXT_PUBLIC_で始まるなど、そもそも利用者の手元に配られるもの - 後から見返す必要がある設定値:リージョン名、バケット名など、それ単体では何も開けないもの
Secret(書き込み専用)にすべきもの
- APIキー・アクセストークン:決済、メール送信、AIのAPIなど
- データベースの接続文字列とパスワード
- 署名鍵・暗号鍵:セッションやJWTの署名、Webhookの検証用の秘密
- 外部サービスの管理用の認証情報:クラウドのアクセスキーなど
当サイトの視点:「便利だから読める」は、侵入者にとっても読める
環境変数を「読める」区分にしておく理由は、ほとんどの場合あとで値を確認したいからです。しかし今回の事案は、その区分がプラットフォームの内側に入り込んだ者にとっても読めることを示しました。Vercelが取得されたと書いているのは、この区分の変数だけです。判断の基準は1つで十分です。「この値を、あとで画面で見返す必要があるか」。見返す必要がないなら Secret。見返したい秘密は、本来の保管場所(パスワードマネージャーや接続先の管理画面)で見ればよく、デプロイ先に読める形で置く理由にはなりません。
Vercelのドキュメントでは、ProductionのSecretにPreviewやDevelopmentと別の値を必須にするチームの方針(Separate Production Secret Values)も用意されています。プレビュー環境の鍵が漏れても本番が開かないようにする、もう1つの被害を小さくする線引きです。
同じ考え方は、Vercel以外のPaaSやCIにも当てはまります。秘密を「読める」形で置いている場所は、あなたの管理画面の外にもう1つの保管場所を持っているのと同じです。秘密をどこに置き、どう分けるかの基本は .envとAPIキーは何が危ないのか にまとめています。
外部の開発ツールを入口にした連鎖は、2026年5月のTanStack・Nx Console・GitHubの事案でも起きています。そちらはnpmパッケージと拡張機能という「コードの配布経路」が入口で、鍵が盗まれても1人では公開できない構造の話を TanStack・Nx Console・GitHubの連鎖で開発者が確認すること にまとめています。今回のVercelの事案の入口は、コードではなくOAuthでつないだSaaSの権限でした。CIで動くツールそのものが入口になった例は Trivyのサプライチェーン侵害 を参照してください。
出典(公開記録)
本記事の事実関係は、以下の公開情報にもとづきます。攻撃の手順や、侵害の痕跡(IoC)の値、攻撃した側を特定する情報は扱っていません。
- Vercel「Vercel April 2026 security incident」(セキュリティ速報、2026年4月19日公開、4月24日更新) — vercel.com
- Vercel Docs「Sensitive environment variables」(Config と Secret の区分、2026年8月28日更新版) — vercel.com
- Vercel Docs「Rotating environment variables」(止めずに入れ替える手順) — vercel.com
- Vercel Docs「Deployment Protection」(Standard Protection) — vercel.com
- Google Workspace 管理者ヘルプ「Control which apps access Google Workspace data」(外部アプリのアクセス管理) — knowledge.workspace.google.com
更新履歴
2026-09-30:初版。Vercelのセキュリティ速報(4月24日更新版)と、2026年9月30日時点のVercelの公式ドキュメントにもとづく。Vercelが速報を更新した場合は、本記事も更新します。
次に読む
- 秘密の置き方の基本:.envとAPIキーは何が危ないのか / .envファイルとは
- 開発ツールが入口になった別の事案:TanStack・Nx Console・GitHubの連鎖で開発者が確認すること / Trivyのサプライチェーン侵害でCIの利用者がやること
- 正規の認証情報で起きる事案:2026年の情報漏えいは「正規の認証情報」で起きている
- アカウントの守り:多要素認証の選び方
- 秘密をリポジトリに置かない:gitleaksでコミット前に秘密を止める
- 2026年の他の事案:情報漏えい・サイバー攻撃の一覧(国内・海外)
よくある質問
QVercelのインシデントでは何が漏れたのですか?
Vercelの発表によれば、一部の顧客について、Vercelに保存されていた環境変数のうち「sensitive」に設定されていないもの(復号すると平文になるもの)が不正に取得されました。Vercelはこれらの値(APIキー、トークン、データベースの認証情報、署名鍵など)を、漏れた可能性があるものとして優先的にローテーションするよう勧めています。
Q自分が対象かどうかはどう分かりますか?
Vercelは、影響を確認した顧客に直接連絡し、認証情報の即時ローテーションを勧めたとしています。その後の調査で追加で見つかった少数のアカウントにも通知済みです。ただしVercelは、連絡の有無にかかわらず従うべき推奨として、sensitiveでない環境変数の見直しとローテーション、アクティビティログと最近のデプロイの確認を挙げています。連絡が来ていなくても、秘密を読める区分で置いていたなら、ローテーションしておくのが安全です。
Qsensitive(Secret)に設定していた環境変数は大丈夫ですか?
Vercelの発表で、取得されたと書かれているのはsensitiveでない環境変数です。Vercelはsensitiveの機能を使えば、秘密の値が今後読み取られないよう保護できるとしています。2026年9月30日時点のVercelのドキュメントでは、環境変数は「Config(保存後も読める)」と「Secret(保存後は書き込み専用)」に分かれ、従来のsensitiveな環境変数はSecretとして扱われます。
Qプロジェクトやアカウントを削除すれば安全ですか?
いいえ。Vercelは、プロジェクトやアカウントを削除するだけではリスクはなくならないと明記しています。漏れた秘密は本番のシステムへのアクセスにまだ使える可能性があるため、削除する前に必ずローテーションするよう求めています。
Q侵入の起点は何だったのですか?
Vercelの発表によれば、起点はVercelの社員が使っていた外部のAIツールの侵害です。そのツールのGoogle Workspace向けOAuthアプリが、多くの組織にまたがる広い侵害の対象になっており、利用者は数百に及ぶ可能性があるとVercelは述べています。Vercelは、Google Workspaceの管理者とGoogleアカウントの所有者に、発表に掲載したOAuthアプリの識別子の利用有無をすぐに確認するよう勧めています。
QVercelが公開しているnpmパッケージ(Next.jsなど)は安全ですか?
Vercelは、GitHub、Microsoft、npm、セキュリティ企業と協力して確認した結果、Vercelが公開したnpmパッケージは改ざんされておらず、改ざんの証拠もないとしています。