このJavaScriptスキャナは図書館内のマルウェアを駆除します

Table of Contents

このJavaScriptスキャナは図書館内のマルウェアを駆除します

Wormhole ファイル転送ウェブ アプリを開発する Socket 社は火曜日、JavaScript エコシステムにおけるサプライ チェーン攻撃を防御する、同じく Socket と呼ばれるセキュリティ スキャン アプリを導入する予定だ。

JavaScriptや関連技術を使って開発を行う人にとって、GitHubのNPMパッケージレジストリは必須のリソースです。180万以上のパッケージ(便利な機能を実行するために依存関係としてアプリケーションに追加されるライブラリやモジュール)がここに登録されています。

しかし、その人気により、悪意のあるコードを配布する魅力的な手段となっている。なぜなら、侵害されたパッケージは最小限の労力で膨大な数のユーザーに届くからだ。イスラエルに拠点を置くセキュリティ企業WhiteSourceは、昨年、1,300件の悪意のあるnpmパッケージを検出し、報告したと述べている。

Socketアプリケーションは、サプライチェーン攻撃による被害を未然に防ぐことを目的としています。The Registerへのメールで、Socketの創設者であり、オープンソース開発者としても活躍するFeross Aboukhadijeh氏は、オープンソースソフトウェアのサプライチェーンへの攻撃は2015年以降悪化しており、今ではほぼ毎週のように発生していると説明しました。

状況は悪化し、暗号化によるセキュリティを約束するウェブベースのファイル転送アプリ「Wormhole」のオープンソース依存関係を精査する必要があると感じたと彼は述べた。「新しいバージョンにアップデートした依存関係にマルウェアが潜んでいる可能性があるのに、人々に私たちのサービスを信頼して大切なデータを預けるのは不安でした」と彼は説明した。

アブカディジェ氏によると、これまでの標準的なアプローチは、既知の脆弱性、つまりCVEラベルの付いた欠陥をスキャンすることだったという。しかし、こうしたプログラミング上のミスは発見から公開報告まで長い時間がかかり、こうしたバグの発見と修正は、意図的に侵害された依存関係を特定することと同レベルではない。

200日間のギャップ

マルウェアは通常、ホストされたパッケージ内に200日間潜伏してから検出されるという2020年の研究論文[PDF]を指摘し、アブカディジェ氏は、悪質なパッケージは開発者のアプリに統合される前に捕捉する必要があることは明らかだと述べた。

Wormhole にとって、それはアプリ内のすべてのオープンソース パッケージを監査することを意味しました。

「幸いなことに、ほとんどのサプライチェーン攻撃は似たようなパターン(環境変数の窃取、ネットワークへのデータ送信など)を辿るため、私たちは最近のNPMサプライチェーン攻撃をすべて検出できるツールを開発しました」とアブカディジェ氏は説明した。「このツールは、CVEデータベースの古いデータに頼るのではなく、パッケージの実際の動作を分析します。」

脆弱性スキャンツールや静的解析ツールはすでに数多く存在します。しかし、Aboukhadijeh氏によると、これらのツールでは、NPMに対するサプライチェーン攻撃(、、、、、、、など)を阻止できないとua-parser-jsのことですcoarccolorsfakerevent-streameslint-scope

「従来の脆弱性スキャンツールは、使用しているパッケージのバージョンを検索し、国家脆弱性データベース(NVD)に公開されているCVEデータと比較するだけです」とアブカディジェ氏は述べた。「一致するものが見つかった場合、新しいバージョンへのアップグレードを促すアラートが送信されます。」

従来の静的解析ツールは、サードパーティのコードに対して実行するとノイズが多すぎて、実用的な結果を提供できません。一方、Socketは有意義なアドバイスを提供することを目的としています。

Socketアプリのスクリーンショット

クリックして拡大

このアプリは、マルウェア、タイポスクワッティング、隠蔽/難読化/縮小化されたコード、リスクの高いAPI(ファイルシステム、ネットワーク、、child_process)の導入eval()、そして疑わしいアップデートを検出します。現在、サプライチェーンリスク、品質、メンテナンス、既知の脆弱性、ライセンス問題の5つのカテゴリーで70件の検出をサポートしています。

