PHP2Shell とカーネル特権昇格を連結し、PAN-OS ファイアウォール 25 台を掌握

Dream Research が復元した作戦では、攻撃者は認証なしの HTTPS リクエスト 1 本で PHP2Shell のコード実行とカーネル特権昇格を連結し、PAN-OS の root を取った。公開されていた 19,000 台から 240 台に絞り、24 台に webshell を仕込み、うち 2 台は同じ米政府関連機関のものだった。

日本語
コピー
攻击路径示意图:互联网上的攻击者经 PHP2Shell 与 Fragnesia 拿下边界防火墙,再通过反向 SSH 隧道抵达内部防火墙管理服务器,最终连到域控制器

更新:2026年10月29日。

この発見以降、Dreamの研究チームはPalo Alto Networks(問題のファイアウォールのベンダー)と共同で調査を進め、随時情報を共有してきた。詳細はPalo Alto Networksのウェブサイトを参照されたい。本記事にも追加情報を反映済みである。

独自のPHP2ShellエクスプロイトとカーネルLPEを連鎖させ、実際の環境でPalo Alto Networks PAN-OSファイアウォールの複数バージョンをroot化

10月25日、Dreamの研究者は、25台のサーバーをroot化した中国系のAI支援キャンペーンの痕跡を発見した。侵害された中には米国政府関連環境のシステムも含まれる。攻撃者はPHP2Shellとカーネルの権限昇格エクスプロイトを組み合わせ、外部に露出したシステムを侵害した。

影響を受けたのは、特定バージョンのPalo Alto Networks PAN-OSを稼働する機器である。

攻撃対象となったのはPAN-OSの管理用Webサーバーで、GlobalProtectポータルもこのサーバー上で動作している。Palo Alto NetworksのUnit 42は攻撃者のツールと結果を独自に検証しており、同社は影響を受けた各ブランチで修正版PAN-OSをリリースしつつある。

ファイアウォールをroot化した後、攻撃者はActive Directoryへの攻撃を開始した。回収された痕跡から、認証情報の窃取とディレクトリの列挙が確認できる。

この作戦は、露出した管理インターフェースが組織のID基盤への侵入口になり得ることを示している。政府機関の防御側にとって、脆弱性の発見は出発点にすぎない。そこから先、脆弱なシステムの特定にとどまらず、侵害によって可能になったアクセスを把握し封じ込めることが本当の課題となる。

以下の調査は、Dreamの自律型サイバーリサーチ製品Heroを用いたプロアクティブな脅威ハンティングによって実施した。

発見の経緯

Dreamの研究者は、一連の攻撃作戦の全体像を特定した。PHP2Shellエクスプロイトチェーン(CVE-2026-109618/CVE-2026-109619)を独自に武器化したものと、Fragnesiaカーネル権限昇格(CVE-2026-46300)の組み合わせ、標的リスト、エクスプロイトのログ、そして約40本の独自ポストエクスプロイトスクリプトが含まれていた。

米国内、日本、台湾、韓国で25台のPAN-OSファイアウォールと管理サーバーをroot化したキャンペーンの痕跡も含まれていた。root化を終えると、攻撃者は米政府関連環境内の3台のサーバーに狙いを絞った。

発見された痕跡から浮かび上がったのは、実験環境でのエクスプロイト開発に始まり、米政府機関の内部Active Directoryドメインへの永続的なアクセスで終わる作戦だった。

攻撃におけるAIの利用

攻撃インフラにAI支援ツールの痕跡も確認した:

  • Claude Codeがインストールされていた

  • aiscanと呼ばれるAI搭載のオフェンシブセキュリティプラットフォームに、中国製LLMのDeepSeekとKimiが設定されていた

  • 中国の偵察プラットフォームFOFAのAPIキーが存在していた

AIツールがエクスプロイトやポストエクスプロイトのスクリプト作成に実際に使われた直接的な証拠はないが、コード構造、コメントの書き方、約40本のスクリプト間の一貫性からはAI支援による開発がうかがえる。とはいえ、この作戦は完全に自律した国家主体の攻撃には見えない。

エクスプロイト:2つの脆弱性を1つのリクエストにつなぐ

攻撃者は2つの別々のエクスプロイトを開発し、それをつなぎ合わせることで、脆弱なビルドを実行しているインターネット接続されたPAN-OSファイアウォールならどれでも、認証情報なしのHTTPリクエスト1回でrootアクセスを奪えるようにした。

