SOC Prime Bias: 重大

12 Jun 2026 18:47 UTC

Solana FakeFix: 安定版に偽装する25の悪意あるnpmおよびPyPIパッケージ

Author Photo
SOC Prime Team linkedin icon フォローする
Solana FakeFix: 安定版に偽装する25の悪意あるnpmおよびPyPIパッケージ
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

概要

悪意のあるパッケージキャンペーンがSolana開発者を対象に、安定ビルドの修正として偽装されたtyposquattingされたnpmおよびPyPIライブラリを介して攻撃しています。マルウェアはパッケージライフサイクルの実行とインポート時のフックを悪用し、感染環境からウォレットの秘密情報、クラウドの認証情報、SSHキーを盗みます。一部のサンプルは、Telegramベースのコマンド・アンド・コントロールを通して完全なバックドアとして動作したり、Denoを基にしたWindowsに特化したローダーを配信することで盗難を超えて広がります。

調査

JFrog Securityの研究者たちは、2つの別々で関連性のある操作を発見しました。最初のものはSolana FakeFixと追跡され、偽のSDKスタイルのパッケージを使用して開発者やビルドシステムから機密情報を収集していました。2つ目は、CMSをテーマとしたnpmパッケージを使用してWindows実行ファイルをロードします。分析の結果、悪意のあるコードはしばしば、正当な形に見えるライブラリに追加されていることがわかり、パッケージが合法的に見えるダイナミックに2番目のステージのペイロードを取得するのに役立っていました。

緩和策

組織は、開発者のワークステーション、CI/CDパイプライン、および内部パッケージキャッシュからすべての影響を受けたパッケージを削除するべきです。Solanaウォレットキー、SSHキー、AWS認証情報、GitHubトークンを含む、露出する可能性のある認証情報は直ちに回転させるべきです。セキュリティチームは、レジストリ・ランキーやスケジュールされたタスク、シェルプロファイルの変更などの持続的手法についてホストを監査するべきです。

対応

防御者は特定された悪意のあるパッケージをアンインストールし、依存関係のロックファイルをレビューして、未承認または予期しないライブラリを確認するべきです。露出したすべての秘密は一度に回転させるべきで、潜在的に危険にさらされたウォレットに保管されている暗号通貨は新しい信頼できるアドレスに転送されるべきです。CIランナーと開発システムは、その後、隠れたバックドアや持続的なメカニズムが残っていないことを保証するためにクリーンなイメージから再構築されるべきです。

"graph TB %% クラス定義セクション classDef technique fill:#99ccff classDef persistence fill:#ff99cc classDef command_control fill:#cc99ff classDef exfiltration fill:#ffcc99 classDef credential_access fill:#ffff99 %% 初期アクセスと実行フェーズ attack_supply_chain["<b>技術</b> – <b>T1195.001 サプライチェーンの妥協: <br/>ソフトウェア依存関係と開発ツールの妥協</b><br/><b>説明</b>: タイポスクワッティングとGitHubイシューのスパムを利用して、開発者を悪意のあるnpmおよびPyPIパッケージのインストールに誘導します。正当なSolana SDKを偽装しています。<br/><b>対象</b>: @solana-labs/web3.js など。"] class attack_supply_chain technique attack_user_exec_copy["<b>技術</b> – <b>T1204.004 ユーザーの実行: 悪意のあるコピー&ペースト</b><br/><b>説明</b>: 開発者がGitHubイシューまたはパッケージ手順を通して攻撃者に提案されたコマンドを実行します。"] class attack_user_exec_copy technique attack_user_exec_lib["<b>技術</b> – <b>T1204.005 ユーザーの実行: 悪意のあるライブラリ</b><br/><b>説明</b>: 開発者がプロジェクトに悪意のあるライブラリをインポートします。"] class attack_user_exec_lib technique op_exec_trigger(("AND")) class op_exec_trigger technique attack_event_trigger["<b>技術</b> – <b>T1546.016 イベントトリガーの実行: インストーラーパッケージ</b><br/><b>説明</b>: npmのpostinstallライフサイクルスクリプトまたはPyPI __init__.pyインポートを通じて攻撃者制御のコードを実行。"] class attack_event_trigger technique attack_drive_by["<b>技術</b> – <b>T1189 ドライブ・バイの妥協</b><br/><b>説明</b>: Windows実行可能ファイルやDenoベースのローダーなどのセカンダリ・ペイロードをダウンロードする。"] class attack_drive_by technique %% 永続性フェーズ persist_active_setup["<b>技術</b> – <b>T1547.014 起動またはログオン自動開始の実行: アクティブセットアップ</b><br/><b>説明</b>: レジストリ・ランキーの作成により悪意のあるペイロードを起動。"] class persist_active_setup persistence persist_windows_service["<b>技術</b> – <b>T1543.003 システムプロセスの作成または修正: Windowsサービス</b><br/><b>説明</b>: Windowsサービスの作成により永続性を確立する。"] class persist_windows_service persistence payload_deno["<b>マルウェア</b> – <b>DenoベースのCMSキャンペーン</b><br/><b>説明</b>: conhost.exeを通じてヘッドレスモードで実行する悪意のあるJavaScriptペイロード。"] class payload_deno technique %% コマンドとコントロールフェーズ c2_web_service["<b>技術</b> – <b>T1102.003 ウェブサービス: 一方向通信</b><br/><b>説明</b>: Telegramボットトークンを使用してコマンドを受け取り、データを流出。"] class c2_web_service command_control c2_dynamic_res["<b>技術</b> – <b>T1568 動的解決</b><br/><b>説明</b>: C2インフラストラクチャとの通信に動的メソッドを使用。"] class c2_dynamic_res command_control %% 資格情報アクセスと流出フェーズ cred_files["<b>技術</b> – <b>T1552.001 不安全な資格情報: ファイル内資格情報</b><br/><b>説明</b>: SolanaウォレットJSONファイル id.json、SSHキー id_rsa、AWS資格情報、および.envファイルのためにローカルファイルシステムをスキャン。"] class cred_files credential_access exfil_c2["<b>技術</b> – <b>T1041 C2チャネルを通じた流出</b><br/><b>説明</b>: 繊細なデータをTelegram APIを通じて送信する。"] class exfil_c2 exfiltration %% 接続 attack_supply_chain –>|につながる| op_exec_trigger op_exec_trigger –>|必要| attack_user_exec_copy op_exec_trigger –>|必要| attack_user_exec_lib attack_user_exec_copy –>|引き起こす| attack_event_trigger attack_user_exec_lib –>|引き起こす| attack_event_trigger attack_event_trigger –>|通じてダウンロード| attack_drive_by attack_drive_by –>|インストールする| payload_deno payload_deno –>|確立する| persist_active_setup payload_deno –>|確立する| persist_windows_service persist_active_setup –>|通じて通信する| c2_web_service persist_windows_service –>|通じて通信する| c2_web_service c2_web_service –>|使用する| c2_dynamic_res payload_deno –>|資格情報アクセスを実行する| cred_files cred_files –>|通じてデータを送信| exfil_c2 exfil_c2 –>|使用する| c2_web_service "

