脅威動向 / THREATS / BIG-IP APM
ディスクに残らないWebシェル — F5 BIG-IP APMを狙うPHPルートキットをSophosが解析
SophosLabsは2026年9月7日、F5 BIG-IP APM環境を狙うLinuxインプラントの解析を公表した。ApacheのPHP実行基盤に寄生し、メモリ上だけでWebシェルを組み立てるうえ、TCP待受を開かずにUNIXソケット経由でシェルも提供する。侵入には悪用確認済みのCVE-2025-53521が関連付けられている。
SophosLabsは2026年9月7日、F5のBIG-IP APM(Access Policy Management)環境を狙うLinuxインプラントの解析結果を公表した。このマルウェアは一般的なWebシェルと同じくサーバー側での任意コード実行を攻撃者に与えるが、その実装は大きく異なる。ApacheのPHP実行基盤そのものに寄生し、ディスク上のファイルを変更せず、メモリ上にだけWebシェルを組み立てる。あわせてTCPの待受ポートを開かずに使える対話シェルも備える。Sophosは検出名をLinux/Agnt-ICとしている。
侵入口は悪用確認済みのBIG-IP APMのRCE
Sophosによると、このインプラントはApache・libphp(Apache用のPHP実行モジュール)・APR(Apacheの可搬実行基盤)モジュール読み込み・BIG-IP APMのwebtop構成要素・BIG-IPのアップグレード手順を前提に作られており、特定環境専用に開発されたものとみられる。F5は関連する活動クラスター「c05d5254」を、BIG-IP APMの脆弱性CVE-2025-53521の影響下にあるシステムと関連付けている。CVE-2025-53521は、仮想サーバーにアクセスポリシーを設定したBIG-IP APMに対する未認証のリモートコード実行(RCE)の脆弱性で、NVDはCVSS v4.0基本値9.3・深刻度Criticalとしている。影響を受けるのはBIG-IP 17.5/17.1/16.1/15.1系の特定バージョン未満である。
Sophosは、影響を受けるBIG-IP APMを使っている可能性がある場合は、同社の解析記事にある汎用的なApache・PHP堅牢化策よりも先に、F5の修復ガイダンスと侵害評価手順に従うよう呼びかけている。
第一段階がhttpdを感染させ、第二段階が常駐する二段構え
Sophosの分析では、今回の検体は第二段階ペイロードに相当する。並行して調べたumount(Linuxの標準コマンド)内の検体は、インストーラ/拡散役に相当する別の構成要素だった。この第一段階は、/usr/sbin/httpdに悪性コードを付加して感染させ、BIG-IPのアップグレード用イメージ内でも感染を維持し、SELinux設定を変更したうえで今回のペイロードを展開する。BIG-IPのアップグレード/インストール用イメージの展開先(例:/mnt/tm_install配下)を探す動作も確認された。感染後のhttpdの悪性部分のサイズと、umount検体内の埋め込みペイロードのサイズが一致したことから、Sophosは後者が前者を展開したものと評価している。
ESETの研究者もこのマルウェア群を解析し、「PoisonedRefresh」と命名している。ESETは2026年4月の公開投稿で、umount検体が正規バイナリの先頭に悪性ELFを付加して/usr/sbin/httpdへ感染させること、SELinuxを無効化すること、インストールメディア側のファイルにも感染して他のBIG-IPへ広がり得ること、帰属は未確定であることを報告している。SophosはESETの分析を把握したうえで、重なる動作を独自に確認し、さらに詳細を付け加えたと説明している。
メモリ上だけでWebシェルを組み立てる仕組み
第二段階の検体は、動作に必要な文字列をRC4(16バイト鍵)で暗号化して隠し、ホストアプリのmain関数が呼ばれるより前に実行権を得る。具体的にはlibcの起動処理__libc_start_mainを横取りし、自前のローダーで処理を開始する。続いてAPRのモジュール読み込み関数apr_dso_loadをフックし、Apacheがlibphpを読み込んだ瞬間だけ動作対象を切り替える。/proc/self/mapsでlibphpのメモリ位置を特定し、一時的に書き込み可能へ変えて呼び出し先を付け替える。
Webシェルの実体は、BIG-IP APMのwebtop環境に存在するPHPファイル3件(apm_css.php3、full_wt.php3、webtop_popup_css.php3)をPHPが開いた際に記録し、メモリマップ(mmap)される瞬間に悪性PHPを先頭へ付加した改変像を作る。ディスク上のファイル自体は無改変のまま残るため、ファイル検査だけでは見落とす恐れがある。埋め込みペイロードはリクエスト本文の先頭に短い合言葉(BSOHAzPB)があるかを確認し、残りを簡易ストリーム暗号で復号してevalで実行する。応答はHTTP 201とContent-Type: text/css; charset=utf-8を返し、通常のCSS配信に紛れ込む。
TCP待受なしの対話シェルも併設、到達経路は不明
Webシェルとは別に、このインプラントは**/run/bigtlog.pipeというUNIXドメインソケットを作成し、短い認証トークン(Kzwd6jM5)の照合後に標準入出力を/bin/bashへ接続する**。TCPの待受ポートを開かないため、ネットワーク監視だけでは見つけにくい。興味深い点として、Sophosは検体内に攻撃者側がこのソケットへ接続するためのコードを見つけられなかった。Webシェル経由でソケットを利用できる可能性はあるが、それを裏付ける証拠も反証もないと同社は明記している。
特定の脅威アクターへの帰属について、Sophosは証拠が不十分として断定していない。標的選定と実装の手口からは一定の洗練がうかがえると述べるにとどめている。
SophosとF5が示す確認の手がかり
Sophosは、“ファイルとして存在するWebシェルを探す”という従来の前提がこの検体には通用しないと指摘する。ディスク上のPHPが正常に見えても、プロセス内のメモリ像には悪性コードが含まれ得るためだ。同社は調査の手がかりとして、以下の公開内容を示している。
- 上記3件の.php3へのリクエスト、特にPHPがCSSと称してHTTP 201を返す応答
- Apacheワーカーによる/proc/self/maps参照直後のlibphpへのメモリ権限変更
- /run/bigtlog.pipeの作成、Apache系プロセスからの/bin/bash起動
- 同社は侵害の疑いがある場合、揮発性証拠の保全を先行し、二経路アクセスを前提に調査し、再起動だけでは除去の保証にならないと注意している
BIG-IP APMを境界で運用する組織では、まずF5のアドバイザリで対象バージョンと侵害評価手順を確認することが出発点になる。
この記事は、公開情報と編集部の調査・知見をもとに構成しています。内容は公開時点の情報に基づく解説であり、個別の環境への診断・対応を保証するものではありません。重要な判断では、記事内の出典や各提供元の最新情報もご確認ください。