高度なマルウェアキャンペーンにより、正規のWhatsApp API機能を完璧に模倣しつつ、疑いを持たない開発者から認証情報、メッセージ、連絡先、メディアファイルを密かに流出させる悪意のあるパッケージを通じて、npmレジストリが侵害されました。
lotusbailパッケージは、npm上で6か月間存在していた間に56,000回以上参照され、機能するコードが高度なデータ窃取を隠蔽するという、サプライチェーン攻撃の危険な進化を示しています。
このパッケージは、正規の@whiskeysockets/baileysライブラリのフォークを装い、開発者に本物のWhatsApp Web API機能を提供します。
機能不全や露骨なタイポスクワッティングで正体が露見しがちな典型的な悪意あるパッケージとは異なり、lotusbailは開発者が期待するもの――WhatsAppメッセージの送受信に使える動作するインターフェース――をそのまま提供します。
この「機能すること」を隠れ蓑にすることで、マルウェアはコードレビューを通過し、テスト工程を生き残り、最終的に従来のセキュリティ対策では真の目的を検知できない本番環境へ到達します。
動作するコードで信頼を武器化
悪意あるアーキテクチャはWebSocketの操作によって動作し、正規のWhatsApp通信チャネルをラップすることで、アプリケーションを流れるあらゆるメッセージを傍受します。

開発者がアプリケーションを認証すると、ラッパーがセッショントークンと認証キーを捕捉します。
すべての受信・送信メッセージは、意図した宛先に到達する前にマルウェアのソケットラッパーを通過し、標準機能を妨げることなくWhatsApp上の活動をすべて複製する、完璧な監視メカニズムを形成します。
盗まれたデータは、流出前に高度に暗号化されます。マルウェアは、盗んだ認証情報とメッセージを送信前に暗号化するために特別に設計されたカスタムRSA暗号化を実装しており、ネットワーク監視ツールが窃取を検知できないようにしています。
WhatsAppはすでにエンドツーエンド暗号化を提供しているため、このカスタム暗号実装はWhatsAppライブラリとして正当な目的を持ちません。
マルウェアは、流出先サーバーの場所を隠すために4層の難読化を用います。Unicode変数操作、LZString圧縮、Base-91エンコード、AES暗号化です。サーバーURLは、パッケージコード内のどこにも平文では一切現れません。
このバックドアは、npmパッケージ自体とは独立して持続します。悪意あるライブラリをアンインストールすればコードは削除されますが、WhatsAppのデバイス管理設定で手動で切断しない限り、攻撃者のデバイスは被害者のWhatsAppアカウントに恒久的にリンクされたままになります。
永続的バックドアの仕組み
この攻撃で最も危険な点は、WhatsAppのデバイス・ペアリング手順を乗っ取ることにあります。
マルウェアには、AESで暗号化されたハードコードのペアリングコードが含まれており、パッケージ内に埋め込まれています。

開発者がアプリケーションを認証すると、本人のアプリケーションだけでなく、脅威アクターのデバイスまでもが、自身のWhatsAppアカウントにリンクされてしまうことに気づきません。
脅威アクターはアカウントを完全に制御し、すべてのメッセージの閲覧、被害者になりすましての送信、メディアファイルのダウンロード、連絡先リスト全体へのアクセスが可能になります。
このパッケージには、デバッグツール、サンドボックス環境、動的解析の試みを検知するために設計された27個の無限ループ・トラップが含まれており、実行中のマルウェア挙動をセキュリティ研究者が調査することを効果的に妨げます。
Koi Securityの調査によれば、この攻撃は、巧妙なサプライチェーン侵害が行動の隠蔽によって従来のセキュリティ制御を回避するようになっていることを示しています。
静的解析ツールはコードを正当なWhatsApp機能として承認し、評判システムはダウンロード数の多いパッケージを信頼します。
lotusbailの事例は、標準的なAPI機能を提供すると主張するパッケージにおける、カスタム暗号実装やアンチデバッグ機構といった異常を検知できる、実行時の行動分析の必要性が高まっていることを浮き彫りにしています。
翻訳元: https://gbhackers.com/malicious-npm-package-2/