エラーとして記録した文字列が、あとからPHPとして実行される。
Adobe Commerce/Magentoで悪用が確認された「StyleSmuggler」(CVE-2026-75650)は、この連鎖を使います。認証不要。Adobeの評価はCVSS 3.1で 10.0。9月7日に緊急修正が公開されています。[1][2]
怖いのは、攻撃コードを置くリクエストと、動かす処理が別になっていることです。不正な入力にエラーを返しても、その文字列を保存した先で攻撃が続きます。
AI生成の説明用イメージです。実際の被害現場やMagentoの管理画面ではありません。
エラーを返した。その裏で仕込みが進む
Akamaiが9月14日に公開した分析では、代表的な経路はこうなります。[2]
細工されたリクエスト
↓
解釈できなかった値をログへ保存
↓
別のリクエストでテンプレート処理を起動
↓
汚染されたログを読み込み、PHPを実行
入口はGraphQLへのHTTPリクエスト。ヘッダやパラメータに入った攻撃コードが、エラー処理を通ってサーバー側のログに残ります。その後、別の処理からそのファイルが読み込まれ、実行に至ります。
「不正な値だから記録した」が、攻撃者のファイル書き込みを手伝ってしまう。
ログを保存した瞬間にPHPが動くわけではありません。保存と実行をつなぐ、後段の読み込み経路が問題です。
調査でも、最終的にコードが動いたリクエストだけを見ると、最初に文字列を置いた操作を見落とします。入口と実行地点を分けて追う必要があります。
メールを開かなくても実行される
Sansecが報告した経路の一つは、決済失敗の通知メールを生成させるものでした。攻撃コードが動くのは、サーバーがメール本文を組み立てる段階です。受信者が開く必要はなく、配送に失敗しても成立し得ます。[3]
ここで「では、メール送信を止めよう」と考えると、対処を狭めすぎます。
Sansecの9月14日更新には、メールを使わずに実行する経路も記載されています。報告ファイルやログを経由するため、セッションの保存先をRedisに変えるだけでも防げません。[3]
見るべきなのはメール機能の有無ではなく、外部入力が保存されたファイルを、どの処理が実行可能なものとして読み込むかです。
.logという名前は、安全装置にならない
PHPのincludeは、指定されたファイルを取り込み、評価します。PHPとして評価される内容を含むファイルを渡せば、拡張子が.phpでなくても、その名前だけでは実行を止められません。[4]
読み方の違いを、概念的に並べるとこうです。
ログをデータとして読む
→ 記録された文字列を取り出す
同じファイルをコードとして評価する
→ 含まれるPHPコードが実行対象になる
「自分のサーバーが作ったファイル」と「中身を信頼できるファイル」は同じではありません。HTTPヘッダ、検索語、フォーム入力など、ログの材料は外から届きます。OWASPも、別の信頼領域から来たイベント情報には、偽造や悪意あるデータが混じる前提で扱うよう求めています。[5]
自分の実装を点検するなら、ファイルごとに次の二つを突き合わせてください。
- 誰が中身に影響できるか。 未認証の利用者でも、エラーを起こして文字列を残せるか。
- 何として読み直すか。 単なるデータか、テンプレートか、実行するコードか。
この二つが別々のチームやモジュールに分かれると、危険な組み合わせが見えにくくなります。
たとえば、ログ側は「この値は表示せず保存するだけ」と考え、テンプレート側は「サーバー内のファイルだから安全」と考える。個々の説明はもっともらしくても、つなげると外部の文字列が実行地点まで届きます。
レビューで描くべき矢印は、入力から保存まで、その先の読み込みまでです。
対応は「パッチを当てた」で終わらせない
まず、Adobeの最新版の対応表で、製品名と正確なバージョンに合うVULN-39341の修正を確認してください。9月11日更新の手順には、同じ2.4.8系でもパッチレベルによって異なるアーカイブが載っています。「2.4.8向け」を一つ選べば済む話ではありません。[6]
そのうえで、作業を三つに分けます。
- 侵入口を塞ぐ。 対象バージョン用の修正を適用し、適用結果を確認する。
- 侵入済みの痕跡を調べる。 ログ、実行中のプロセス、その実体のパス、永続化設定、想定外のPHPファイルを調査する。パッチは、すでに置かれたバックドアまで消してくれるものではありません。[3]
- 持ち出された可能性のある資格情報を無効化する。 Adobeは暗号化キーだけでなく、関連するAPI・連携・サーバーの資格情報も、発行元で更新するよう案内しています。[6]
保管庫の鍵を交換しても、すでにコピーされたAPIキーは失効しません。
Adobeの手順にはメンテナンスモードやcronの停止・再開も含まれます。本番で暗号化キーだけを単発で変えず、利用環境に合う一連の手順として実施してください。[6]
StyleSmugglerから持ち帰るべき問いは、一つです。
あなたのシステムで、外から来た文字列が「保存したから信頼できるもの」に変わる場所はありませんか。
ログ、テンプレート、アップロード、ジョブの再実行。その接続部分まで確認する価値があります。
参考資料
確認日:2026年9月20日。影響範囲と修正ファイルは、適用時にもAdobeの最新情報を確認してください。
[1] Adobe — Security update available for Adobe Commerce | APSB26-146(9月7日)
[2] Akamai — CVE-2026-75650: StyleSmuggler — Critical RCE in Adobe Commerce and Magento(9月14日)
[3] Sansec — StyleSmuggler: Magento and Adobe Commerce 0-day RCE under active attack(9月5日公開、9月14日更新)
[4] PHP Manual — include
[5] OWASP — Logging Cheat Sheet
[6] Adobe — Critical Security Update Available for Adobe Commerce (APSB26-146)(9月11日更新)
