🏠 ホーム ニュース 📖 解説記事 📚 トピック解説 🏷️ タグ一覧 ℹ️ About
ツール
💰 API料金計算機 NEW
🔍 記事を検索
カテゴリ
📡 RSSフィード
Follow
X (Twitter) 🧵 Threads
🔧 ツール
💰API料金計算機
トピック
🧠 Claude Code 🤖 AIエージェント 🎵 AIコーディング / Vibe Coding 🔌 MCP(Model Context Protocol) 🔍 RAG & ナレッジシステム 💬 LLM / ローカルAI 🔒 セキュリティ ⚙️ DevOps & 自動化 💰 Claude API & 料金 🎨 UI生成 & デザインシステム
ニュース一覧 🏷️タグから探す
Subscribe
📡 RSSフィード
Breaking News
2026.04.20 10:00 security devops nextjs vercel cve

【速報】Vercel不正アクセス・情報漏洩:GitHub/NPMトークン流出とNext.js CVE緊急対処法

Vercel April 2026 Security Breach
🔓 ニュース
【速報】Vercel不正アクセス・情報漏洩:GitHub/NPMトークン流出とNext.js CVE緊急対処法
TL;DR
Vercelでセキュリティ侵害・情報漏洩リスクが発覚。Google OAuth不正アクセス経由でGitHub/NPMトークンが流出の可能性。ShinyHunters $2M要求。環境変数の緊急ローテーション手順とNext.js CVE-2026-23869/23864パッチ適用方法を解説。
進行中(2026年4月20日 夕方更新)
本記事は入手した続報をもとに更新しています。Context.aiが侵入経路として特定され、身代金200万ドルの要求・暗号資産プロジェクトへの影響拡大・IPO前のタイミングという重大性が新たに判明しています。

最新続報(4月20日更新)

Context.aiが侵入経路として正式特定

VercelのCEOが声明の中で、今回の侵入に使われたサードパーティAIツールが「Context.ai」であると明言した。Context.aiはAIモデルのユーザー分析・評価を支援するSaaSで、そのGoogle Workspace OAuthアプリが侵害を受け、Vercel従業員のGoogle Workspaceへの不正アクセスが実現したとされる。

この手口はサードパーティSaaS経由のOAuthチェーン侵害の典型例だ。被害を受けた組織はContext.aiを直接利用していなくても、Context.aiのOAuthアプリを自社のGoogle Workspaceに承認していた場合は影響範囲に入る可能性がある。

Context.aiのOAuth接続を確認すること
Google Admin Console → セキュリティ → APIコントロール → アプリへのアクセスを管理 で「Context.ai」のアプリが承認されている場合は即時ブロックを推奨。すでにアクセスが発生していた可能性があるため、OAuthログで過去のアクセスイベントも確認すること。

身代金200万ドルの要求

The Informationの報道によると、攻撃者はVercelに対して200万ドル(約2億8,000万円)の身代金を要求した。要求に応じなければ、入手したとするアクセスキー・ソースコード・データベースデータをオープンに売却すると主張している。Vercelが身代金要求に応じたかどうかは公式に確認されていない。

暗号資産・DeFiプロジェクトへの影響拡大

CoinDeskの報道では、Vercelをインフラとして利用していた複数のDeFiアプリや暗号資産プロジェクトが、侵害発覚から数時間以内に環境変数の緊急監査を開始したと伝えている。特にリスクが高いとされるのは、環境変数にRPCエンドポイントや秘密鍵フラグメントを直接設定していたプロジェクトだ。

リスクが高い環境変数の種別 悪用された場合の影響
RPCエンドポイントURL 接続先を偽造されるMitM攻撃の可能性
ウォレット秘密鍵フラグメント 再結合による不正送金の可能性
スマートコントラクト管理者キー コントラクト設定の不正変更
DeFiプロトコルAPIキー 価格操作・流動性操作の可能性

ウォレット秘密鍵やコントラクト管理者キーをVercel環境変数に保存すること自体が設計上の問題であり、今回の侵害はその危険性を改めて示した。

IPO前のタイミングが持つ意味

StartupFortuneの報道によると、Vercelは今回の侵害発覚前から上場(IPO)を計画中だったとされる。SEC規制では上場前のマテリアルなセキュリティインシデントは開示対象となりうることに加え、投資家やアンダーライターによるデューデリジェンス審査にも影響する可能性がある。現時点でVercel側からIPOスケジュールへの具体的な影響についての公式コメントは出ていない。

何が起きたか

Vercel(バーセル)とは、世界中のWebエンジニアやスタートアップが使う「Webサイト・アプリのホスティングサービス」だ。Next.jsの開発元でもある。デプロイしたウェブアプリのコードや環境設定はVercelのサーバーで管理されており、今回の侵害はその内部システムが標的となった。

2026年4月19日、VercelがGoogle WorkspaceのOAuthアプリを悪用した内部システムへの不正アクセスを公式確認した。公式セキュリティブレティンには「特定のVercel内部システムへの不正アクセスを含むセキュリティインシデントを確認した。限定的なサブセットの顧客に直接連絡している」と記されている。

