ハッカーがソフトウェアのインストール時にSSH風のファイル名でマルウェアペイロードを隠しており、開発者エコシステムを狙った組織的なサプライチェーン攻撃の一部であることが確認されています。
この攻撃は、PHPの環境で使用される予定のcomposer.jsonではなく、package.json内に隠された自動実行スクリプトに基づいています。
このような微妙な配置により、マルウェアはComposerメタデータのみに焦点を当てた通常の依存関係レビューでの検出を回避できます。
トリガーされると、スクリプトは以下のコマンドを実行します:
- 攻撃者が管理するGitHub ReleasesのURLからバイナリをダウンロードします。
- /tmp/.sshd に保存し、正規のSSHファイルのように見せかけます。
- それを実行可能にマークします。
- エラーを抑制しながらバックグラウンドで実行します。
/tmp/.sshdの使用は特に欺瞞的です。通常のシステムプロセス名に見えるため、インシデント対応時の疑いを減らします。
Socketは、dev-mainやdev-masterなどの開発ブランチに関連する8つの危険にさらされたPackagistパッケージを特定しました。これにはdevdojo/waveやdevdojo/genesisなどの広く使用されているプロジェクトが含まれます。どちらもLaravelスターターキットで、数千のインストール数があります。
Socketのセキュリティ研究者がこのキャンペーンを発見しました。複数のPackagistパッケージに影響を与えており、危険にさらされたアップストリームリポジトリが変更され、インストール時にマルウェアが静かに実行されるようになっていました。
マルウェアペイロードはすべての影響を受けたパッケージで一貫していており、孤立した事件ではなく、組織的なキャンペーンを示しています。特に、PHPバックエンドとJavaScriptツールを組み合わせたプロジェクトに影響を与えており、npm installがライフサイクルスクリプトをトリガーします。
より広くGitHubで検索すると、このキャンペーンが攻撃者管理アカウントに関連しており、類似のペイロード参照を含む数百のリポジトリが明らかになりました。すべてのインスタンスが確認された危険にさらされたものではありませんが、規模は同じインフラの広範な再利用を示唆しています。
ハッカーがSSHにLinuxマルウェアを隠す
調査により、攻撃者が直接アップストリームGitHubリポジトリを変更し、マルウェアコミットを挿入したことが示されています。Packagistが自動的にこれらのリポジトリを追跡するため、Packagist自体の侵害を必要とせずに、感染したコードがパッケージ配布に広がりました。
最初の検出から約17時間後、攻撃者管理アカウント parikhpreyash4 のGitHubコード検索により、多くのNode.jsリポジトリを含む数百の公開コード結果が返されました。
このテクニックはブランチ追跡バージョンの重大な弱点を強調しています。固定リリースとは異なり、dev-mainなどのバージョンは最新のリポジトリ状態を動的に反映しており、マルウェアの変更を導入してから削除でき、バージョンラベルに明らかな痕跡が残りません。
パッケージのインストールを超えて、同じペイロードはGitHub Actionsワークフローでも発見されました。感染したリポジトリには、「Dependency Cache Sync」のようなルーチンタスクに偽装した悪意のあるステップが含まれており、自動ビルドおよびデプロイメントプロセス中の実行を保証します。
このpostinstallスクリプトとCI/CDワークフローを介した二重実行戦略は、開発者マシンと本番環境パイプラインの両方にわたって到達を最大化するという攻撃者の意図を示しています。
このキャンペーンはパッケージのインストール中にリモートコード実行を可能にします。主な危険要因は以下の通りです:
- TLS検証の無効化(curl -k)により、安全でないダウンロードが可能になります。
- 整合性チェックなしの認証されていないバイナリの実行。
- 検出を回避するためのバックグラウンド実行とエラー抑制。
2番目のペイロードはもはやアクセスできませんが、初期ダウンローダーの動作だけでパッケージを悪意のあるものとして分類するのに十分です。
スターターキットは最も高いリスクを提示しています。なぜなら、悪意のあるpackage.jsonをプロジェクトルートに配置し、セットアップ中にスクリプトが即座に実行されるようにするからです。対照的に、vendor/以下にインストールされたライブラリ依存関係は、明示的に呼び出されない限り、そのようなスクリプトをトリガーする可能性は低いです。
対策
組織は以下のステップを実行すべきです:
- 依存関係のcomposer.jsonとpackage.jsonの両方のファイルを監査してください。
- 本番環境ではブランチ追跡バージョンに依存することを避けてください。
- インストール時のスクリプトを監視し、予期しないネットワークコールをブロックしてください。
- ソフトウェア構成分析(SCA)ツールを使用して疑わしい動作を検出してください。
- CI/CDワークフローで不正なコマンドや外部ダウンロードを確認してください。
Socketは影響を受けたパッケージをPackagistに報告し、削除されました。しかし、ブランチ追跡バージョンの性質上、アップストリームリポジトリがパッチされないままであれば、危険にさらされたパッケージが再び出現する可能性があります。
このキャンペーンはソフトウェアサプライチェーン攻撃の増加する複雑さを強調しており、特に複数のパッケージマネージャが共存するハイブリッドエコシステムではそうです。
開発者とセキュリティチームは、そのような脅威を効果的に検出および防止するために、単一の依存関係レイヤーを超えて可視性を拡大する必要があります。
侵害の兆候
GitHubアカウント:
parikhpreyash4
GitHubリポジトリ:
parikhpreyash4/systemd-network-helper-aa5c751f
ペイロードURL:
https://github.com/parikhpreyash4/systemd-network-helper-aa5c751f/releases/latest/download/gvfsd-network
ペイロードファイルパス:
/tmp/.sshd- 疑わしいコマンドフラグメント:
curl -skLchmod +x /tmp/.sshd/tmp/.sshd &
注: IPアドレスとドメインは意図的に難読化されており(例: [.])、誤った解決またはハイパーリンク設定を防ぎます。MISPやVirusTotal、またはあなたのSIEMなどの管理された脅威インテリジェンスプラットフォーム内でのみ難読化を解除してください。
翻訳元: https://gbhackers.com/hackers-hide-linux-malware-in-ssh/