「Socketは静的解析(そして近々動的解析も)を用いてパッケージの挙動を特徴づけ、どのような機能を使用しているかを判断します。私たちはこれを『機能検出』と呼んでいます」とアブカディジェ氏は述べた。「例えば、npmパッケージがネットワークを使用しているかどうかを判断するために、Socketは`fetch()`、あるいはNode.jsの`net`、`dgram`、`dns`、`http`、`https`といったモジュールがパッケージ内、あるいは(ここが重要ですが)その依存関係内で使用されているかどうかを調べます。また、URLの存在や文字列内のIPアドレスの断片といった冗長なシグナルも調べます。」

このアプリは、分析されたパッケージのコード外で何が起こっているかも調べ、たとえば、人気のあるパッケージを密かに取得して破壊しようとする試みを検出します。

「最も価値の高いセキュリティシグナルのいくつかは、メンテナーの行動といったサイドチャネルから来ます」とアブカディジェ氏は述べています。「Socketは『不安定な所有権』、つまり新しいメンテナーにパッケージの公開権限が与えられた状態を検出します。また、攻撃者は古いメジャーバージョンに新しいパッチを公開することが多く、それでもまだ多くのユーザーが利用しているため、パッケージが時系列順に公開されていない場合も検出します。」

また、タイポスクワッティングも探します。タイポスクワッティングとは、開発者を騙して悪意のあるバージョンをインストールさせることを目的として、別のパッケージと紛らわしい名前のパッケージを NPM に送信することです。

セキュリティを真に開放

アブカディジェ氏は、アプリのテストですでに複数のマルウェアが検出され、報告されたためNPMが削除したと述べた。

「Socketユーザーは、明白なマルウェア以外にも、オープンソースの新たな興味深いトレンドを発見しました。一部のメンテナーが、ランタイム使用統計を収集するために、パッケージにテレメトリを組み込み始めているのです」とアブカディジェ氏は述べています。「これは、ウェブサイトがGoogle Analyticsなどのトラッカーを組み込むのと似ています。私たちはすでにSocketにこの問題の検出機能を追加しており、企業はオープンソースからテレメトリを検出してブロックすることができます。私たちはこのトレンドを注視しています。」

アブカディジェ氏は、同社はNPMマルウェアを探しているセキュリティ研究者にソケットのツールを公開したいと考えており、興味のある人は連絡してほしいと語った。

バックドアキー

悪意のあるバックドア付き NPM パッケージが Twilio ライブラリを装って 3 日間放置され、その後排除されました。

続きを読む

Socketは現在、GitHubに統合されたアプリとして利用可能です。Socketのウェブサイトからインストールボタンをクリックすると、GitHubの権限確認プロンプトが表示されます。承認されると、各プルリクエストで実行され、package.jsonなどのパッケージマニフェストファイルの変更を評価します。新しい依存関係が追加されると、Socketはそれを評価し、セキュリティリスクがある場合はコメントを残すとAboukhadijeh氏は述べています。

Socket CLIとAPIは開発中です。このサービスはパブリックリポジトリでは無料で、プライベートリポジトリでも期間限定でご利用いただけます。Socketパッケージ検索とパッケージヘルススコアは、同社のウェブサイトから無料でご利用いただけます。GitHubアプリなどのSocket統合機能は、オープンソースリポジトリでは「永久に」無料でご利用いただけます。プライベートリポジトリについては、ベータテスト期間中は無料でご利用いただけます。一般提供開始後のプライベートリポジトリの価格は未定です。

「今後数週間以内に、期限切れのドメインのメールアドレスを使用しているメンテナーがいるパッケージを検出する新たな検知機能をリリースする予定です。これはパッケージハイジャックの大きなリスク要因です」とアブカディジェ氏は述べた。「また、メンテナーの評判、メンテナーの疲弊、メンテナーのセキュリティ対策(2要素認証の有効化、コード署名、セキュリティポリシーの公開)といった新たなシグナルにも取り組んでいます。」

「ソケットの目標は、市場で最も包括的なオープンソースリスク分析を提供することです。つまり、メンテナーとその行動からオープンソースのコードベースとその進化に至るまで、全体像を分析することを意味します。」®

Discover More