fbpx

脅威アラート:人気の高いnpmライブラリがサプライチェーン攻撃で危険にさらされる #aqua #コンテナ #セキュリティ #サプライチェーン攻撃 #npm

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

本ブログは「Aqua Security」社の技術ブログで2021年11月11日に公開された「 A Popular npm Library Compromised in a Supply Chain Attack: What to Do 」の日本語翻訳です。

脅威アラート:人気の高いnpmライブラリがサプライチェーン攻撃で危険にさらされる


10月下旬、サプライチェーン攻撃により人気の高い npm ライブラリ「ua-parser-js」が影響を受け、多くの企業が危険にさらされました。このブログでは、この攻撃について説明し、企業が同様の脅威を軽減するための方法をいくつか紹介します。これは、ソフトウェアのサプライチェーンを利用したクラウド上の機密データや企業リソースに対するサイバー攻撃の増加傾向の一例です。

攻撃の原点:ua-parser-jsはどのように侵害されたか

この事件では、攻撃者は開発者の npm アカウントを乗っ取り、その後人気の高い npm ライブラリ ua-parser-js の3つのバージョンに悪意のあるコードを挿入しました。ua-parser-js は、ユーザエージェント文字列を解析して、ユーザのブラウザ、OS、デバイス、その他の属性を識別するために使用されます。2021年10月の最終週だけで800万以上のダウンロードがあり、多くのライブラリが依存関係にあると思われます。

このライブラリが広く利用されていることは、コミュニティ主導のソフトウェアライブラリや、広く支持されているソフトウェアライブラリに対して、多くの開発者が暗黙のうちに抱いている信頼を浮き彫りにしています。攻撃者が Faisal Salman 氏(ua-parser-js のリード開発者兼メンテナ)の npm アカウントを侵害し、ua-parser-js のバージョン0.7.29、0.8.0、1.0.0に悪意のあるコードを挿入したようです。Salman 氏は、以下のように警告を発しました。

10月の事件で Salman 氏は、攻撃者が開発者のメールアカウントに何百通ものスパムメールを殺到させたと指摘しています。この手口は「メールボム」と呼ばれ、パスワードリセット通知などの機密性の高いメールを阻害する役割を目的としています。これは、開発者に悪意のある活動について早期に警告する役割を果たしました。しかし、攻撃を止めるには十分ではなく、数時間の間、ライブラリのユーザを危険にさらすことになりました。ライブラリ更新バージョン(0.7.30、0.8.1、1.0.1)では、この侵害行為を修正されました。

攻撃の仕組み

インストール後、スクリプトが使用している OS を検知し、Windows のバッチファイルまたは Linux の ELF バイナリをダウンロードします。これらのファイルは共に、インターネットからクリプトマイナーをダウンロードします。以下は、プリインストールスクリプトです。

  • bat md5:d98a3013336b755b739d285a58528cbe
  • sh md5:4dbee17293a6e54b509a8d99f96bb666
  • js md5:a4668a1b3f23b79ef07d1afe0152999e

クリプトマイナーは、マイニングプール、ウォレット、CPU スレッド数を定義する引数を持っており、起動すると被害を受けた組織のクラウドリソースを悪用して、攻撃者のためにクリプトマイニングを始めます。

Bleeping Computer によると、Linux マシンの場合、プリインストールスクリプトが実行されたアクセス元のホストが、ロシア、カザフスタン、ウクライナ、ベラルーシのいずれかの場合は、何もせず攻撃が終了します。このような活動は、一般的には異常なことです。

Windows マシンでは、バッチファイルが DLL をダウンロードし、create.dll(md5:de8b54a938ac18f15cad804d79a0e19d)という名前で保存します。この DLL ファイルはパスワードを盗むトロイの木馬で、電子メールクライアント、メッセージングサービス、ブラウザ、FTP クライアントなど、100 種類以上のアプリケーションからパスワードを盗みます。また、Create.dll は Windows PowerShell スクリプトを実行し、Windows のクレデンシャルマネージャーからパスワードを盗みます。

サプライチェーン攻撃に使われる他の悪意のあるライブラリとの類似点