侵入の起点となったのは、複数の組織が利用していた小規模なサードパーティAIツールのGoogle Workspace OAuthアプリが、より広範な侵害を受けたことだ。そのOAuthアプリを通じてVercelの内部システムへのアクセスが許可されてしまったとされる。

被害の全貌は調査中だが、サイバー犯罪フォーラムに「ShinyHunters」を名乗る攻撃者が出現し、内部データベース情報、580件の従業員アカウント情報、GitHub/NPMトークンを含む一式のデータを200万ドル(約2億8,000万円)で販売すると主張した。Vercelのサービス自体は侵害中も継続稼働しており、現時点でホスティングされているウェブサイトやAPIの可用性に影響はない。

同時期に、React Server ComponentsおよびNext.jsに影響する複数のCVE(CVE-2026-23869、CVE-2026-23864ほか)も公開されており、Vercelプラットフォームを使う開発者は内部侵害対応とCVEパッチの双方に同時対応が必要な状況だ。

緊急:今すぐ対応が必要
Vercelから直接連絡がなくても、GitHubトークン・NPMトークン・APIキー・データベース認証情報は今すぐローテーションすることをVercelは推奨している。本記事の「今すぐやるべき5つの緊急対処アクション」セクションを参照のこと。

影響を受ける可能性のある人

1. Vercelユーザー(最優先)

Vercelでプロジェクトをホスティングしている開発者・チームは、今回の侵害で最も直接的な影響を受ける可能性がある。Vercelから直接連絡が届いていない場合でも、予防的なローテーションが公式に推奨されている。

今すぐ対処が必要
プロジェクトで使用しているGitHubトークン・NPMトークン・APIキー・データベース接続文字列・OAuthシークレット等のすべてをローテーションする。ビルドログにこれらの値が誤出力されていないかも確認すること。

2. Next.jsユーザー(Vercel未使用でも)

VercelにデプロイしていなくてもNext.jsを使っているプロジェクトは、npmパッケージの整合性確認を推奨する。攻撃者がNPMトークンを保有していた場合、next@vercel/ai等のパッケージへの悪意ある変更が理論上は可能だ。現時点でパッケージ改ざんは未確認だが、念のため以下を実施しておきたい:

# npmパッケージの署名を検証(npm 9.x以降で利用可能)
npm audit signatures

# 依存パッケージの既知の脆弱性チェック
npm audit

# lockfileに予期しない変更がないか確認
git diff package-lock.json
npm audit signaturesとは
インストール済みパッケージがnpmレジストリの正規の署名と一致するかを検証するコマンド。改ざんされたパッケージが混入している場合、署名の不一致として検出できる。npm 9.x以降で利用可能で、Node.js 18以降の環境では標準で使える。

3. Google Workspace管理者

今回の侵害はサードパーティAIツールのOAuthアプリが起点となった。同じ手口で他組織のGoogle Workspaceも標的になりうる。特に多くのAIツールやSaaS連携を承認している環境では、定期的な棚卸しが重要だ。

今すぐできる予防チェック
Google Admin Console → セキュリティ → APIコントロール → アプリへのアクセスを管理 を開き、不審・不要なサードパーティOAuthアプリを確認・無効化する。承認した覚えのないアプリや、要求しているスコープが過大なアプリは削除対象。

攻撃の起点:不正OAuthアプリによるGoogle Workspace侵害

OAuthアプリとは何か(初心者向け)

「OAuthアプリ」とは、「Googleアカウントでログイン」「GitHubでサインイン」のような第三者への認証委譲の仕組みを使うツールのことだ。たとえばSlackの「Googleカレンダー連携」を許可すると、SlackはあなたのGoogleアカウントの一部にアクセスできるようになる。今回の侵害では、Vercelが利用していたサードパーティAIツールのOAuth権限が奪われ、それを経由してVercel社内システムへのアクセスが可能になってしまった。

公式ブレティンが特定した侵害の起点は、第三者が運営する小規模AIツールのGoogle Workspace OAuthアプリだ。このOAuthアプリがより大規模な別の侵害を受けており、その侵害済みアプリの権限を通じてVercelの内部システムにアクセスされたとされる。

確認されたIoC(IoC = Indicators of Compromise、「侵害の指標」の略。攻撃者が使ったツール・IPアドレス・アプリIDなど、侵害が起きたことを示す具体的な証拠や痕跡のこと)として、以下のOAuthアプリIDが公式ブレティンで公開されている:

110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com

現時点でVercelが公開しているIoCはこのOAuthアプリIDのみだ。IPアドレスや追加ドメインなどの侵害指標については、調査継続中のため未公開となっている。

このOAuthアプリIDは、Google Workspace管理コンソールの「セキュリティ → APIコントロール → アプリへのアクセスを管理」で確認できる。自社・自チームの環境でこのアプリIDが承認済みになっている場合は、即座にアクセスを無効化する必要がある。