PHP2Shell(CVE-2026-109618 / CVE-2026-109619)によるリモートコード実行

復元した実装は独自の非公開ビルドであり、PHP2Shellに関する既知の公開エクスプロイトのコピーではない。根底にあるコンセプトは同じだが、独自に開発され、PAN-OS専用に作り込まれたものだ。

この脆弱性は、PAN-OSの管理用Webサーバー(appweb)におけるPHPのsession.upload_progress機構を標的にする。PAN-OSはPHP 8.0.30を使用しており、メモリ上限が高いため、攻撃のメモリ破壊段階が成立する。

攻撃は4つの段階を組み合わせて進行する:

  • A1 メモリ枯渇(約383MB): 攻撃者は巨大なファイル名とセッション進捗データを含む細工したmultipart POSTリクエストをサーバーに大量送信する。これによりPHPのメモリアロケータを限界まで追い込み、システムを予測可能なメモリ配置へと誘導する。

  • B1 情報漏洩: 2回目のリクエストでA1の古いセッションID長を偽装し、範囲外読み取りを引き起こす。サーバーのSet-Cookieレスポンスヘッダーに漏洩したポインタ値が載り、実行中プロセスにおけるlibphp.soのベースアドレスが攻撃者に渡る。

  • A2 古い参照の準備(約500MB): 別のメモリプレッシャーでセッションを初期化し、http_session_varsを生きたzend_referenceとして残したうえで、2度目のOOMを起こしてmod_data=NULLを残す。これにより、B2で攻撃者が偽装できる古い参照が生まれる。

  • B2 コード実行: 最後のリクエストで、解放済みメモリ領域にPHPのHashTableエントリを偽装する。偽装エントリのpDestructorコールバックはzif_system(PHPのsystem()関数)を指し、そのデータはシェルコマンド文字列を指す。PHPのクリーンアップハンドラがHashTableを走査すると、偽装されたデストラクタが呼ばれ、nobodyユーザーとして任意のコマンドが実行される。

Fragnesia(CVE-2026-46300)によるカーネル権限昇格

nobodyとしてコード実行できても十分ではない。SELinuxがhttpd_tによるシステムファイルの変更を制限しているからだ。rootを奪い切るため、攻撃者は2つ目のエクスプロイトを連鎖させた。LinuxカーネルのXFRM ESP-in-TCPサブシステムの脆弱性である。

Fragnesiaはページキャッシュへの書き込みで/etc/pam.d/suを上書きし、認証ルールをpam_permit.so(すべて許可)に置き換える。PAMファイルはわずか774バイトなので、エクスプロイトはバイト単位のスプライシング版を使って正確に書き込む。上書き後は、パスワードなしでsu rootが成功する。

どちらのエクスプロイトも単一のB2 HTTPリクエスト内で実行される。認証なしのHTTPS接続から永続的なrootウェブシェルまで、連鎖全体が15分未満で完了する。

実験環境:大規模なバージョンプロファイリング

このエクスプロイトは、撃ちっぱなしで済む単一のペイロードではない。PAN-OSのバージョンごとに異なる正確なメモリオフセットを必要とする。zval_ptr_dtorのアドレス、zif_systemのアドレス、HashTable構造体のサイズ、そして各段階でヒープレイアウトを制御するメモリジオメトリのパラメータだ。

回収したアーティファクトの中から、11個のJSONバージョンプロファイルファイルが見つかった。テスト済みのPAN-OSバージョンごとに1つずつである。

PAN-OS ブランチPHPプロファイル備考
11.17.4.33暫定 2 件PHP 7.4 はラボで nobody として RCE を確認済みだが、チェーン全体は未較正(ベースビルドとホットフィックス 1 種)
12.1、12.28.0.30較正済み 1 件、暫定 8 件ベースプロファイル 1 件はラボで完全に検証済み。残りはそのメモリ配置を継承するか、隣接ビルドとオフセットを共有している

各プロファイルには、そのバージョンの libphp.so バイナリから抽出した正確なオフセットが含まれる。各ライブラリの SHA256 ハッシュ、ELF ビルド ID、ラボ検証で調整した詳細なメモリ配置パラメータ(チャンクサイズ、フィル回数、ドレイン回数、スプレーオフセット)も揃っている。

