npmのパッケージが乗っ取られて悪意のある版が公開されたとき、被害が広がるのは最初の数時間です。CVE(脆弱性の識別番号)が採番され、OSVなどのデータベースに載り、検査ツールが検知できるようになる頃には、CIは何度もその版を取り込んでいます。
照合の仕組みは、載ってからしか働きません。その手前をどうするか、という話があります。
兆候は、先に人が書いています
採番される前でも、気づいた人は騒いでいます。リポジトリのIssueに「このリリースはおかしい」と書かれ、掲示板に投稿され、SNSに流れます。一次情報はたいていそこにあります。
tocsinは、GitHubのIssuesやHacker Newsを含む4種類の情報源を見張り、供給網への攻撃らしい兆候を拾います。公式に確定する前の、ざわついている段階を捉えるための仕組みです。
粗く拾って、分類する
全部を読むわけにはいかないので、二段構えにします。まずキーワードで粗く絞り、残ったものをLLMに分類させます。
ここで誤検知をゼロにしようとすると、早さが失われます。確定情報だけを流すのであれば、CVEを待つのと変わりません。取りこぼしを減らす側に倒し、雑音が混ざることを受け入れる設計になります。
「自分に関係あるか」で並べ替える
世界のどこかでパッケージが乗っ取られたという事実だけでは、行動が決まりません。自分の依存関係の中にそれが居るかどうかで、意味がまったく変わります。
tocsinは依存関係をもとに影響度を算出して順位をつけます。この並べ替えができるのは、手元に持ち物の一覧があるからです。SBOMを作る作業は平時には退屈ですが、こういう日に効いてきます。
該当と、危ないは違います
拾った兆候が自分の依存に当たったとしても、その機能を使っていなければ実害がないこともあります。その判断を人が下し、機械が運べる形にするのがVEXです。
早期警戒、持ち物の一覧、影響の判断。三つが揃うと、「気づくのが遅い」と「毎回すべてを止める」のどちらも避けられます。
AIを使うシステムでは、依存が増えます
エージェントを動かす構成は、モデルの提供元、ツール、MCPサーバー、その先のAPIと、依存の枝が通常のアプリより広がります。攻撃面が広いという点はOWASP MCP Top 10でも指摘されており、供給網の監視はその外周にあたります。
自社の状況を確かめるなら、順番は決まっています。まず何が入っているかの一覧を作る。次に、脆弱性が公表されたときに自社に該当するかを判定できる状態にする。そのうえで、公表前の兆候を拾うかどうかを検討します。一覧がないまま早期警戒だけを導入しても、届いた知らせに対して動けません。