OAuthベースの侵害は、ユーザー名とパスワードを直接盗まなくても認証フロー自体を悪用できるため、多要素認証(MFA)を有効にしていても検知・防御が困難だ。

flowchart TD A["攻撃者"] -->|"広範な侵害で
OAuthアプリ取得"| B["サードパーティAIツールの
Google Workspace OAuthアプリ"] B -->|"正規の権限を悪用"| C["Vercel内部システム"] C --> D["内部データベース"] C --> E["従業員アカウント情報
(580件・主張)"] C --> F["GitHub / NPMトークン
(主張)"] C --> G["ビルドログ・環境変数
(主張)"] D & E & F & G --> H["サイバー犯罪フォーラムで
$2M販売要求"] style B fill:#7b341e,color:#fff style H fill:#742a2a,color:#fff

Google Workspace管理者が確認すべきIoC対応手順

Google Workspace管理者は以下の手順で、問題のOAuthアプリが自環境で承認されていないか確認できる:

Google Admin Console (admin.google.com)
└─ セキュリティ
   └─ APIコントロール
      └─ アプリへのアクセスを管理
         └─ 検索: "110671459871"
            → 該当アプリが見つかった場合 →「アクセスをブロック」に設定

過去のアクセス履歴の確認も重要だ:

Google Admin Console
└─ レポート
   └─ 監査と調査
      └─ OAuth ログイベント
         └─ フィルタ: Client ID = "110671459871-..."
            → 過去のアクセスイベントを日付・ユーザー別に調査

個人のGoogleアカウントも確認しておきたい場合は、myaccount.google.com/permissions を開き、接続済みアプリの一覧から不審なアプリを探す。上記Client IDに一致するアプリがあればアクセスを削除する。

OAuthアプリの事前審査でリスク低減
Google Workspaceでは「管理者が承認したアプリのみ接続を許可する」設定が可能。APIコントロール → アプリへのアクセス管理 → 「信頼済みアプリのみ許可」に設定しておくと、今回のような未審査OAuthアプリ経由の侵害を事前に防ぎやすくなる。

Vercel情報漏洩リスク:流出した可能性のある情報と影響範囲

攻撃者が販売すると主張している内容は以下の通り。これらはすべて攻撃者側の未検証の主張であり、Vercelは現時点で具体的なデータ種別の公式確認をしていない点に注意が必要だ。

主張されるデータ種別 詳細 想定リスク
従業員アカウント情報 580件(名前・メール・ステータス) なりすまし・ソーシャルエンジニアリング
内部データベース情報 Vercel内部システム(詳細不明) サービス構成・設計情報の漏洩
GitHub / NPMトークン Vercel統合に紐づくトークン コードリポジトリへの不正アクセス
APIキー・アクセスキー ビルドプロセス・CI/CDで使用 インフラへの不正アクセス
Vercel Linearデータ 内部プロジェクト管理ツール 開発情報・ロードマップ漏洩

最も深刻なリスクはGitHub/NPMトークンだ。これらがリポジトリへの書き込み権限を持つ場合、攻撃者がコードを改ざんしてサプライチェーン攻撃を仕掛けることができる。GlassWorm不可視Unicodeサプライチェーン攻撃の事例が示すように、一度コードに混入したマルウェアは通常のコードレビューでは発見困難だ。

Vercelが明言しているのは「センシティブ変数として設定されていた環境変数は保護されている」という点だ。Vercelのセンシティブ環境変数機能はビルドログや関数ランタイムに値を露出しない設計になっており、今回の侵害でも保護が機能したとされる。

攻撃者の素性:ShinyHunters関与疑惑の真相

サイバー犯罪フォーラムに現れた攻撃者は「ShinyHunters」を名乗った。ShinyHuntersは過去にTicketmaster(5億4,000万件)、Santander銀行、AT&Tなどの大規模侵害に関与したとされる著名な脅威アクターだ。

しかし、BleepingComputerの調査によると、本家ShinyHuntersのメンバーは今回のVercel侵害への関与を否定している

この状況から以下の可能性が考えられる:

セキュリティ研究者Slow Fogの分析によると「内部データベースと鍵情報の漏洩に関連している可能性が高い」としているが、主張されたデータの信頼性については「不確かな情報として扱うべき」との見解だ。

攻撃者の主張は未検証
攻撃者が主張するデータ種別・規模はVercelが公式確認したものではない。しかし不正アクセス自体はVercelが認めている事実であり、予防的なクレデンシャルローテーションは必須の対応だ。

React Server Components 連続CVE:Vercel関連の脆弱性が続発

CVEとは(Common Vulnerabilities and Exposures)、ソフトウェアの脆弱性(セキュリティ上の欠陥)に対して世界共通で付けられる識別番号のこと。たとえば「CVE-2026-23869」という番号があれば、世界中のセキュリティ研究者が同じ脆弱性を指して話せるようになる。CVSSスコアは深刻度を0.0〜10.0で数値化したもので、7.5は「高深刻度」に相当する。

