PaPoo
cover
technews
Author
technews
世界の技術ニュースをリアルタイムでキャッチし、日本語でわかりやすく発信。AI・半導体・スタートアップから規制動向まで、グローバルテックシーンの「今」をお届けします。

npmの“サプライズ汚染”に要注意。Red Hat系パッケージで悪意あるリリースが検出された話

キーポイント

何が起きたのか

GitHub の issue #492 では、@redhat-cloud-services/ スコープに属する複数の npm package で、​malicious npm releases​(悪意ある npm リリース)が検出されたと報告されています。

npm package というのは、JavaScript の世界でよく使う「再利用可能な部品」です。たとえば、UI のコンポーネント、API クライアント、設定関連のユーティリティなどを個別の package として配布できます。便利な反面、ひとつでも汚染されると、その package を使っているプロジェクト全体に影響が出ることがあります。

今回の件で印象的なのは、単発の package ではなく、​かなり広い範囲で複数の package が並んで挙がっていることです。これは「1つの依存関係がやられた」ではなく、​サプライチェーン全体に触れるタイプの事故として見るべきだと思います。

影響を受けた package

issue に掲載されていた対象は、たとえば次のようなものです。

ほかにも、eslint-config-redhat-cloud-servicestypestsc-transform-imports など、開発支援系の package まで含まれています。

こういう一覧を見ると、正直ちょっとゾッとします。アプリの見た目を作る package もあれば、API と通信する client package もあり、開発時に使うツール系まである。つまり、​本番コードだけでなく、開発環境にも入り込みうるわけです。これはかなり嫌なパターンです。

どういう危険があるのか

悪意ある npm release が怖いのは、単に「壊れた package が出た」では済まないところです。

たとえば、次のようなリスクが考えられます。

image_0002.png

もちろん、今回の issue 本文だけから「実際に何が実行されたか」まで断定はできません。ですが、StepSecurity の告知リンクが参照されていることから、​少なくともセキュリティ上の重大な懸念として扱うべき事案なのは間違いないです。

個人的には、こういう話は「自分は Red Hat 系 package を使っていないから関係ない」で終わらせないほうがいいと思います。npm の世界では、似た構造の事故がどの scope でも起こりうるからです。今日は Red Hat 系、明日は別の maintainer、というのは十分ありえます。

一般の開発者は何を気にすべきか

技術に詳しくない人向けに、ざっくり言うとこうです。

もし依存 package が汚染されると、自分で書いたコードが安全でも、部品の中に入った悪意ある処理によって危険が生じます。
だから「コードレビュー」だけでなく、「使っている部品そのものの安全性」も見ないといけません。

この点で、npm のサプライチェーン攻撃は本当に厄介です。コードの品質問題というより、​信頼していた流通経路が壊れる問題だからです。しかも、見た目は普通にアップデートできてしまう。便利さと危険が表裏一体なんですよね。

実務でやっておきたいこと

今回のような件を受けて、現場では次のような対応が大事だと思います。

  1. 依存 package の version を確認する

    • 影響を受けた version が入っていないか確認します。
  2. lockfile を見直す

    • package-lock.jsonyarn.lock に、問題のある version が固定されていないか確認します。
  3. セキュリティ情報を追う

    • StepSecurity のようなフィードや、npm / GitHub のアラートを監視します。

image_0003.png

  1. 不要な dependency を減らす

    • 依存が少ないほど、攻撃面も小さくなります。地味ですがかなり効きます。
  2. CI/CD の権限を絞る

    • 万が一侵入されても被害を最小化しやすくなります。

このへんは地味ですが、かなり現実的です。サプライチェーンの話は派手な対策より、​普段の運用をどれだけ堅くしているかが勝負だと思います。

今回の issue で注目すべき点

この issue 自体は、Red Hat Insights の javascript-clients リポジトリで立てられたセキュリティ報告です。つまり、単なる雑談ではなく、​コミュニティや利用者に対して「注意してね」と伝える場になっています。

また、本文で StepSecurity のブログと OSS security feed が参照されているのも重要です。こうした外部情報を起点に、影響範囲を広く確認しているわけですね。実際、こういう一次情報だけでは全体像が見えにくいので、外部のセキュリティ観測データをつなげるのはかなり有効だと思います。

まとめ

今回の件は、npm エコシステムの便利さと危うさを同時に見せる、かなり典型的で、しかも嫌なタイプのセキュリティ事件です。

「自分のコードは安全」でも、依存 package がやられれば話は別。
しかも今回は対象範囲が広く、開発用・実行用の両方にまたがっている可能性があるため、影響の見積もりも簡単ではありません。

個人的には、こういうニュースを見るたびに、​依存関係は“借り物”ではなく“預かり物”として扱うべきだと感じます。便利だからこそ、疑う目が必要なんですよね。


参考: [SECURITY]: Malicious npm releases detected across @redhat-cloud-services/ scope · Issue #492 · RedHatInsights/javascript-clients

同じ著者の記事