Vercelがセキュリティ侵害を確認、ハッカーは窃取データを販売中だと主張
(bleepingcomputer.com)- Vercel は、内部システムに対する不正アクセスが発生したセキュリティインシデントを正式に確認し、現在はインシデント対応の専門家および法執行機関と協力中
- 侵害の原因は、サードパーティのAIツール Context.ai の Google Workspace OAuth アプリが侵害され、Vercel従業員アカウントが乗っ取られたこと
- 攻撃者は 機密ではない(non-sensitive)環境変数 を列挙して追加のアクセス権を獲得しており、これらの変数は暗号化されていない状態で保存されていた
- ShinyHunters を名乗るハッカーがハッキングフォーラムでアクセスキー、ソースコード、データベースデータ、APIキーなどを販売すると主張し、200万ドルの身代金 を要求
- Vercel は Next.js、Turbopack など オープンソースプロジェクトの安全性 を確認し、顧客に対して環境変数の見直しと機密変数機能の有効化を推奨
セキュリティインシデントの概要
- Vercel は JavaScript フレームワークに特化したクラウドホスティングおよびデプロイ基盤プラットフォームで、Next.js の開発元であり、サーバーレス関数、エッジコンピューティング、CI/CD パイプライン サービスを提供
- セキュリティ告知を通じて、内部システムに対する 不正アクセス(unauthorized access) が発生したことを正式に確認
- 一部の顧客(limited subset)が影響を受けたが、サービス自体には影響がなかったと発表
- インシデント対応の専門家を起用し、法執行機関に通報 して調査を進めている
侵害経路と技術的詳細
- 侵害の根本原因は、サードパーティAIプラットフォーム Context.ai の Google Workspace OAuth アプリ が侵害されたこと
- Vercel CEO の Guillermo Rauch が X(旧Twitter)で追加の詳細を公開
- 攻撃者は Context.ai の侵害を通じて、Vercel従業員の Google Workspace アカウントを乗っ取った
- その後、そのアカウントから Vercel 環境内で 権限昇格(escalate) した
- 攻撃者は 「機密ではない(non-sensitive)」と指定された環境変数 にアクセスしており、これらの変数は暗号化されていない状態(not encrypted at rest)で保存されていた
- Vercel は、すべての顧客環境変数を 完全に暗号化された状態(fully encrypted at rest) で保存し、多層防御メカニズムを備えているが、「non-sensitive」に指定された変数が弱点として作用した
- Google Workspace 管理者に対し、次の OAuth アプリの確認を推奨:
110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.com
ハッカーによるデータ販売の主張
- ShinyHunters を名乗る脅威アクターが、ハッキングフォーラムに Vercel 侵害とデータ販売に関する投稿を掲載
- 販売対象: アクセスキー、ソースコード、データベースデータ、内部デプロイへのアクセス権、APIキー(NPMトークン、GitHubトークンを含む)
- Linear のデータを証拠として提示し、多数の従業員アカウントへのアクセス権を保有していると主張
- ShinyHunters 組織に関連する既知の脅威アクターたちは、BleepingComputer に対し、今回の事件とは 無関係だと否定
- 攻撃者が共有したテキストファイルには、Vercel従業員情報 580件 が含まれており、氏名、Vercel のメールアドレス、アカウント状態、アクティビティのタイムスタンプで構成
- 内部の Vercel Enterprise ダッシュボード と見られるスクリーンショットもあわせて共有
- BleepingComputer は、そのデータとスクリーンショットの真正性を 独自には確認できていない
- Telegram のメッセージで、脅威アクターは Vercel と接触中であり、200万ドルの身代金(ransom) を要求したと主張
Vercel の対応と顧客への推奨
- Next.js、Turbopack およびその他のオープンソースプロジェクトは安全であることを確認
- ダッシュボードに環境変数の 概要ページ と、機密環境変数管理のための 改善されたインターフェース を導入
- 顧客に推奨する対応:
- 環境変数(environment variables) の見直し
- 機密環境変数機能(sensitive environment variable feature) を有効化し、未使用時の暗号化を保証
- 必要に応じて シークレットローテーション(secret rotation) を実施
3件のコメント
Hacker Newsの反応
たった今告知が更新され、侵害がサードパーティーのAIツールのGoogle Workspace OAuthアプリ侵害から始まったと明かされた点が重要に思えた
調査支援用のIOCも公開されており、管理者ならこのアプリを使っているかすぐ確認するようにという内容だった
OAuth Appは
110671459871-30f1spbu0hptbs60cb4vsmv79i7bbvqj.apps.googleusercontent.comで、原文は Vercelセキュリティ告知で確認できるとくにnon-sensitiveな環境変数の列挙によって追加アクセスが可能だったという説明が目を引き、攻撃者はAIによって大きく加速された高度なグループではないかという推測も出ていた
それなのにまだ利用者向けのメール通知がない点はかなり心配だった
相手をすぐ名指ししたくない気持ちは理解できるが、サービス名を隠すと対応が遅れるだけという印象だった
最近は安定した基盤の上に積み上げるより、複数のサードパーティーの組み合わせをつなぎ合わせるのが当たり前になり、その分だけ失敗点も増えている
結局セキュリティは最も弱い輪と同じだけしか強くないことが改めて示され、とくにvibe-codedっぽいAIツールの上にビジネスを載せるのは明らかなリスクだと思った
この方向を本当に押し進め続けるべきなのか、そして複雑さがどこまで増えたら立ち止まるのか、自分に問いかけることになった
Claude Code推奨スタック分析を見ると、Claude Codeがデフォルトで特定のプロバイダーやフレームワークを勧めることで、Webをより画一化しているように感じた
こうした多様性の欠如が、結局事故が起きたときの波及半径をさらに大きくしている気がした
ほとんど既定の選択肢として固まっている印象だった
そこでいっそNodeなしでやってくれと言うと、すぐにPythonバックエンドで組み直してくれて、依存関係も減らす方向に変えたと自分で説明していた
ちなみにこれはただ捨てる成果物のための実験であって、vibe codingを勧めたいわけではなかった
結局は使い方の問題であり、Claudeに判断を代行させないよう開発者をもっと上手く導くべきだと考えた
助言は受けられても、最終的には人間が批判的にレビューすべきで、その点では他のチームメンバーと協業するのと大差ないように感じた
インターネットにももともとそういう傾向はあったが、今回は少し質が違うように感じた
以前セキュリティインシデント対応チームにいた者として、今回の対応チームがどれだけ大変かは想像できた
それでも最初の告知は本当にひどいコミュニケーションに見えた
何が起きたのかは語らないまま、法執行機関に知らせるほど深刻だという表現だけがあり、顧客向けの行動指針は「環境変数を見直せ」程度だった
しかし顧客の立場では、それで何をすればよいのかあまりに不明瞭だった。値がまだ存在するか確認しろという意味なのか、すでに漏えいしたかどうかはどう判断しろというのか分からなかった
自分の基準では、直ちにパスワード、アクセストークン、Vercelに預けた機微情報をすべてローテーションせよと言うべきだったし、そのうえでアクセスログや顧客データの異常兆候を監査するよう案内すべきだった
高いホスティング費用を払う理由は、結局セキュリティと安定性を専門的に管理してくれるという期待があるからで、今の対応は初期の不確実性を考慮しても意図的に曖昧すぎるように見えた
ただしAPIキー、トークン、DB認証情報、署名鍵のような秘密値がsensitiveとしてマークされていなかったなら、潜在的に露出したものと見て優先的に交換すべきだと書かれていた
出典は incident page で、自分が見た時点では東部時間午後4時22分時点だった
1年以上金を払っている顧客なのに、肝心の会社メールよりニュースアグリゲーターのほうが先に知らせてくる状況は呆れた
関連する文脈は HNスレッド と 当時の反応 で見られた
それ以外はたいてい問題を招き寄せる選択に感じられた
ただ自分はもうその利便性に頼らないことにして、Renderからlinodeへ全部移した
以前はRenderに月50ドル超を払っていたが、今は3〜5ドル程度なので、今後ああしたホスティング業者をまた使うつもりはほとんどなかった
「Vercelはどのシステムが侵害されたかを明かしていない」という一文を見て、セキュリティ専門家でなくてもこれはかなり納得しがたい態度に感じられた
顧客が影響を理解するのを助けるより、自分たちの防御に重点を置いている印象も受けた
たとえばGitHubであまり知られていない下位サブシステムXが侵害されたと言われても、すでに出ている「一部顧客環境が侵害された」というレベル以上に実質的な助けにはならないかもしれないと思った
告知にIOCが追加されたのを見直すと、今回の事件がGoogle Workspace OAuthアプリ侵害から始まったという点はコミュニティ全体にとって確かに重要な情報だった
管理者やアカウント所有者はそのアプリ識別子をすぐ確認すべきだと感じ、詳しい内容は Vercel告知 にあった
自分はMacBook ProとChrome 147.0.7727.56環境なのだが、ページ左上のVercelロゴを押した瞬間にChromeアプリが即クラッシュした
かなり興味深いバグに思えた
みんな今ちょうどVercelが何か侵害されたらしいという話を読んでいる最中に、Webページのクラッシュまで再現している状況が妙に面白かった
もちろん、こういう集団再現遊びが絶対に逆効果にならないはずもないとも思った
動画も残してみた し、uBlock Origin Liteを使っているのでそれが原因かと思ったが、無効にしてもやはり落ちなかった
再現できたら少し面白かっただろうとも思った
しばらくそうだったが、結局修正された記憶があった
ただしURLでVercelホームを一度直接開いた後は、ロゴを押してももうクラッシュしなかった
その代わり今はFinish updateボタンを押すのが少しためらわれた
関連情報として HNの別スレッド といくつかのX投稿を一緒に見ていた
Theoの最初の言及 では信ぴょう性がありそうだとしており、続報 ではsensitive指定されたenv varは安全で、指定されていない値は予防的に交換すべきだとしていた
また 別の投稿 では、この種のハッキングはどのホストにも起こりうるとしており、さらに別の言及 ではShinyHuntersとの関連可能性が挙げられていた
もし必ず交換しなければならない値なら、そもそもそれは機微情報であり、sensitiveとしてマークしておくべきだったのではないかと思った
今の時点では実質的な中身がそれほど多いようには見えなかった
こうした事件は、現代のWebエコシステムがどれほど単一障害点に集中しているかを改めて思い出させた
今のところ公開の仕方自体は比較的透明だと感じるが、フルマネージドPaaSに全面的に依存する選択のリスクプロファイルは改めて計算し直すことになった
「一部の限定された顧客」という表現は、技術的には99%でも成り立ちうるので、かなり曖昧な表現に聞こえた
もしかすると実際には多くの顧客が影響を受けていて、離れられると困る大口顧客だけをsubsetと呼んでいる状況なのではないかという疑いも湧いた
本当に安心させられるなら、普通は「ユーザーの1%未満」のように具体的な数値を出すが、今回はそうではなかった
なので、まだ可視性が足りないか、数字が気に入らないのではないかと思った
それでも対応チームがどれだけ苦労しているかには共感しており、今後はもっとオープンで透明なコミュニケーションをしてほしいと思っていた
ここでもヒンディー語の文字が見えますね。最近は OpenAI、Claude、Google を問わず、日本語出力にヒンディー語が混ざって出てくるケースがかなり頻繁に発生していますが、日本語データセットのラベリングをインドの人たちが担当したのでしょうか?
中国モデルは日本語応答に中国語が混ざって出てくるので好きではなかったのですが、最近はフロンティアモデルがヒンディー語をしょっちゅう混ぜてくるので、むしろ中国モデルに対する抵抗感が下がりました
以前Claudeを使うと日本語がよく出てきたんですよね。昨日もそうでした