この攻撃は、以前 npm に公開された他の3つの悪意のあるライブラリと関連している可能性があり、さらには同じ攻撃者によって作成された可能性もあります。この結論を裏付ける証拠として、使用されたマルウェア、正確には jsextension.exe(md5:0ebdea4e452c6358f7d873f5b8da5c23)と jsextension Linux シェルスクリプト(md5:217c5e889c058c3ec7a261a654f39a0c)が挙げられます。これらのスクリプトは、klow、klown、okhsa の悪意のあるライブラリで使用されているものと同じファイル名とハッシュ値を持っています。

さらに、悪意のあるコードの動作方法は、すべての悪意のあるライブラリでも類似し、同じプリインストールおよびポストインストールの bash スクリプトやバッチスクリプトの使用方法でも類似しています。

しかし、2つだけ違いがあります。

  • この攻撃では、クリプトマイニングに異なる Monero ウォレットアドレスを使用します。
  • この攻撃は、Windows マシン上でパスワードスティーラーを使用します。この攻撃は、あらゆる種類の機密情報を含むアプリケーションに横方向から侵入するために必要な情報を攻撃者に与える可能性があります。

この攻撃からどのようにして守るか


ua-parser-js を使用している人、特に前述のような危険なバージョンを使用している人は、自分のマシンが危険にさらされていると考えるべきです。このライブラリに依存している他の多くのプロジェクトも危険にさらされている可能性があり、このサプライチェーン攻撃の影響は広範囲に及ぶ可能性があります。

また、jsextension.exe または jsextension Linux ELF バイナリがマシンに存在するかどうかを確認し、パスワードを盗むトロイの木馬である create.dll のインスタンスを特定することも重要です。

感染したマシンを特定するだけでなく、すべての認証情報をローテーションすることも重要です。パスワードスティーラーは、様々な機密アプリケーションの多くの認証情報を侵害する可能性があります。これらの認証情報をそのままにしておくと、持続的な攻撃やデータの盗難の可能性が出てきます。いつものように、ソフトウェアのサプライチェーンを保護するためのベストプラクティスを適用することが重要です。

Aquaが悪意ある行為の検知とブロックにどのように役立つか


このようなサプライチェーン攻撃は、対策が難しいと言われています。ソフトウェアのサプライチェーンには、さまざまな側面を利用した潜在的な攻撃ベクトルがあります。今回のようなサプライチェーン攻撃は、開発者のセキュリティリスクに対する意識の低さを利用して、信頼できるライブラリを経由して侵入するように設計されています。また、ビルドパイプラインに組み込まれた自動化機能を利用して、感染したパッケージが開発チームのプロジェクトへ検知されず侵入できるようになっています。

この攻撃で使用されたマルウェア、特に jsextension は、Aqua の DTA(Dynamic Threat Analysis)によって検出されたはずです(以下のスクリーンショットを参照)。DTA は、クリプトマイナーと C&C サーバの間に悪意のあるトラフィックがある場合、悪意のあるネットワークやインターネット通信の可能性も特定します。

DTA は、セキュアなホスト型サンドボックス環境を使用してイメージを展開し、ランタイムに発生するすべてのアクティビティを記録します。また、MITRE ATT&CK フレームワークに基づいて、攻撃のキルチェーンや異常なアクティビティをカタログ化し、セキュリティレビューやフォレンジック分析を行います。

このような攻撃は、セキュリティ制御を回避するように設計されているため、開発ライフサイクル全体にわたって、マルウェアや不正行為の兆候を監視することが重要です。

ソフトウェアサプライチェーン攻撃と、それに対するクラウドネイティブアプリケーションのセキュリティ確保のためのベストプラクティスについては、ウェビナー「Securing the Software Supply Chain in the Cloud Native Stack」をご覧ください。

ua-parser-js の侵害に比べれば規模ははるかに小さいですが、同様の問題は、今年の初めに Aqua のセキュリティ研究チームである Team Nautilus が Docker Hub でホストされていた5つの悪意のあるコンテナイメージを発見した際にも観察されました。

Securing the Software Supply Chain in the Cloud Native Stack

New call-to-action

新規CTA