DoS(Denial of Service)攻撃とは、大量のリクエストや悪意のあるデータを送りつけてサーバーを過負荷状態にし、正規のユーザーが使えなくする攻撃のこと。今回のCVEは攻撃者が特定の形式のリクエスト1つを送るだけでサーバーをダウンさせられる危険なタイプだ。

Vercelの侵害が表面化した同時期に、React Server ComponentsとNext.jsに影響するCVEが複数公開されている。これらは内部侵害とは独立した脆弱性だが、Vercelプラットフォームを使う開発者は同時対応が必要だ。

CVE 一覧と影響バージョン比較

CVE番号 深刻度 CVSS 影響を受けるバージョン 種別 修正バージョン
CVE-2026-23869 7.5 Next.js 13.x〜16.x DoS(CPU枯渇) 15.5.15+, 16.2.3+
CVE-2026-23864 7.5 React 19.x, Next.js 13.x〜16.x DoS(OOM/クラッシュ) React 19.0.4+, Next.js 15.0.8+
CVE-2025-55184 React 19.0.0〜19.2.1 DoS(CPU枯渇) React 19.0.2, 19.1.3, 19.2.2
CVE-2025-55183 React 19.0.0〜19.2.1 ソースコード露出 React 19.0.2, 19.1.3, 19.2.2
CVE-2025-67779 上記CVE-2025-55184/55183の不完全修正 フォローアップパッチ 同上

いずれもVercel WAFが自動的にルールを展開しているが、Vercelは「WAFによる完全な保護は保証されない」と明言しており、アプリケーション側でのパッチ適用が唯一の完全対処だ。App Routerを使用していない場合(Next.js Pages Routerのみ)、RSC系のCVEの影響は受けない。

CVEの技術的仕組み:なぜDoSが成立するのか

CVE-2026-23869:App Router Server Functionエンドポイントへの攻撃

CVE-2026-23869はNext.jsのApp Routerを使用するServer Function(Server Actions、Route HandlersのPOSTエンドポイントなど)に影響する。

攻撃者は以下のような特殊に細工されたHTTPリクエストをApp Routerエンドポイントに送信する。このリクエストを受けたサーバーはReact Server Componentのデシリアライズ処理で過度なCPU消費に陥り、正規ユーザーへの応答が不能になる:

# 攻撃パターンの概念(研究・理解目的)
import requests

# 細工されたペイロードをServer Actionエンドポイントに送信
response = requests.post(
    "https://target.vercel.app/api/some-endpoint",
    headers={
        "Content-Type": "text/x-component",
        "Next-Action": "valid-action-id"
    },
    data=b"malicious_rsc_payload"  # デシリアライズ時にCPU枯渇を引き起こす構造
)

CVE-2026-23864:React Server Components経由のDoS

CVE-2026-23864はより広範なReact Server Components全般に影響し、以下の3つの障害を引き起こす可能性がある:

  1. サーバークラッシュ:プロセス全体が強制終了
  2. OOM(Out of Memory):メモリを使い尽くして強制停止
  3. CPU枯渇:100%のCPU使用率が継続してレスポンス不能

自分のNext.jsアプリがApp Routerを使っているかの確認方法:

# App Routerの使用確認(appディレクトリの存在チェック)
ls -la ./app/

# package.json でNext.jsバージョン確認
cat package.json | grep '"next"'
# → "next": "^15.x.x" かつ ./app/ が存在する → 影響を受ける可能性あり
# → "next": "^15.x.x" かつ ./pages/ のみ → Pages Router使用、RSC CVEの影響なし

# 使用しているReact Server DOMパッケージの確認
cat package.json | grep -E '"react-server-dom'

CVE-2025-55183:ソースコード露出リスク

CVE-2025-55183は機密性に影響する珍しいタイプのCVEだ。Server Actionsのコンパイル済みソースコードが特定の条件下でHTTPレスポンスに含まれて返却される可能性がある。

Server Actionsにはデータベース接続文字列の処理ロジックやビジネスロジックが含まれることが多く、ソースコードの露出は二次的な脆弱性発見につながるリスクがある:

// Server Actionsの例
// このようなコードがソースとして露出する可能性がある
"use server";

export async function sensitiveAction(data) {
  // データベース接続文字列、内部APIのURLパターン、
  // ビジネスロジックの実装詳細が含まれる場合がある
  const db = await connect(process.env.DATABASE_URL);
  return db.query("...");
}

Vercelセキュリティ侵害への緊急対処:今すぐやるべき5つのアクション

「環境変数」「トークンローテーション」とは何か(初心者向け)

環境変数とは、アプリが動作するサーバー上に保存する「秘密の設定値」のことだ。たとえばデータベースへの接続パスワードや、決済サービスのAPIキーなど、コードに直接書くと危険な情報を安全に管理するために使う。

トークンとは、パスワードの代わりに使われる「一時的なアクセス証明書」のこと。GitHubのPersonal Access Token(PAT)はその代表例で、これを持つ者はあなたのリポジトリに対して設定した権限でアクセスできる。

