OSSリポジトリによって拡散されるマルウェア(2025年第2四半期の動向)

文●フォーティネットジャパン 編集●ASCII

提供: フォーティネットジャパン

  • この記事をはてなブックマークに追加
  • 本文印刷

本記事はフォーティネットジャパンが提供する「FORTINETブログ」に掲載された「オープンソースレジストリに広がる不正パッケージ:検知の統計情報および傾向(2025年Q2)」を再編集したものです。

 Fortiguard Labsは以前のブログで、サプライチェーンセキュリティのマルウェア配布チャネルとして、オープンソースソフトウェア(OSS)リポジトリの利用が増えている傾向を明らかにしました。開発ワークフローでサードパーティパッケージへの依存が続く中、不正コードの拡散、データの流出、およびその他の損害の発生で、脅威アクターがオープンソースエコシステムの脆弱性を悪用することが増加しています。

 FortiGuard Labsは、独自のAIを活用したマルウェア検知システムと継続的監視システムを活用して、新たに公開されたパッケージをリアルタイムに追跡し検知する態勢を構築しました。このような継続的なグローバル監視により、新たな脅威や進化する攻撃手法を迅速に特定することができます。

 第2四半期(2025年Q2)に収集したデータを分析したところ、OSSリポジトリの使用は、サプライチェーンのマルウェア配布チャネルとして引き続き存在しているだけでなく、中核の手法も基本的に変化していないことがわかりました。本レポートでは、第2四半期に実際に観察された不正パッケージの活動に関する最新の統計情報を紹介します。また、今四半期に発見された不正パッケージの例をいくつかピックアップして紹介し、OSSエコシステムで観測された傾向と手法に関する知見について説明します。

 今四半期中、当社の自動脅威検知プラットフォームは、140万件のNPM(Node Package Manager)パッケージと40万件のPyPI(Python Package Index)パッケージをスキャンし、非常に多くの不正パッケージを発見しました。これらの不正パッケージの大部分はデータ流出に焦点を当てています。データ流出は、セットアップスクリプトやインストールスクリプトを利用する最も一般的な悪意のある活動の1つであり、以前のブログで観測した脅威パターンと傾向が継続していることが再確認されました。

 上記の統計情報に示すように、アナリストが数千の不正パッケージを確認したところと、少ないファイル数、存在しないリポジトリ、およびインストールスクリプトの使用の割合が高いことから、マルウェア作成者の狙いは、コードの痕跡を最小限に抑え、トレーサビリティを削減し、インストールプロセス時に不正なペイロードをサイレントに展開することであると示唆されます。また、前四半期と比較して、難読化の使用が増加していることも観察されました。

 詳しく見るために、ここでは当社のQ2の調査結果の例をいくつか紹介します。

不正なPythonパッケージを利用して、標的の認証情報やウォレットを盗難

 Q2に発見された複数の不正なPyPIパッケージは、具体的にはsimple-mali-pkg-0.1.0、confighum-0.3.5, sinontop-utils-0.3.5、solana-sdkpy-1.2.5、およびsolana-sdkpy-1.2.6で、これらは、攻撃手法の代表的な例として、我々の統計調査の結果にも表れています。これらのパッケージは、脅威アクターが利用する一般的な手法が複数採用されており、例えば、インストールスクリプトの実行、コマンドの上書き、少ないファイル数、リンクされたリポジトリの欠如、およびコードの正体を隠すためのコードの暗号化や難読化、インストール時の不正な動作の実行などが含まれます。

図1:simple-mali-pkg-0.1.0のsetup.py

 simple-mali-pkg-0.1.0のsetup.pyファイルで、当該パッケージの不審なファイル「mali.py」が実行されます。mali.pyファイルを調べると、暗号化された大量のコードを確認できます。このコードは、その真の意図を隠すために数十の多段階的な暗号化が使用されています。

図2:simple-mali-pkg-0.1.0のmali.py

 完全に復号化すると、その動作が明らかになりました。以下はコードスニペットの1つで、認証情報やウォレットの盗難を行うことが示唆されています。

図3:個人データやウォレットの盗難が示唆される復号化されたmali.py

NPMマルウェアパッケージも同様:難読化されたコードを使用してデータを盗難

 このNPMパッケージの例は、不正な動作が類似しており、データ盗難とデータ流出が確認されています。パッケージpostcss-theme-vars-7.0.7とsimple-mali-pkg-0.1.0は、実装は異なりますが、類似する中核的な動作は共通しています。パッケージには、test-simples.datというファイルに不正コードが存在しますが、拡張子によって、中身がJavaScriptであるという事実が隠蔽されています。また、このファイルには難読化されたコードが大量に含まれています。前四半期の初め、正規のPostCSSライブラリに偽装した似た名前のパッケージが、Socket社によって報告されました。この脅威は、情報開示以降も継続していますが、現在はコードのバリエーションが新たに確認されています。このことから、オープンソースエコシステム内で、データ盗難キャンペーンが依然として継続していることが強く示唆されます。

