00:00:00これは過去最大級のNPMサプライチェーン攻撃かもしれません。
00:00:03エイプリルフールではありません。最悪のタイミングですが、注意喚起が必要です。
00:00:07被害を受けたのはAxiosパッケージで、今週だけで1億100万回インストールされた
00:00:13HTTPクライアントです。依存関係にあるパッケージは17万4千を超え、Datadogや
00:00:18OpenClaw、WordPressなどにも影響し、北朝鮮のハッカーとの関連も指摘されています。
00:00:22それでは、何が起きたのか詳しく見ていきましょう。
00:00:29事の経緯はこうです。2026年3月31日、攻撃者がAxiosのリードメンテナーの
00:00:34NPMアカウントを乗っ取り、2つのバックドア付きリリースを公開しました。最新版として
00:00:39最新リリースとしてタグ付けされたものと、レガシー版としてタグ付けされたバージョン0.30.4です。
00:00:44これらのパッケージには「plaincryptojs」という偽の依存関係が導入されていました。
00:00:48これは通常のcrypto.jsとほぼ同じですが、一つだけ小さな細工がされていました。
00:00:52それは「setup.js」というインストール後スクリプトです。つまり、これらを
00:00:58インストールした全ユーザーとCI環境で、そのスクリプトが実行されたのです。
00:01:02スクリプトには難読化されたコードが含まれており、OSを確認した上で
00:01:07サーバーに接続し、そのOSに適した第2のペイロードをダウンロードしていました。
00:01:12誰もこの攻撃から逃れられず、macOS用ペイロードにいたっては
00:01:16IntelとAppleシリコンの両方で動作するよう作り込まれていました。そして、
00:01:20本当に恐ろしいのはこの第2のペイロードです。これはRAT(遠隔操作ツール)で、
00:01:25全OSでほぼ同様に動作します。まず、ドキュメントやデスクトップ、
00:01:29設定フォルダ内のファイルをスキャンします。Windows版ではOneDriveやAppData、
00:01:33全ドライブレターまで走査し、ファイルリストをサーバーへ送信します。
00:01:38盗む価値のあるものを物色するためでしょう。その後、ビーコン送信を開始し、
00:01:4260秒ごとにホスト名、ユーザー名、OS、タイムゾーン、ハードウェアモデル、
00:01:47実行中の全プロセス一覧を送信します。攻撃者は使用中のソフトを監視できるのです。
00:01:52これだけでも十分最悪ですが、さらに恐ろしいのはここからです。
00:01:56攻撃者はいつでもリモートで4つのコマンドを発行でき、システム上の
00:02:00全ディレクトリの閲覧、任意のシェルコマンドやスクリプトの実行、
00:02:05追加マルウェアの投下、さらには証拠隠滅のためにプロセス全停止も可能です。
00:02:10実際、最初のセットアップスクリプトは自己削除し、実行指示が書かれた
00:02:15package.jsonをクリーンなものに置き換えて、検知を逃れるよう設計されていました。
00:02:19この攻撃は非常に巧妙で、開発者のワークステーションやCI/CD環境を狙い、
00:02:23.envファイルやNPMトークン、SSH鍵などの機密情報を標的にしています。
00:02:28この悪意あるペイロードを実行したシステムは、すべて
00:02:34認証情報が完全に盗まれたものとして扱うべきです。さらに謎なのは、
00:02:38NPMアカウントがどう乗っ取られたかです。メンテナーは二要素認証を有効にしており、
00:02:43GitHub Actionsのパイプラインも保護されていました。どうやら、
00:02:47有効期限の長いNPMアクセスキーを使い、CLI経由で公開されたようです。
00:02:53問題はそのトークンをどう入手したかですが、メンテナーはアカウントの
00:02:56リカバリコードが盗まれた可能性を疑っています。詳細はまだ不明です。
00:03:01被害の有無を確認するには、ロックファイルを検索して影響を受けるAxiosの
00:03:04バージョンやplaincryptojsがないか調べ、node_modulesの中も確認してください。
00:03:09もし見つかった場合は、残念ながら手遅れです。また、
00:03:14RATの痕跡がないかシステムを調査してください。詳細は概要欄のリンクに貼っておきます。
00:03:18乗っ取られた際の対処法も載せています。今後の対策としては、
00:03:22まず必ずロックファイルをコミットし、パイプラインでは
00:03:26npm installではなく npm ci コマンドを使用するようにしてください。
00:03:31また、パッケージマネージャーで最小経過時間を設定するのも有効です。
00:03:35公開から48時間以上経ったものだけを入れるようにすれば、今回のように
00:03:393時間で削除されたマルウェアを防げます。最後に、可能であれば
00:03:44npm install時に ignore-scripts フラグを使うか、Bunのような
00:03:48デフォルトでスクリプトをブロックし、信頼した依存関係のみ許可するツールを使ってください。
00:03:53これが今年最大の攻撃であることを願いますが、同様の事例は増えています。
00:03:57くれぐれも安全に気をつけて。今回の件について、ぜひコメント欄で
00:04:01意見を聞かせてください。チャンネル登録もよろしくお願いします。
00:04:04それでは、また次の動画でお会いしましょう。