PHP の重大な脆弱性 php2shell(CVE-2026-109618・109619)と、Linux カーネルの権限昇格 Fragnesia(CVE-2026-46300)を連鎖させ、米国・日本・台湾・韓国にまたがる 25台のサーバで root を奪う攻撃が報告されました。調査元の Dream によれば、ファイアウォールの管理インターフェースを入口に、制限ユーザーのシェルを root へ昇格し、内部の Active Directory(AD)まで手を伸ばしています。この記事は、連鎖の仕組みと横展開の経路、そして両方を塞ぐ確認手順を、CVE 公式記録で裏を取って整理します。php2shell そのものの修正版と緩和策はPHP 脆弱性 CVE-2026-109618・109619|php2shell の修正版と緩和策に、実環境での悪用と AI 活用の論点はphp2shell が実環境で大量悪用|確定と評価の切り分けに、依存の欠陥が守りを崩す全体像はサプライチェーン攻撃とは|手口・防御ツール比較・npm 12の新機構まで実践解説にまとめています。
WHAT HAPPENED時系列
24台のファイアウォールから内部へ至るまで
-
探索
FOFA で約19,000台を特定→240台に絞る
版情報を返した約5,000台を、場所とソフト版で絞り込み。最終的に24台を侵害、22台に Web シェルが残った
-
連鎖
php2shell→Fragnesia で root 奪取
ファイアウォールの appweb 管理サーバの PHP を突き、15分以内に root 権限の Web シェルを設置したと報告
-
10/24
米政府系の2台目から内部へ
リバース SSH トンネル(8ポート転送・再起動後も維持)を張り、トンネル経由で内部の管理サーバを攻撃=25台目
-
10/28
Fragnesia も CISA KEV へ
CVE-2026-46300 が KEV に追加(是正期限 10/31・フォレンジック調査を要求)。php2shell の2件は既に KEV 済み
30秒でわかる
- ・何が起きたか:php2shell × Fragnesia の連鎖で25台のサーバの root を奪取。ファイアウォール管理面が入口
- ・Fragnesia:Linux カーネルの権限昇格(CVE-2026-46300・CVSS 7.8)。読み取り専用の認証データを書き換え、パスワードなしで root に
- ・横展開:FW の設定・認証情報が漏洩し、内部 AD のユーザー列挙まで到達。以降の侵害は成否不明
- ・対応:PHP とカーネルの両方にパッチ。Fragnesia も KEV 入り(是正期限10/31・フォレンジック要求)
まず自分のカーネル版を確かめます。修正版に満たなければ、ディストリの更新を当てます。
uname -r
Linux カーネルが 7.0.10・6.18.33・6.12.91・6.6.141・6.1.174・5.15.208 のいずれの系列でもこれ未満なら、Fragnesia の対象です。これは侵害の判定ではなく、修正版かの確認です。
何が起きたのか
Dream の調査によれば、攻撃者はまずインターネットに露出したファイアウォールを探索し、FOFA(サイバー資産の検索サービス)で約19,000台を特定、版情報を返した約5,000台を場所とソフトウェア版で絞り込み、240台を標的候補にしました。最終的に 24台のファイアウォールを侵害し、うち22台に Web シェルを残しています。侵害では、ファイアウォールの appweb 管理サーバの PHP を php2shell で突き、15分以内に root 権限の Web シェルを設置したとされています。
ベンダー名と脆弱なソフトウェアの版は、Dream が安全上の理由で公表していません(別の報道では管理インターフェースの製品名に言及したものもありますが、ここでは確定情報として扱いません)。重要なのは特定製品の話ではなく、インターネットに晒された管理インターフェースが入口になり、PHP とカーネルの2段の欠陥で root まで通った、という構図です。
とくに詳しく調べられたのが、米政府系の組織につながる2台です。1台目がダウンした後、攻撃者は10月24日に2台目を侵害し、8つの内部ポートを転送するリバース SSH トンネルを張りました。このトンネルは起動設定に組み込まれ、再起動後も維持されました。その後、トンネル経由で同じ連鎖を使って内部のファイアウォール管理サーバを攻撃し、これが 25台目の侵害となって、集中管理されていた設定と認証情報が漏れました。
連鎖の仕組み
THE CHAIN連鎖の流れ
nobody の Web シェルが root になり、AD へ
-
php2shell
PHP の session.upload_progress を突き、メモリを枯渇→アドレス漏洩→nobody でコマンド実行(CVE-2026-109618/109619)
-
Fragnesia
カーネルの skb coalescing の不備を突き、読み取り専用の認証データを書き換え(CVE-2026-46300)
-
パスワードなし root
ローカル認証を改ざんし、パスワード無しで root に昇格
-
横展開
設定・認証情報が漏洩。LDAP サービスアカウントの鍵を復号し AD のユーザーを列挙
-
AD への試み
パスワードスプレー・バックドア作成・SAML 署名鍵の窃取を試みたが、成否は不明
連鎖は2段です。1段目の php2shell は、PHP の session.upload_progress を突いて複数段階でメモリを枯渇させ、アドレスを漏洩させ、壊れたメモリ構造を操作して、制限ユーザー nobody としてコマンドを実行させます。ここまでは権限が低いので、2段目の Fragnesia に渡します。Fragnesia は、カーネルの skb_try_coalesce() がパケットの断片を結合するときに共有フラグの印を失う不備を突き、本来は読み取り専用のメモリをその場で書き換えます。これでローカルの認証データを改ざんし、パスワードなしで root に昇格します。
root を得た攻撃者は、ファイアウォールの設定と認証情報を抜き、LDAP サービスアカウントの鍵を復号して AD のユーザーとグループを列挙しました。さらにパスワードスプレー、バックドアアカウントの作成、SAML 署名鍵の窃取を試みたとされますが、その成否は不明です。ここでは攻撃に使える具体的な手順(PoC)は示しません。要点は、入口(PHP)と昇格(カーネル)が別の層の欠陥で、片方だけを塞いでも連鎖が残りうる、ということです。
この「2段を別々に塞ぐ」という視点は、実務で見落とされがちです。php2shell だけを直して安心すると、将来また別の Web 層の欠陥で nobody を取られたときに、未修正のカーネルがそのまま root への橋になります。逆にカーネルだけを上げても、Web 層が破られれば nobody のシェルは残ります。攻撃者は「入口」と「昇格」を自由に組み替えるので、守る側も層ごとに独立して最新に保つのが基本です。今回の連鎖は、その原則を現実の被害で示した例と言えます。
確定していること、していないこと
報告の読み方として、確定と評価を分けておきます。
| 区分 | 内容 |
|---|---|
| 確定 | 24台のファイアウォール+内部1台の計25台が侵害。php2shell と Fragnesia(CVE-2026-46300)の連鎖。Fragnesia は CISA KEV 入り(是正期限10/31) |
| 確定 | 米政府系の環境の3システムを含む。リバース SSH トンネルは再起動後も維持。AD のユーザー列挙まで到達 |
| 未確定 | パスワードスプレー・バックドア・SAML 鍵窃取の成否。2件目の php2shell(109619)の実使用はハニーポットでは未確認 |
| 評価 | 中国との関連が疑われるが、攻撃者の特定や完全自律の攻撃とは説明できない、と調査元が明記 |
何を直すか
WHAT TO DO対応の確認項目
両方を塞ぎ、乗っ取り後を前提に点検する
-
1.php2shell とカーネルの両方にパッチ
PHP は 8.5.12・8.4.27・8.3.36・8.2.35、Linux カーネルは 7.0.10・6.18.33・6.12.91・6.6.141・6.1.174・5.15.208 以上。KEV の期限内に適用
-
2.管理インターフェースの露出を断つ
ファイアウォールやアプライアンスの管理画面をインターネットに晒さない。到達元を管理網に限定する
-
3.侵入後の痕跡を前提に点検
KEV はフォレンジック調査を要求。Web シェル・リバース SSH トンネル・再起動後も残る設定を探す
-
4.認証情報を総入れ替え
パッチだけでは、盗まれた認証情報・SAML 署名鍵・トンネルは無効化されない。鍵とパスワードを回し、AD を監査する
対応は、入口と昇格の両方を塞ぐことが前提です。
| 区分 | やること |
|---|---|
| パッチ | PHP を 8.5.12・8.4.27・8.3.36・8.2.35 へ。Linux カーネルを 7.0.10・6.18.33・6.12.91・6.6.141・6.1.174・5.15.208 以上へ。いずれも KEV の期限内に |
| 露出 | ファイアウォール・アプライアンスの管理画面をインターネットに晒さない。到達元を管理網に限定 |
| 点検 | 侵入後を前提に、Web シェル・リバース SSH トンネル・再起動後も残る設定を探す(KEV はフォレンジック調査を要求) |
| 認証 | 盗まれた認証情報・SAML 署名鍵・トンネルはパッチでは無効化されない。鍵とパスワードを回し、AD を監査する |
この事案のいちばんの教訓は、パッチを当てても「盗まれたアクセス」は残るという点です。侵入経路を塞いでも、すでに抜かれた認証情報・設置された Web シェル・張られたトンネルは、別に無効化しない限り使われ続けます。調査では、認証情報の窃取やディレクトリへのアクセスが確認された部分と、その後の身元確認攻撃の成否がまだ検証されていない部分を、分けて扱う必要があります。確認できた侵害の深さに応じて、どこまで認証情報を回し、どのアカウントを無効化するかの範囲を決めると、過不足のない封じ込めにつながります。
影響範囲
直接の対象は、インターネットに露出した管理インターフェースを持つファイアウォール・アプライアンスと、その先の内部ネットワーク(とくに AD)です。境界に置く機器は、守る側のはずが、管理面を外から触れる状態にしていると逆に最短の入口になります。今回のように FOFA のような検索サービスで露出した機器を一覧化できる以上、「気づかれないだろう」という前提は成り立ちません。管理画面は原則としてインターネットから切り離し、どうしても必要なら VPN や踏み台、送信元 IP の制限の内側に置く、という基本が効きます。一般の Web サーバでも、php2shell の条件(session.upload_progress を使う PHP の実行形態)と、未修正のカーネルがそろえば、同じ2段の連鎖は成立しえます。優先度は、管理面の露出と、php2shell・Fragnesia の修正状況で決まります。両方の CVE が CISA KEV に載っている以上、連邦機関に限らず、露出のある組織は期限を待たずに塞ぐのが妥当です。とくに Fragnesia の KEV 掲載はフォレンジック調査を伴う対応を求めており、「パッチを当てた」で終わりにしない運びが前提になっています。侵害の有無が判断しにくいのがこの種の事案の難しさで、Web シェルやトンネルは一見すると正規の設定に紛れます。だからこそ、起動時に走る設定、外へ出ていく常時接続、見慣れないアカウントやスケジュールを、平時の状態と突き合わせて洗い出す作業が要ります。パッチのあとに、盗まれたアクセスの点検まで行って、ようやく一区切りになります。
参照ソース
- CVE-2026-46300(Fragnesia・CVE 公式記録・Linux カーネル・CVSS v3.1 7.8)
- CVE-2026-109618(php2shell・CVE 公式記録・PHP・CVSS v4.0 9.2)
- CISA Known Exploited Vulnerabilities Catalog(CVE-2026-46300・109618・109619 を収録)
- Fragnesia の修正コミット(net: skbuff: preserve shared-frag marker during coalescing)
- php2shell が実環境で大量悪用|確定と評価の切り分け(当サイト・追跡記事)