図4:postcss-theme-vars-7.0.7のtest-samples.dat

 コードの難読化を解除すると複数の関数が存在し、機密情報である複数のブラウザプロファイル、ウォレット、認証情報、およびドキュメントなどを盗難する目的で設計されていることが明らかになりました。また、攻撃者が制御するリモートサーバーにデータを転送するために、スクリーンショットキャプチャ、キーロガーなどの手法も利用していました。難読化を解除したtest-samples.datのスニペットの一部を以下に示します。

図5:このコードスニペットは、攻撃者が制御するリモートサーバーとのソケット接続を作成

図6:このコードスニペットはChromeとBraveのブラウザプロファイルをターゲットにし、保存されているパスワード、オートフィル(自動入力)データ、および拡張機能の設定を収集

図7:このコードスニペットは、秘密裏に被害者のコンピュータをスキャンして秘密情報を探し、データ流出を実施

図8:このコードスニペットは、キーボード入力の記録、クリップボードの監視、およびスクリーンショットの撮影を実施

結論

 2025年Q2のデータ分析の調査結果は、前四半期に実施した観測結果を補強するものです。マルウェアを拡散させる手法として、OSSリポジトリの悪用は依然として続いています。全体的な手法が大幅に進化したわけではありませんが、攻撃者は、ファイル数の最小化、インストールスクリプトの利用、および目立たないデータ流出手法による影響の最大化など、実績のある手法を利用し続けています。

 また、難読化の増加が続いていることからも、これらのサービスのユーザーは、警戒および継続的な監視を行う必要があることが重要であるとも指摘しています。OSSの成長が続くのに伴い、サプライチェーンの脅威の攻撃対象領域も拡大しています。

 組織および個人としては、OSSサプライチェーン脅威に関する知識と認識を持ち、自身の防御を強化することを強くお勧めします。このことは、潜在的なリスクを効果的に軽減または防止するための重要な第一歩です。

フォーティネットのソリューション

 FortiGuardアンチウイルスは、本レポートで識別された悪意のあるファイルを次のように検知します。

 simple-mali-pkg-0.1.0: Python/FreeCodingTools.10037449!tr
 confighum-0.3.5: Python/FreeCodingTools.10037449!tr
 sinontop-utils-0.3.5: Python/FreeCodingTools.10037449!tr
 solana-sdkpy-1.2.5: Python/FreeCodingTools.10037449!tr
 solana-sdkpy-1.2.6: Python/FreeCodingTools.10037449!tr
 postcss-theme-vars-7.0.7: JS/Stealer.A!tr

 FortiGuardアンチウイルスサービスは、FortiGate、FortiMail、FortiClient、およびFortiEDRでサポートされています。最新のアンチウイルス更新を実行しているお客様は保護されています。

 FortiGate、FortiMail、FortiClient、FortiEDRは、FortiGuardアンチウイルスサービスをサポートしています。最新の保護機能を備えたこれらの製品をお使いのお客様は、脅威から保護されています。

 FortiGuard Webフィルタリングサービスは、本レポートに記載されているダウンロードURLを「不正URL」として検知しブロックします。

 FortiDevSec SCAスキャナは、本レポートに記載されているパッケージを含め、ユーザーのプロジェクトで依存関係として動作する可能がある悪意のあるパッケージをテスト段階で検知し、ユーザーの製品の中にこれらの依存関係が導入されるのを防止します。

 これらの脅威またはその他のサイバーセキュリティ脅威がお客様の組織に影響を与えていると思われる場合は、当社のグローバルFortiGuardインシデントレスポンスチームまでご連絡ください。

IOC(Indicators of Compromise:侵害指標)

パッケージ名 Sha256 検知
simple-mali-pkg-0.1.0 a9114a446a136ddf38c16f9e1bb1a834
00cba423d0d97df121a54b67829be7b9
Python/FreeCodingTools.10037449!tr
confighum-0.3.5 2e037be549c01fec14d9cad590757084
76e90456deb53811f4301eb111c1104b
Python/FreeCodingTools.10037449!tr
sinontop-utils-0.3.5 00892955b1a2302536f4d7175cd30d89
f961c1f45d56461e62ba0549b5906ae9
Python/FreeCodingTools.10037449!tr
solana-sdkpy-1.2.5 d63099defcc1ee6dcbcbb68383e43534
7b661a9e399f5a028f735b5f6f3f86d7         
Python/FreeCodingTools.10037449!tr
solana-sdkpy-1.2.6 de23b7350619938388cc01f8086df958
58495c6c8d73743a3c20d0ced3aece5b
Python/FreeCodingTools.10037449!tr
postcss-theme-vars-7.0.7 2d9d200b8e167fc95120e893dd3d7d02
789a8ba41ba2632af2e342f35d1d2283

JS/Stealer.A!tr

■関連サイト