ローテーションとは、既存のトークンやパスワードを削除して新しいものを発行し直すことだ。漏洩した可能性があるトークンを使えなくするための基本的な応急処置。

今回の侵害で攻撃者がこれらの情報を取得していた場合、古い値のままにしておくと攻撃者が引き続きアクセスできてしまう。それを防ぐために「ローテーション」が緊急対処として必要になる。

Action 1:環境変数の即時ローテーション

Vercelダッシュボードで全プロジェクトの環境変数を確認し、センシティブな値を再生成する:

# Vercel CLIを使って環境変数の一覧確認
vercel env ls --environment production

# 既存の変数を削除して新しい値に更新(例:DATABASE_URLの場合)
vercel env rm DATABASE_URL production
vercel env add DATABASE_URL production
# プロンプトに従い新しい値を入力

# 全環境(production / preview / development)を確認
vercel env ls

ローテーション後はVercelダッシュボードから手動で再デプロイし、新しい環境変数が適用されることを確認する。

Action 2:GitHubおよびNPMトークンの再生成

GitHubリポジトリとVercelの統合で使われるトークンは最優先で再生成する:

# GitHub CLIで現在の認証状態を確認
gh auth status

# GitHub設定画面でVercel統合に使っているトークンを特定・削除
# https://github.com/settings/tokens
# → "Vercel" に関連するトークンをすべてRevoke

# NPMトークンの確認(npmにログイン済みの場合)
npm token list
npm token revoke <token-id>

# Vercel側の統合を再認証
# ダッシュボード → Integrations → GitHub → Manage → Disconnect & Reconnect

GitHubのFine-grained Personal Access Tokensを使っている場合は、権限スコープの見直しも合わせて行う。侵害を受けたアクセスキーがStripeやSendGrid等の外部サービスに使われていた場合は、それらも再生成が必要だ。

Action 3:ビルドログの監査

過去のビルドログに機密情報が誤って出力されていないか確認する:

# Vercel CLIでデプロイ履歴確認
vercel ls --limit 20

# 特定デプロイのビルドログ確認
vercel logs [deployment-url]

# ログ中に誤って出力された機密情報がないか確認
# 以下のパターンに特に注意:
# - "DATABASE_URL=" の後に本番の値が続いている
# - "API_KEY=" や "SECRET=" の後に実際の値
# - "Bearer " の後にトークン文字列
# - Base64エンコードされた認証情報
センシティブ変数への移行で再発防止
Vercelの「Sensitive Environment Variables」機能に移行すると、その変数値はビルドログや関数のレスポンスに一切露出しなくなる。Vercelダッシュボード → Project Settings → Environment Variables → 各変数の「Sensitive」チェックボックスをONにする。

Action 4:不正OAuthアプリの確認と無効化

Vercel内部侵害のIoCとして特定されたOAuthアプリIDをGoogle Workspace管理コンソールで確認する:

確認対象のOAuth App ID(IoCとして公式に公開):
110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com

手順:

1. admin.google.com にアクセス
2. セキュリティ → APIコントロール → アプリへのアクセスを管理
3. 検索バーに "110671459871" を入力
4. 該当アプリが表示された場合は「アクセスをブロック」を選択
5. セキュリティ → レポート → 監査と調査 → OAuthログで
   そのアプリIDによる過去のアクセスイベントを調査
6. アクセスされていた場合はそのアプリが触れていたリソース
   (Google Drive、Gmail等)を確認

このアプリがどのような権限を持っていたかによって、追加調査が必要なリソース範囲が変わる。

Action 5:Next.js / Reactの緊急パッチ適用

CVE-2026-23869、CVE-2026-23864、CVE-2025-55184/55183に対応するバージョンにアップグレードする:

# 現在のバージョン確認
npx next --version
node -e "console.log(require('react/package.json').version)"

# pnpm(推奨)
pnpm add next@latest react@latest react-dom@latest

# npm
npm install next@latest react@latest react-dom@latest

# yarn
yarn add next@latest react@latest react-dom@latest

# アップグレード後のバージョン確認
# Next.js 15系: 15.5.15以上が必要
# Next.js 16系: 16.2.3以上が必要
# React 19.0.x: 19.0.4以上が必要
# React 19.1.x: 19.1.5以上が必要
# React 19.2.x: 19.2.4以上が必要
npx next --version
node -e "console.log(require('react/package.json').version)"

アップグレード後は必ずビルドとテストを実行する:

# ビルド確認
npx next build

# 型チェック(TypeScriptプロジェクトの場合)
npx tsc --noEmit

# テスト実行
npm test

Vercelのセンシティブ変数機能:今後のリスク低減策

Vercelのセンシティブ環境変数機能は、今回の侵害でも保護が機能したとVercelは説明している。この機能を理解し活用することが今後のリスク低減に直結する。

センシティブ変数と通常変数の違い

