PCPcatマルウェア、React2Shellの脆弱性を悪用し59,000以上のサーバーに侵入

概要:大規模なReact2Shell攻撃が59,000台超のサーバーを標的

「PCP」と自称するグループによる高度な攻撃キャンペーンが、わずか48時間で59,128台ものサーバーを侵害しました。この攻撃は、Next.jsおよびReactフレームワークの深刻な脆弱性(CVE-2025-29927およびCVE-2025-66478)を悪用するもので、驚異的な64.6%の成功率を記録しています。セキュリティ研究者はDockerハニーポットの監視中にこの大規模な作戦を発見し、Reactベースのアプリケーションを標的とする産業規模の攻撃インフラとコマンド&コントロール(C2)機能が稼働していることを突き止めました。

活動中のC2サーバーへの直接偵察により、PCPcatがすでに91,505のIPアドレスをスキャンしていることが判明。現在の攻撃速度が維持されれば、毎日約41,000台のサーバーが追加で侵害されると予測されています。

React2Shellの脆弱性とマルウェアの動作

PCPcatマルウェアは、公開されているNext.jsドメインに対する大規模な偵察から攻撃を開始します。この攻撃は、高度なJSONペイロード操作とプロトタイプ汚染技術を組み合わせたものです。エクスプロイトチェーンは、child_process.execSync()関数を介してコマンドを実行し、結果はHTTPヘッダーリダイレクトを通じて外部に送信されます。

偵察とエクスプロイトの詳細

  • 初期の脆弱性検証は、簡単なコマンド実行テストを通じて行われ、リモートコード実行が確認された後に、体系的な認証情報抽出に進みます。
  • エクスプロイト成功後、マルウェアは環境変数データベース(.envファイル)、SSHプライベートキー、AWS認証情報、Docker設定ファイル、Git認証情報、システム認証ファイルなどの機密性の高いファイルを優先的に抽出します。
  • 研究者らは、マルウェアが~/.bash_historyを照会し、最近のコマンドシーケンスをキャプチャしていることを確認しました。これにより、攻撃者は侵害された環境内でさらなる攻撃ベクトルを特定することが可能になります。

永続化とC2インフラ

このキャンペーンは、永続性を確立するためにGOST v2.12.0(SOCKS5プロキシ)とFRP (Fast Reverse Proxy) v0.52.3をインストールします。これらは、systemdサービスとして自動再起動機能付きでデプロイされ、システムの再起動後もアクセスを維持します。これにより、ネットワークのピボットと長期的なアクセスの永続化が可能になります。

C2インフラは、シンガポールを拠点とするサーバー(67.217.57.240)から、主に以下の3つのポートを介して運用されています。

  • ポート666:悪意のあるペイロードを配信するディストリビューションサーバー
  • ポート888:FRPリバーストンネルインフラをホスト
  • ポート5656:APIコマンドセンターとして機能

C2の深刻なセキュリティ脆弱性

公開されたC2 APIの分析により、複数のセキュリティ上の脆弱性が明らかになりました。最も懸念される点は、C2 APIが認証や認可メカニズムなしで運用されており、運用エンドポイントへの無制限のアクセスを許していることです。

  • /domainsエンドポイントは、クライアント検証なしに2,000のターゲットIPアドレスをリクエストごとに返します。
  • /resultエンドポイントは、入力サニタイズなしに認証情報データを受け入れ、テスト中に偽のAWS認証情報、GitHubトークン、SSHキーを正常に取り込んでいます。
  • 最も致命的なのは、/statsエンドポイントが、スキャンされた総ターゲット数、成功したエクスプロイト数、収集された認証情報の数、運用バッチ情報を含む、キャンペーンの完全なメトリクスを公に露出していることです。

推奨される対策

Next.jsまたはReactアプリケーションを運用している組織は、CVE-2025-29927およびCVE-2025-66478に対処するパッチを直ちに適用する必要があります。セキュリティチームは、環境変数、SSHキー、認証情報ストアに対して不正アクセスの兆候がないか監査するべきです。ネットワーク監視においては、67.217.57.240のポート666、888、5656への外部接続、および侵害されたシステム上でのGOSTおよびFRPプロセスの特定に優先的に焦点を当てる必要があります。


元記事: https://gbhackers.com/pcpcat-malware/