npm のサプライチェーン攻撃が続いてるので、Takumi Guard 入れてみました

2026.05.12 09:00
2026.05.13 23:46
npm のサプライチェーン攻撃が続いてるので、Takumi Guard 入れてみました

最近、npm まわりのサプライチェーン攻撃のニュースがめちゃくちゃ多くなってます。
「また来たか〜」って感じで、もう他人事として眺めてられない雰囲気になってきました。

うちも Web 制作の仕事で毎日のように npm install を叩いてるので、さすがにそろそろ何か対策しないとマズいなと。
そんなときに見つけたのが Takumi Guard というレジストリプロキシで、これがなかなか良かったので導入記録を書いておきます。

2026年に入ってからの npm 攻撃がエグい

まず最近の流れをざっくり振り返ってみます。
2025年9月の Shai-Hulud(ワーム型、796パッケージ感染)から始まって、2026年に入ってから一段とペースが上がってる印象です。

  • 2025年9月:Shai-Hulud ワーム発生(796パッケージ)
  • 2025年11月:第2波
  • 2026年3月:Aqua Security Trivy
  • 2026年3月:Axios npm パッケージ改ざん
  • 2026年4月:Bitwarden CLI
  • 2026年4月末:SAP系(mbt、@cap-js/db-service など)
  • 2026年5月11日:TanStack / Mistral AI など170以上のパッケージ(Mini Shai-Hulud 第3波)

5月11日のやつは TanStack 系が広く汚染されたので、普段から Next.js とか触ってる人は影響範囲に入った可能性があるやつでした。
「うちは大丈夫だっけ…?」って lockfile を grep して回るハメになりました。

普段使ってるパッケージが汚染される時代

昔の感覚だと「変なパッケージを入れなければ大丈夫」だったんですが、最近の手口はそれを通り越してます。

  • 正規のパブリッシュ経路を乗っ取って改ざん版を配信
  • GitHub Actions の OIDC トークンをメモリから抜き取り
  • postinstall で SSH 鍵・クラウドトークン・暗号通貨ウォレット・AI 設定ファイルを窃取
  • SLSA provenance(来歴証明)も回避

つまり「信頼してたパッケージがある日突然攻撃ベクターになる」世界です。
受託や制作系の現場って、クライアントごとの API キーやら SSH 鍵やらがローカルに転がってたりするので、1サイト感染でも影響範囲がじわっと広がりそうで。
これは怖い。

Takumi Guard ってどんなやつ?

Flatt Security(GMO傘下)が提供してる、npm 用のレジストリプロキシです。
仕組みはシンプルで、ふだん https://registry.npmjs.org/ に飛んでた install リクエストを、いったん https://npm.flatt.tech/ に経由させる感じ。

  • 既知の悪性パッケージを脅威DBと照らしてブロック
  • マルウェア・タイポスクワッティング・改ざん版などに対応
  • tarball ダウンロード前に弾いてくれる
  • npm / pnpm / Yarn どれでも使える
  • 無料のブロッキングモードはアカウント登録すら不要

「アカウント登録なし・1行追加でOK」というハードルの低さが正直ありがたいです。
導入の心理的コストがほぼゼロなのは大きい。

.npmrc に1行入れるだけ

導入はマジで簡単で、プロジェクトのルート(package.json と同じ階層)に .npmrc を置いて、こう書くだけ。

registry=https://npm.flatt.tech/

これで npm install したときに Takumi Guard 経由でパッケージを取りに行くようになります。
.npmrc はリポジトリにコミットしておけば、チームメンバーや CI でも自動的に適用されるので楽。

ちなみに lockfile(package-lock.jsonpnpm-lock.yaml)には、解決済みのレジストリURLが焼き込まれてます。
なので、すでに lockfile がある状態で .npmrc だけ変えても、既存パッケージは前のURLから取りに行ったりします。
確実に切り替えたい場合は、いったん lockfile を消して再生成するのが安全です。

動作確認してみました

ちゃんとブロックされるか不安だったので、Flatt Security 自身が公開してる「無害なベイトパッケージ」で試してみました。
このパッケージは Takumi Guard が必ずブロックするように仕込まれてる検証用のやつなので、安全に動作確認できます。

npm install @panda-guard/test-malicious

結果はこんな感じで、ちゃんと403が返ってきました。

npm error code E403
npm error 403 Forbidden - GET https://npm.flatt.tech/@panda-guard/test-malicious
npm error 403 Package blocked by security policy

「Package blocked by security policy」が見えると、ちゃんと仕事してくれてるんだなって安心します。
本当にこの1行だけで効いてるのか半信半疑だったんですが、ベイトが弾かれたのを見て一気に納得しました。

残る不安と、次にやったこと

これでひとまず「既知の悪性パッケージ」は弾けるようになったんですが、よく考えると不安は残ります。

  • 新規攻撃が公開された直後は、ブロックリスト反映までの猶予がある
  • そもそも postinstall がローカルで実行される根本リスクは残ったまま

なので、Takumi Guard だけに頼るんじゃなくて、もう1層追加で守りを入れることにしました。
具体的には npm から pnpm 10 への移行で、postinstall を明示許可制にする方向です。
そっちは記事を分けて書こうと思います。

まとめ

  • npm 攻撃は2026年に入ってから明らかにペースが上がってる
  • 普段使いのパッケージが汚染される時代になってきた
  • Takumi Guard なら .npmrc に1行で導入できる
  • アカウント不要・無料で既知の悪性パッケージをブロックしてくれる
  • ベイトパッケージで動作確認できるので安心

攻撃が来てから慌てるんじゃなくて、ニュースが続いてるうちに先に仕込んでおくのが結局ラクだなと思いました。
1行で済むし、やらない理由もないかなと。

今回は以上です!