5年間潜伏したスリーパー:Tracer.Fodyを装う悪意あるNuGetパッケージが暗号資産ウォレットを吸い上げる

Image

.NETエコシステム内で、広く使われているトレーシングライブラリのすり替えに起因する潜在的な脅威が発見された。5年以上にわたり、悪意あるパッケージがNuGetリポジトリで流通し、正規コンポーネントを装いながら密かに暗号資産ウォレットのデータを狙っていた。

問題のパッケージ「Tracer.Fody.NLog」は、著名なTracer.Fodyライブラリ、さらにはその作者まで模倣していた。これはSocket脅威リサーチチームによって特定された。NuGetページ上では、トレーシングをNLogと統合するための標準的な拡張に見えたが、内部にはStratisウォレットのデータを流出させるためのコードが隠されていた。埋め込まれたライブラリは既定のStratisディレクトリをスキャンし、.wallet.jsonファイルを見つけて内容を抽出し、対応するパスワードとともに攻撃者が管理するサーバーへ送信していた。

欺瞞を維持するために複数のカモフラージュ手法が用いられていた。パッケージ名は元の名称とごくわずかな差異しかなく、発行者アカウントcsnemessも正規メンテナー名csnemesと1文字違いだった。さらにコードでは、見た目がラテン文字と区別できないキリル文字の同形異字(ホモグリフ)を悪用していた。その結果、型名や属性名は一見正しく見えるものの、Unicodeレベルでは異なっており、手作業での検査を難しくしていた。

プロジェクトに導入されると、この悪意あるパッケージは汎用の引数検証ヘルパーメソッドに静かに組み込まれた。アプリケーション内にWalletPasswordプロパティを含むオブジェクトが現れるたびにバックグラウンド処理が起動し、通知やログ出力なしにウォレットデータとパスワードをリモートサーバーへ密かに送信した。エラーは抑制され、アプリケーションの挙動は外見上影響を受けないようにされていた。

2020年に初公開されたTracer.Fody.NLogは、時間の経過とともに約2,000回のダウンロードを蓄積した。研究者によれば、長期間にわたる存在と説得力のある偽装により、Stratisベースのプロジェクトに関連するプライベートツール、開発者のワークステーション、ビルドパイプラインへ侵入できていた可能性がある。発見時点でも当該パッケージはNuGet上で入手可能であり、プラットフォームのセキュリティチームには適切に通知された。

この事案は孤立したものではなかった。2023年には、同様のインフラがパッケージ「Cleary.AsyncExtensions」の配布に用いられ、Stephen Clearyの成果物を装ってニーモニックフレーズとパスワードを傍受し、同じIPアドレスへ転送していた。このパターンは、信頼されたユーティリティライブラリの悪用を通じて.NETのサプライチェーンを狙う継続的なキャンペーンを示唆している。

専門家は、トレーシング、ロギング、ビルド時のコード書き換えツールは広く採用され、機密データへアクセスできることが多いため、特にリスクが高いと警告している。Tracer.Fody.NLogの事例は、長年使われてきた一見無害な依存関係であっても、何年にもわたり潜在的な侵害源として潜み得るという厳しい現実を浮き彫りにしている。

翻訳元: https://meterpreter.org/the-five-year-sleeper-malicious-nuget-package-poses-as-tracer-fody-to-drain-crypto-wallets/

ソース: meterpreter.org