+− THE DAILY DIFFdev & AI news
SHIP IT

Dependabotのバンプがワームを公開。22パッケージ。

ボットがプルリクエストを開き、人間が24分後にマージする。

ボットがプルリクエストを開き、人間が24分後にマージする。その95分後、ワームはCIで見つけたトークンを使って、彼の名前で、彼の22のnpmパッケージの悪意のあるバージョンを110個公開した。

書面版を読む(英語) ↗

この動画の要点

  • ボット、人間、ワーム
  • どのように起こったか、なぜnpmが許可したか、誰が非難されるべきか
  • タイムライン:汚染されたキャッシュ
  • 21:48 — Dependabotのバンプ
  • なぜそれが機能するのか

翻訳されたトランスクリプト

オリジナルの英語ナレーションから翻訳されています。利用可能なオーディオとキャプションはYouTubeによって管理されています。

ボット、人間、ワーム

0:00 ボットがプルリクエストを開き、人間が24分後にそれをマージする。 95分後、ワームが公開したのは 彼のパッケージの110バージョン。 彼として。 TanStackの事後検証には上流のタイムスタンプがあり、下流のメンテナーの 残りはHacker Newsが1100ポイントと「Mini Shai-Hulud」という名前を与えている。どのようにして起こったのか、なぜnpmがそれを許可したのか、誰が責任を負うべきか。 Mini Shai-Hulud。どのようにして起こったのか、なぜnpmがそれを許可したのか、誰が責任を負うべきか。

どのように起こったか、なぜnpmが許可したか、誰が非難されるべきか

0:21 これはThe Daily Diff、事後検証です。 5月11日、朝。 名前を変更したフォークがTanStack Routerに対してプルリクエストを開く。 それは1時間以内に閉じられるが、ベンチマークワークフローは既にそのコードを実行し、

タイムライン:汚染されたキャッシュ

0:33 リリースワークフローが使用するキーの下に汚染されたキャッシュを保存していた。 19時20分。正当なマージがリリースを実行する。 キャッシュが戻り、バイナリがランナーのメモリを読み込み、 公開トークンを抜き取り、有効な証明書付きで42パッケージに84バージョンをSHIP ITする。 パッケージ、有効なプロベナンスと共に。 テストは失敗する。それでも公開される。 19時46分、StepSecurityの研究者が問題を報告。UTC午前9時までに すべてが非推奨となり、アドバイザリが公開される。

0:55 非推奨は消えたわけではない:npmは依存関係のあるものを非公開にすることを拒否する、 そのため、何時間もインストール可能な状態が続く。 21時48分。9つ星の航空データプロジェクトで、 Dependabotはルーチンのプルリクエストを開く:dev-dependenciesグループをバンプ、 13件の更新。そのうち2件は汚染されたTanStackバージョンだ。 22時12分:マージ。公開ワークフローはスコープ内のトークンでnpm C-Iを実行する。

21:48 — Dependabotのバンプ

1:15 prepareスクリプトがそれを読み取り、22時17分にワームが彼として公開する。 トークンが届くすべてのパッケージの5バージョン、 古いサイドプロジェクトさえも:すべてに使える古典的なトークンが1つ。 95分で110バージョン。 彼は深夜過ぎにメールで知る。 なぜそれが機能するのか。 1:npm installはデフォルトで他人のライフサイクルスクリプトを実行する、 そしてgit依存関係のprepareスクリプトも含まれる。

1:39 2:ワームが望むのは一つ:二要素認証なしで公開できるトークン。 次に、そのメンテナーが他に何を所有しているかをレジストリに尋ね、 それらすべてを自分自身を内包させて再公開する。 3:チェーンに人がいない。

なぜそれが機能するのか

1:51 ボットが提案し、パイプラインがインストールし、ワームがその恩恵を返す:その デッドドロップブランチはdependabotスラッシュgithub-actionsスラッシュfremenと名付けられている。 git blame。npmのインストールモデル、55パーセント:インストール時にスクリプトが実行され、 非推奨のままインストール可能で、二要素認証をバイパスするトークンが存在する。 TanStackのCI、25パーセント:監査されていないプルリクエストターゲットワークフローが キャッシュへの書き込みアクセス権を持つフォークコードを実行している。 バンプの習慣、15パーセント:24分で13の更新がマージされ、 部屋にトークンがある。