「較正済み」と「暫定」の違いは大きい。較正済みとは、攻撃者がそのバージョンの VM を起動してエクスプロイトを試し、メモリ配置が機能することを確認したという意味だ。暫定は、バイナリからオフセットを計算しただけで、稼働中のインスタンスでは検証していない。

キャンペーンのファネル:発見 19,000 件から悪用 25 件へ

10月8日から10月24日までのセットアップ、悪用、ピボット、ポストエクスプロイトにわたる10ステップの運用タイムライン。
図1: 10月8日のセットアップから、悪用、内部ネットワークへのピボット、10月24日のポストエクスプロイトまでのキャンペーンの運用タイムライン。

攻撃者はエクスプロイトを用意し、悪用可能な9バージョン分のプロファイルを揃えたうえで、明確なファネルに沿って標的化キャンペーンを展開した。

ステージ1: 全世界の探索(19,000件)

攻撃者はFOFA(Shodanに似た中国のインターネット資産検索エンジン)を使い、世界中でインターネットに露出しているPAN-OSファイアウォールを約19,000台特定した。いずれも管理インターフェースがインターネットに公開された機器で、証明書のフィンガープリントやHTTPレスポンスのシグネチャから見つけ出せるものだった。

ステージ2: バージョンの特定(応答5,000台)

自作のバージョンスキャナを200スレッドの並列で19,000件すべてに対して実行し、実際にオンラインの機器と稼働中のPAN-OSバージョンを割り出した。バージョン情報を返したのは約5,000台。

ステージ3: 地域とバージョンによる絞り込み(240台)

稼働中の5,000台から、攻撃者は所在国がアメリカ、日本、台湾、韓国のいずれかに限られるサーバーへと絞った。さらにエクスプロイトのプロファイルに一致するバージョン(PHP 8.0.30が動くPAN-OS 12.1系と12.2系)に限定。こうして最終的な標的リストは240台のファイアウォールになった。

アメリカ、日本、台湾、韓国は、太平洋地域における中国の国家系サイバー作戦にとって主要な戦略的敵対国かつ諜報対象の4か国である。このことから、国家主体の敵対者の関与がうかがえる。

ステージ4: 自動エクスプロイト(root取得24台)

240台は自動のバッチランナーに投入され、5台ずつ、1台あたり1800秒(30分)のタイムアウトで攻撃された。成功するたびにバッチは次の処理を実行した。

  • PHP2Shell + Fragnesiaのチェーンを最後まで走らせる

  • ファイアウォール上の公開ディレクトリに103バイトのPHP rootウェブシェルを設置する(/unauth/php/change_password.php)

  • ウェブシェル経由でidを実行し、root権限を確認する

  • 標的のホスト名とIPを成功リストのCSVに記録する

  • 次の標的へ移る

この時点で、24台のファイアウォールがroot化されていた。

ステージ5: 選別(優先2台)

root化した24台のうち22台については、攻撃者はウェブシェルを設置した以外に何もしていない。永続化もトンネルも事後侵入ツールもない。サーバーは事実上掌握されたまま放置され、攻撃者はいつでもウェブシェルから戻ってこられる状態だった。

標的と関係があると思われる2台のサーバーが、この段階を超えて先へ進んだ。どちらも米国政府関連の環境に属しているように見えた。

ステージ6: ピボット(ファイアウォールからドメインへ)

root化した24台のファイアウォールのうち、2台は米国政府関連組織のものだった。1台目のファイアウォールから抽出した実行中コンフィグには、政府関連を示す特徴が現れていた。CAC(Common Access Card)認証、特定の命名プレフィックス、政府流の標準化された資産命名規則だ。コンフィグファイルには組織の内部ネットワーク構成が丸ごと含まれていた。ドメインコントローラー、中央のファイアウォール管理サーバー、Keycloak SSOサーバー、GitLabインスタンス、GlobalProtect VPNゲートウェイ、そしてActive Directoryドメインである。

1台目のファイアウォールは10月23日18:14 UTC、自動バッチの最中にroot化された。だが直後にクラッシュし、二度とオンラインに戻らなかった。原因は約900MBのエクスプロイトトラフィックとみられる。攻撃者は2時間にわたり240回の自動プローブで監視し、復旧を待った。復旧しなかった。2台目のファイアウォールは、証明書データから標的組織のものと断定できたが、最初のバッチでタイムアウトしていた。

攻撃者は1台目のコンフィグからこの組織の価値を見て取り、専用のキャンペーンを別途立ち上げ、10月24日10:09 UTCに攻略に成功した。