攻撃の流れ

検出

持続性の可能性のあるポイント [ASEPs – ソフトウェア/NTUSER ハイブ] (registry_event 経由)

SOC Primeチーム
2026年6月12日

LOLBAS Conhost (cmdline 経由)

SOC Primeチーム
2026年6月12日

コマンドとコントロールチャネルとしてのTelegram悪用の可能性 (dns_query 経由)

SOC Primeチーム
2026年6月12日

おそらく通常でないポートを持つ直接IPへのC2通信の可能性 (プロキシ経由)

SOC Primeチーム
2026年6月12日

検出するためのIOCs (SourceIP): Solana FakeFix: 25の悪意のあるnpmおよびPyPIパッケージが偽の安定ビルドで開発者を誘引

SOC Prime AIルール
2026年6月12日

検出するためのIOCs (DestinationIP): Solana FakeFix: 25の悪意のあるnpmおよびPyPIパッケージが偽の安定ビルドで開発者を誘引

SOC Prime AIルール
2026年6月12日

遠隔ダイナミックペイロードとTelegram C2を含む悪意のあるパッケージ活動の検出 [Windowsネットワーク接続]

SOC Prime AIルール
2026年6月12日

悪意のあるスクリプト実行のためにヘッドレスモードでのconhost.exeの実行 [Windowsプロセス作成]

SOC Prime AIルール
2026年6月12日

CMS Windowsローダーのレジストリランキー持続性の検出 [Windowsレジストリイベント]

SOC Prime AIルール
2026年6月12日

PowerShellプロファイルフックの持続性と隠れたPowerShell実行の検出 [Windows PowerShell]

SOC Prime AIルール
2026年6月12日

シミュレーション実行

前提条件: テレメトリー & ベースラインプレフライトチェックが通過していること。

理由: 本セクションは、攻撃者の技術(TTP)によってトリガーされる検出ルールの正確な実行を詳細に説明しています。コマンドと叙述は、特定されたTTPを直接反映し、検出ロジックで予想される正確なテレメトリを生成することを目的としています。抽象的または無関係な例は誤診につながります。

  • 攻撃の叙述とコマンド: 攻撃者は最初のアクセスを取得し、ホールドを維持することを意図しています。彼らはDenoベースのペイロードを使用することを決定します。ターミナルの実行を隠すために、彼らは --headless フラグを conhost.exeに使用します。彼らは HKCUSoftwareMicrosoftWindowsCurrentVersionRun レジストリキーを修正し、 DenoUpdater という名前の値を追加し、 conhost.exe --headless deno.exe [malicious_script]を実行します。これにより、ユーザーログイン時にバックグラウンドで静かにペイロードが実行されるようになります。

  • 回帰テストスクリプト:

    # レジストリランキーを通じたDenoベースの持続性のシミュレーション
    $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    $Name = "DenoUpdater"
    $Value = "C:WindowsSystem32conhost.exe --headless C:UsersPublicdeno.exe malicious_payload.js"
    
    Write-Host "[*] 持続性メカニズムをシミュレート中..."
    New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType String -Force
    Write-Host "[+] レジストリキーが作成されました。SIEMでアラートを確認してください。"
  • クリーンアップコマンド:

    # シミュレートされた持続性のクリーンアップ
    $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    $Name = "DenoUpdater"
    
    if (Get-ItemProperty -Path $RegistryPath -Name $Name -ErrorAction SilentlyContinue) {
        Remove-ItemProperty -Path $RegistryPath -Name $Name -Force
        Write-Host "[+] クリーンアップが完了しました。レジストリキーが削除されました。"
    } else {
        Write-Host "[-] クリーンアップ失敗:レジストリキーが見つかりません。"
    }