2:17 Dependabot、5パーセント:ワームがその制服を着るほど信頼されている。

git blame

2:20 影響範囲:42のTanStackパッケージ。 下流22件、9つ星のプロジェクトから。 ワームがMistralに到達すると、エコシステム全体で160件を超える。 すべてのアップストリームバージョンは有効な署名を運んでいた:公式パイプラインによってビルドされたもの。 真実。評決、事後検証:SHIP IT。 両方のメンテナーは1日以内にタイムスタンプ付きの事後検証を投稿する。3日以内に、 下流のパイプラインはignore-scriptsでインストールし、 ビルドと公開を分離し、長期生存トークンを削除する。

影響範囲

2:47 npmのデフォルトは変わっていない。 月曜日:インストール時にignore-scripts、そしてそれを実行するジョブから公開トークンを外す。まだ話すことを許されていないインシデントがあれば、 話すことを許されていないインシデントをコメントまたはthedailydiff.devまで送ってください。 コメントまたはthedailydiff.devまで送ってください。 本日のdiffは以上です。

評決

3:00 AxrisiのNikoです。 責任を持ってマージしてください。

情報源

  1. TanStack postmortem (Tanner Linsley, May 11, refined May 15)tanstack.com
  2. TanStack "Hardening TanStack After the npm Compromise" (May 12)tanstack.com
  3. TanStack/router#7383 — the StepSecurity detection issuegithub.com
  4. Downstream incident post, @squawk/* (May 12)github.com
  5. Downstream hardening post (May 14)github.com
  6. The Dependabot PR #246 (opened 21:48 UTC, merged 22:12)github.com
  7. @tan_stack advisory post, 21:19 UTCx.com
  8. StepSecurity — worm internals, bypass_2fa search, Dependabot-style branch nameswww.stepsecurity.io
  9. Socketsocket.dev
  10. Aikido — "over 160 packages, including Mistral"www.aikido.dev
  11. Hacker News (1,097 points)news.ycombinator.com

関連動画

postmortem · ja · 2026/09/13

JavaScriptの11行がインターネットを破壊。アンパブリッシュは1回。

2016年3月22日21:30 UTC:開発者が彼のnpmパッケージ273個すべてをアンパブリッシュした。これは、npmがパッケージ名「kik」をメッセージングアプリのKikに渡した後のことである。Kikの特許代理人は「弁護士がお前のドアを叩く」と脅していた。273個のうちの1つがleft-padである。これは文字列の前にスペースを入れる11行のコードで、月に250万回ダウンロードされていた。数分

2:52 ↗
postmortem · ja · 2026/09/15

Rustクレートがコンパイル時にマルウェアを実行。86分。

2億6千万ダウンロードされた4マクロのRustクレートが依存関係を1つ追加し、`cargo build`があなたのマシン上で見知らぬバイナリを実行しました。2026年8月20日: arrayref 0.3.10がcrates.ioに公開され、proc-macro1(本物のproc-macro2ではない)に依存。そのビルドスクリプトはペイロードをダウンロードし、/tmp/rust-setupにドロッ

3:09 ↗
postmortem · ja · 2026/09/25

1ミリ秒のバグで英国の航空交通が6時間停止

9月8日火曜日の午前10時、NATSの国家空域システム(NAS)内で通常のスコークコード要求が、値の更新途中に優先度の高いメッセージによって中断された。露出ウィンドウは約1ミリ秒。要求は誤ったまま再開され、フライトデータが破損し、午後7時30分までに2,000便以上の英国発着便が遅延、欠航、または目的地変更となった。

3:06 ↗
postmortem · ja · 2026/09/22

再起動でテルストラは2006年に逆戻り。900万台の電話が影響。

メルボルンのエンジニアが午前2時50分にタイミングシャーシの電源を入れ直したところ、朝食の時間までにはオーストラリア最大のモバイルネットワークが「今は2006年11月である」と認識する事態に。2026年7月8日、テルストラのNTPシャーシ内のGPSカードが電源修理中に再起動し、ファームウェアにはGPS週数ロールオーバーのアップデートが一度も適用されていなかったため、古いエポックを選択し、1,024

3:15 ↗