数時間のうちに、攻撃者は次のことを行った。

内部ネットワークへの持続的トンネルを構築した。

8ポートのリバースSSHトンネルで侵害したファイアウォールをオペレーター側のインフラに接続し、以下へのアクセスを転送した。

  • ドメインコントローラー(LDAP、LDAPS、RDP)

  • 内部ファイアウォール管理サーバー

  • GlobalProtect VPNインフラ

  • 内部ネットワークに任意にアクセスするためのSOCKS5プロキシ

トンネルはsystemdサービスとrc.localの起動フックで包み、どちらも/usr/local/lib/.panops/からスクリプトを起動する。再起動を生き延び、自動で再接続する。

トンネル経由で管理サーバーを攻略した。 11:35 UTC、2台目のファイアウォールをroot化してから90分も経たないうちに、攻撃者は新たに得たサーバーアクセスと、同じPHP2Shell + Fragnesiaの連鎖を使い、3台目の政府サーバーである内部ファイアウォール管理サーバーを攻撃した。このサーバーはトンネル経由でしか到達できなかった。組織の全ファイアウォールを一元管理するサーバーである。これを侵害したことで、管理下の全ファイアウォールのコンフィグ、認証情報、ネットワーク設定にアクセスできるようになった。攻略したサーバーはこれで合計25台になった。

管理サーバーからAD攻撃キャンペーンを開始。 管理サーバーはVPNユーザーの認証に使われており、すでにActive DirectoryへのLDAP接続を備えていた。攻撃者はこれを足場にドメイン攻撃を仕掛けた。

  • LDAPサービスアカウントのパスワードを復号した。デバイス設定ではパスワードが暗号化されて保存されるが、root権限があればマスターキーを取得できる。攻撃者はパスワードを平文で取り出し、以降のスクリプトすべてにハードコードした。

  • LDAPクエリでドメイン内の全ユーザーと全グループを列挙した。

  • 組織を題材にしたパスワードで、全ユーザーアカウントにパスワードスプレーを仕掛けた。このドメインはlockoutThreshold=0だった。つまりアカウントロックアウトがなく、試行回数に制限もなかった。

  • バックドアとなるADアカウントの作成を試みた。ユーザーアカウント(すべてのOUで試行)とマシンアカウント(デフォルトのMachineAccountQuota設定を悪用)の両方だ。

  • 権限昇格の経路を探るため、AD ACLの連鎖を分析した。

  • Keycloak IdPの設定からSAML署名鍵の抽出を試みた。

  • Keycloak SSOの認証バイパスを探った。

攻撃の結果、すなわちパスワードスプレーで有効な認証情報が見つかったか、バックドアアカウントが作成されたか、SAML鍵を抽出できたかは、管理サーバーのローカルファイルシステムにとどまっており、われわれが回収したアーティファクトには含まれていなかった。したがって、侵害の全容は特定できない。

インターネットを越えた攻撃者から境界のファイアウォールへ、トンネルを通ってファイアウォール管理サーバーへ、さらにドメインコントローラーへと至る攻撃経路。
図2: 攻撃経路。PHP2ShellとFragnesiaが境界ファイアウォールを掌握し、リバースSSHトンネルが内部管理サーバーに到達、復号されたLDAPサービスアカウントがActive Directoryを開放する。

管理サーバー → Active Directory

状態内容
✓設定からLDAPパスワードを復号
✓ユーザーとグループの全列挙
?パスワードスプレー(全ユーザー対象、ロックアウトなし)
?バックドアユーザーとマシンアカウントの作成
?SAML署名鍵の窃取

攻撃者が現在手にしているもの

回収されたアーティファクトから、攻撃者が以下を保持していることを確認できる。

  • 再起動後も存続するリバーストンネルとSOCKSプロキシによる、組織内部ネットワークへの持続的なリモートアクセス。現在も有効な可能性が高い

  • ファイアウォール2台とファイアウォール管理サーバー上のrootウェブシェル。現在も有効な可能性が高い

  • Active Directoryのユーザーとグループの全リスト。組織の設計図そのもの

  • 復号済みのLDAPサービスアカウント認証情報。いつでもADへ直接クエリを実行できる

  • PAN-OSファイアウォールのファイルシステムから取得した秘密鍵。HAレプリケーション鍵、SSL/TLS証明書鍵、デバイス認証鍵

  • ネットワークトポロジの全体像。すべてのIP、ホスト名、サブネット、サーバーロール、VPNゲートウェイ

  • セキュリティ設定が脆弱なSAML IdPの設定(validate-idp-certificate: no)

  • 米国、日本、台湾、韓国にまたがる待機中のファイアウォール22台。いつでも攻撃可能な状態にある

