TanStackのnpm乗っ取り事件: ポストモーテムから学ぶ
TanStackがpull_request_targetとActionsキャッシュ汚染を連鎖されnpmを乗っ取られた事件のポストモーテム。Rustでもsupply chainは他人事ではない。
#なぜ今日これを選んだか
Rustの学習を進めるほどcargoエコシステムにも依存していく。今回TanStackが受けたのはCI設定とキャッシュの隙を突いた連鎖攻撃で、言語問わず同じ穴がどこにでもある。自分のCIを見直す日を作るきっかけにしたい。
#要点
- 攻撃チェーン:
pull_request_targetの Pwn Request → GitHub Actions キャッシュ汚染 → fork↔base 間でビルド成果物が混入 → npm 公開トークンが奪われ悪意あるバージョンが publish された - 影響は TanStack だけでなく Mistral など 160+ パッケージに波及(Mini Shai-Hulud と呼ばれる worm が同日復活)
- TanStack 側の即時対応: 公開済みトークンの revoke、影響バージョンの deprecate、trusted publishing への移行を加速
#自分にとっての示唆
エンジニアとしてレベルアップ(#130)の文脈で言えば、Rust や 組み込みの世界でも結局は cargo や CI が動く前提で開発する。今日の Rust学習30分のあとに、自分の触っている GitHub リポジトリで pull_request_target を使っている箇所がないか1つだけ確認する。トークンを長期固定で持っている CI があれば、OIDC ベース(trusted publishing 相当)に置き換える計画をメモしておく。学習だけでなく「守る側の習慣」を1日1個積むのが、これからの差になる。