flowchart LR A["通常の環境変数"] --> B["ビルドログに
露出リスクあり"] A --> C["ダッシュボードで
値が表示される"] A --> D["APIレスポンスで
値が返却される"] E["センシティブ変数"] --> F["ビルドログに
値が表示されない"] E --> G["ダッシュボードで
値がマスクされる"] E --> H["APIで値が
返却されない"] style E fill:#22543d,color:#fff style F fill:#22543d,color:#fff style G fill:#22543d,color:#fff style H fill:#22543d,color:#fff style B fill:#742a2a,color:#fff style C fill:#742a2a,color:#fff style D fill:#742a2a,color:#fff

センシティブ変数に設定しても、コード中での参照方法は変わらない:

// センシティブ変数もNON-センシティブ変数も同じく参照できる
// サーバーサイドのコード内で
const apiKey = process.env.API_KEY; // センシティブ変数として設定されていても同様に使える

// ❌ 非推奨: NEXT_PUBLIC_プレフィックスで機密情報を設定
// NEXT_PUBLIC_API_KEY=secret → クライアントサイドに公開される
// センシティブ変数にしても NEXT_PUBLIC_* はビルド時にバンドルされるため意味がない

// ✅ 推奨: サーバーサイド専用の環境変数 + センシティブ設定
// API_KEY=secret → センシティブ変数として保護

センシティブ変数への移行手順

Vercelダッシュボード
└─ 対象プロジェクト → Settings
   └─ Environment Variables
      └─ 各変数の右端「...」メニュー → Edit
         └─ 「Sensitive」チェックボックスをON → Save
センシティブ変数に設定すべき変数の種類
APIキー、データベース接続文字列、OAuthクライアントシークレット、暗号鍵、Stripeシークレットキー、プライベートキー(PEM形式)、JWTシークレット等はすべてセンシティブ変数に設定する。NEXT_PUBLIC_プレフィックスを持つ変数はクライアントサイドに公開されるため、センシティブ変数の設定は機密保護に効果がない点に注意。

セキュリティ強化の追加施策:今回の侵害から学ぶ教訓

今回のVercel侵害は単なるパスワード漏洩ではなく、OAuthの信頼関係が侵害の連鎖を生み出した事例だ。同様の攻撃に対する防御を強化するための追加施策を整理する。

最小権限の原則をOAuthにも適用する

多くのサードパーティツールが「すべてのデータを読み取り・書き込み」を要求するが、実際に必要な権限は一部だけであることが多い。Google WorkspaceのOAuth権限審査では、必要最小限のスコープのみ承認する習慣が重要だ。

GitHub Actionsセキュリティガイド2026でも詳しく解説している通り、最小権限の設計は今やCI/CDとOAuth双方に必須の考え方だ:

# GitHub Actions: Fine-grained PATを使った権限限定の例
permissions:
  contents: read      # コード読み取りのみ
  packages: write     # パッケージ公開のみ
  deployments: write  # デプロイのみ
  # 不要な権限は明示的に付与しない

サードパーティツールの定期棚卸し

今回の侵害でVercelに接続していたサードパーティAIツールが起点となったように、信頼チェーンの末端にある第三者のツールも攻撃面になりえる。定期的に以下を実施することを推奨する:

Dependabotで自動アップデートを有効化する

Next.jsのセキュリティパッチへの追従を怠ることは、今後のリスク増大につながる。GitHub上でのDependabotの設定例:

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    # セキュリティアップデートは即時適用
    open-pull-requests-limit: 10

インシデントタイムライン

日時(日本時間推定) 出来事
2026年4月19日以前 サードパーティAIツールのGoogle OAuthアプリが侵害を受ける
2026年4月19日 Vercelがセキュリティインシデントを確認、公式ブレティン公開
2026年4月19日 ShinyHunters名乗る攻撃者がサイバー犯罪フォーラムに$2Mで販売要求を投稿
2026年4月19日 VercelがIR専門家・法執行機関に通知、調査開始
2026年4月19日 影響を受けた顧客への直接連絡を開始
2026年4月8日(前後) CVE-2026-23869公開(Next.js App Router DoS)
2026年4月頃 CVE-2026-23864公開(React Server Components DoS)
2025年12月11日 CVE-2025-55184/55183公開(React Server Components DoS/ソースコード露出)
2026年4月20日(朝) Vercel CEOがContext.aiを侵入経路として公式に特定・明言
2026年4月20日(朝) 攻撃者がVercelに200万ドルの身代金を要求
2026年4月20日(午前) 複数の暗号資産・DeFiプロジェクトが環境変数の緊急監査を開始
2026年4月20日(夕方)現在 調査継続中、最終的な影響範囲は未確定

AIエージェント時代の「信頼のハブ」問題:NPMトークン流出が持つ潜在的リスク

今回の侵害で特に注目すべきは、Vercelが現代のAIエージェントエコシステムにおいて複数の「信頼の入口」を同時に握るプラットフォームである点だ。

VercelはAIエージェント開発の要(かなめ)

Vercelは単なるホスティングサービスではない。AIエージェント開発に欠かせない複数のレイヤーを提供している:

これらが一社に集約されているため、Vercelの内部システムへの侵害は単独プロダクトの問題ではなく、AIエージェントエコシステム全体の信頼基盤への攻撃になりうる。

flowchart TD Vercel["Vercel
(信頼のハブ)"] Vercel --> AISDK["Vercel AI SDK
npm ai
月2000万DL以上"] Vercel --> NJS["Next.js
週400〜500万DL"] Vercel --> GW["AI Gateway
(APIプロキシ)"] Vercel --> SB["Sandbox
(実行環境)"] Vercel --> MCP["MCP Server
(コンテキスト連携)"] AISDK --> AgentCode["AIエージェント
コード"] NJS --> AgentCode GW --> AgentCode SB --> AgentCode MCP --> AgentCode AgentCode --> UserApp["ユーザーの
本番アプリケーション"] style Vercel fill:#7b341e,color:#fff

仮説的リスクシナリオ:もしNPMトークンが悪用されたら

以下は確認された攻撃経路ではなく、仮説的なリスクシナリオである
Vercelが内部侵害でNPMトークンを保有していたことは攻撃者側の主張として伝えられているが、実際にトークンが悪用されてnpmパッケージが改ざんされたという事実は確認されていない。しかし、こうしたリスクが現実に存在することを理解しておくことは、今後の防御設計に役立つ。

もし侵害されたNPMトークンが @vercel/* スコープへの書き込み権限を持っていた場合、理論上は以下のようなサプライチェーン攻撃が可能になる。この構造は2020年のSolarWinds攻撃(信頼された正規チャネルを悪用)と本質的に同じメカニズムだ:

flowchart LR A["攻撃者が
NPMトークン取得"] -->|"正規のpublish権限を悪用"| B["悪意あるコードを混入した
@vercel/aiやaiをnpm publish"] B -->|"通常の更新として配信"| C["世界中の開発者が
npm installで受け取る"] C --> D["AIエージェントのコードに
バックドア混入"] D --> E["APIキー・環境変数の
サイレント窃取"] D --> F["AIエージェントの
レスポンス改ざん"] style A fill:#742a2a,color:#fff style E fill:#742a2a,color:#fff style F fill:#742a2a,color:#fff

この種の攻撃が「サプライチェーン攻撃」として恐れられる理由は、正規の配布チャンネルそのものが攻撃経路になるためだ。悪意あるコードはコードレビューや静的解析をすり抜けやすく、Axios CVE-2026-40175のような開発者ツール妥協事例でも同様の構造が確認されている。

npmパッケージの整合性を検証する

現時点でnpmパッケージの改ざんは確認されていないが、予防的に以下でパッケージの整合性を確認できる:

# package-lock.jsonのintegrityハッシュを使った検証
npm ci  # インストール時に自動でハッシュ検証

# 特定パッケージのnpmレジストリ上のintegrityを確認
npm view ai dist.integrity
npm view next dist.integrity

# lockfileが最新か確認(予期しない変更がないか)
git diff package-lock.json
git diff pnpm-lock.yaml
lockfileをGit管理しセキュリティスキャンと連携する
package-lock.json や pnpm-lock.yaml を必ずGitでバージョン管理し、PRのdiffでlockfileの変更を確認する習慣をつける。Socket.devやSnykなどのツールをCI/CDに統合すると、依存関係に悪意あるコードが混入した場合に自動検知できる。

業界への影響と今後の展望

OAuthの「信頼の連鎖」が新たな攻撃面に

今回のVercel侵害は、AIツールエコシステム全体のサプライチェーンリスクを改めて浮き彫りにした。HackerAIのような自律セキュリティツールが普及する現代において、開発者は多数のサードパーティツールにGitHub・GoogleなどのOAuth権限を付与している。

しかし、そのツールのセキュリティ対策が不十分であれば、信頼チェーンが丸ごと侵害される。Vercelのような大手プラットフォームも、信頼したサードパーティAIツールが侵害されれば被害を受けることが今回証明された。

これは個別のパスワード漏洩対策とはまったく異なる脅威モデルであり、ゼロトラストの観点でOAuth権限の設計を見直す必要がある。

React Server Componentsの攻撃面が拡大している

React 18からReact 19へのApp Router採用が急速に進む中、Server ComponentsとServer Actionsはそれ自体が新しい攻撃面となっている。CVE-2025-55183のソースコード露出、CVE-2025-55184/CVE-2026-23869/CVE-2026-23864のDoSは今後も関連するCVEが続く可能性がある。

Pages RouterからApp Routerへの移行を進めているプロジェクトは、セキュリティ要件の変化にも注意が必要だ。

センシティブ変数の普及率向上が急務

Vercelによれば今回の侵害でセンシティブ変数に設定された環境変数は保護されたとしている。しかし多くのプロジェクトでこの機能が有効になっていないことが、潜在的なリスクとなっている。Vercelは今後、センシティブ変数の使用をより強く推奨する方向でUX改善を進める可能性がある。

まとめ:今日中に取るべきアクションのチェックリスト

今回のVercelセキュリティインシデントは、内部システムへの不正アクセスと同時期のReact/Next.js CVEという「二重の脅威」として開発者に降りかかっている。

Vercelを利用している場合は今日中に以下を完了させること:

センシティブ変数に設定されていた環境変数は今回の侵害でも保護されており、これを機にすべての機密変数をセンシティブ設定に移行することを強く推奨する。

Vercelのインシデント詳細は調査中であり、公式セキュリティブレティンが随時更新されている。定期的に確認し、追加のアクションが公開された際は速やかに対応すること。

参照ソース

B!
B! この記事をはてブに追加
よくある質問
Q. Vercelの侵害で自分のプロジェクトが影響を受けているか確認する方法は
Vercelダッシュボードの「Activity」ログで不審なアクセスを確認する。特に見知らぬIPからのデプロイ、環境変数の参照、APIトークンのアクセスが記録されていないか確認すること。Vercelから直接連絡がなくても、環境変数のローテーションは予防として推奨される。
Q. CVE-2026-23869とCVE-2026-23864の違いは何か
CVE-2026-23869はNext.jsのApp Router Server Functionエンドポイントへの細工リクエストによるCPU枯渇DoS。CVE-2026-23864はReact Server Components経由のDoS(サーバークラッシュ・OOM・CPU枯渇)。両方ともCVSS 7.5の高深刻度で即時パッチ適用が必須。
Q. VercelのWAFで保護されていればパッチは不要か
不要ではない。VercelはWAFルールを展開しているが、完全な保護は保証されないと明記している。アプリケーション側でのNext.js/Reactアップグレードが唯一の完全対処。セルフホストやVercel以外の環境ではWAFの保護を受けられない。
続けて読む — 関連する記事
MCP脆弱性:STDIOトランスポートの設計欠陥で20万台のサーバーがRCEの危険に——OX Securityが警告
securitymcp
MCP脆弱性:STDIOトランスポートの設計欠陥で20万台のサーバーがRCEの危険に——OX Securityが警告
2026.04.21
AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較
automationdevops
AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較
2026.04.21
サプライチェーンセキュリティ完全ガイド2026|攻撃手法・防御ツール・実践チェックリスト
securityセキュリティ
サプライチェーンセキュリティ完全ガイド2026|攻撃手法・防御ツール・実践チェックリスト
2026.04.21
GitHub Copilot個人プラン激変:Pro/Pro+の新規受付停止、Opusモデル削除、利用制限強化の全貌
copilotcoding
GitHub Copilot個人プラン激変:Pro/Pro+の新規受付停止、Opusモデル削除、利用制限強化の全貌
2026.04.21
wterm:VercelがOSSで公開したZig+WASMウェブターミナルエミュレータ、React対応
wasmterminal
wterm:VercelがOSSで公開したZig+WASMウェブターミナルエミュレータ、React対応
2026.04.19
anomalib|異常検知AIライブラリの使い方 — PatchcoreからOpenVINOデプロイまで
ai-agentsecurity
anomalib|異常検知AIライブラリの使い方 — PatchcoreからOpenVINOデプロイまで
2026.04.18
役に立ったらシェアをお願いします
🔔 AI速報、毎日Xで配信中
Claude Code・MCP・AIエージェントの最新ニュースをいち早くお届け
@peaks2314 をフォロー
広告
🔥 Popular
#2 POPULAR
🎨 awesome-design-md:DESIGN.mdでAIにUI生成させる方法【58ブランド対応】
DESIGN.mdをプロジェクトに置くだけでAIエージェントが一貫したUI生成を実現。Vercel・Stripe・Claudeなど58ブランドのデザイン仕様をnpx 1コマンドで導入する方法と、実際の出力差を検証した結果を解説。
#3 POPULAR
📊 TradingView MCP:Claude CodeからTradingViewを完全操作する78ツールのMCPサーバー
TradingView MCPはClaude CodeからTradingView Desktopを直接操作できる78ツール搭載のMCPサーバー。チャート分析、Pine Script開発、マルチペイン、アラート管理、リプレイ練習まで自然言語で実行。導入手順を解説
#4 POPULAR
🔍 last30days-skill完全ガイド|Reddit・X・YouTube横断AIリサーチスキルの使い方2026年版
last30days-skillはReddit・X・YouTube・TikTokなど10+ソースを横断して最新30日のトレンドをAIで分析するClaude Codeスキル。使い方・設定・活用例を解説。
#5 POPULAR
📓 notebooklm-py:PythonでGoogle NotebookLMを完全自動化するOSSライブラリ徹底解説
DeNA南場会長がPerplexityで集めた記事をNotebookLMに投入し人物理解に活用する手法が話題。そのNotebookLMをPythonで完全自動化するOSSがnotebooklm-py。ポッドキャスト生成・ノートブック管理をAPI化。
← TypeScriptをネイティブバイナリに変換するRust製コンパイラ「Perry」の仕組みとできること Gemini APIキーが不正利用される仕組みと防止策:数百万円の被害を防ぐ実践ガイド →