判断できないのは、パスワードスプレー、バックドアアカウントの作成、SAML鍵の窃取が成功したかどうかだ。これらのいずれかが成功していれば、侵害は境界のファイアウォールをはるかに超え、組織のID基盤にまで及ぶ。

帰属の指標

本件を特定の脅威アクターに帰属させることはしない。Palo Alto NetworksのUnit 42はこの活動をCL-UNK-1280として追跡し、UTC+8のタイムゾーンにいる中国語話者の攻撃者に帰属させている。ただし、中国系の関与を示す指標は複数ある。

指標詳細
標的の選択米国、日本、台湾、韓国のみ。いずれも太平洋における中国の国家系作戦が狙う主要な戦略的諜報標的である。
FOFA標的の探索に使われたインターネット偵察プラットフォームは中国のサービス。
iox回収されたツールの中にあった、中国製のトンネリングユーティリティ。
DeepSeekとKimi攻撃型セキュリティプラットフォームaiscanに設定されていたLLMは中国の言語モデル。
UTC+8のタイムスタンプインフラの時計は中国標準時で動いていた。標的のHTTP Date:レスポンスヘッダーとログのタイムスタンプを比較して確認済み。
中国語のプロンプトaiscanのセッションログに中国語のユーザーメッセージが含まれている。

結論

この攻撃は、場当たり的な悪用とは一線を画す準備と能力を示している。攻撃者は脆弱性調査に多大な労力を投じた。PAN-OSのファームウェアを入手して復号し、PHPライブラリを抽出し、9種類のソフトウェアバージョンそれぞれについて精密なメモリプロファイルを構築し、実験環境でのテストを通じてエクスプロイトの形状を調整した。エクスプロイト自体は自動化され、効率的だった。240の標的を一度に試行し、バージョン固有のプロファイルを自動で選択している。

標的は明確に政府機関に絞られていた。

攻撃者は19,000台のファイアウォールをスキャンし、24台をroot化し、その中から重要な2台を即座に特定した。米国政府関連のファイアウォールを侵害してから数時間のうちに、内部ネットワークへのトンネルを張り、同じPHP2Shellエクスプロイトで3台目のサーバーを侵害し、Active Directoryに対する本格的な攻撃キャンペーンを開始した。そのすべてが、本来インターネットに公開されるはずのない管理インターフェースへの、認証なしのHTTPSリクエスト1本から始まった連鎖によるものだ。

root化された残り22台のファイアウォールには、今もウェブシェルが仕掛けられたまま放置されている。米国政府機関への持続的なトンネルは、おそらく今も稼働している。攻撃者には指紋を採取済みの標的が19,000台残っており、他のPAN-OSバージョンのプロファイルを開発すれば再び狙える。Palo Alto Networksのデバイステレメトリは、公開されたPAN-OSデバイスに対する攻撃の試行が続いていることを示している。

詳細なガイダンスと侵害指標については、Palo Alto Networksのウェブサイトを参照されたい。

発見から防御までのギャップを埋める

政府機関や重要インフラにとって、脆弱性の発見は始まりにすぎない。防御側は、公開されているシステムを特定し、攻撃者が何を悪用できるかを見極め、足場がより広範な侵害へと発展する前に動く必要がある。

Dreamは、補完し合う2つのサイバーディフェンスプラットフォームでこの課題に取り組む。

  • Sphereは国家のサイバーディフェンスを拡張する。 政府ネットワーク全体の露出を可視化し、リスクに優先順位を付け、攻撃を検知・対応する。各国固有の脅威とインフラに合わせて調整される。

  • Heroはサイバーリサーチを拡張する。 自律型リサーチエージェントが、専門家による脅威調査、脆弱性の発見と検証(ソースコードのないソフトウェアも対象)、修正ガイダンスやパッチの作成を支援する。Dreamの研究者が本記事で詳述する調査に使用したのが、このツールだ。

両者を組み合わせることで、より深い調査と国家の攻撃対象領域全体の防御がつながる。

出典: Dream Research← ホームへ戻る