cat posts/%e4%bb%8a%e9%80%b1%e3%81%ae%e3%82%bb%e3%82%ad%e3%83%a5%e3%83%aa%e3%83%86%e3%82%a3%e8%80%83%e5%af%9f%ef%bc%9a%e5%a3%81%e3%81%94%e3%81%a8%e6%ba%b6%e3%81%8b%e3%81%97%e3%81%a6%e5%85%a5%e3%81%a3%e3%81%a6.md

今週のセキュリティ考察:ディスクに残らない Rust バックドア——Adobe Magento CVSS 10.0 ゼロデイ(CVE-2026-75650)

EC サイトを作る製品 Adobe Commerce / Magento Open Source に、ログインせずにサーバー上でプログラムを実行できる脆弱性 CVE-2026-75650(CVSS 10.0)があり、2026年9月4日から悪用されている。発見した Sansec はこの攻撃を「StyleSmuggler」と名付けた[1][2][4]。

PART 1解説

3行でわかる要点

  • 原因:メール文面などのひな形(テンプレート)を処理する仕組みに PHP のコードを紛れ込ませられる。「支払い失敗のお知らせ」メールの生成を悪用して、コードを実行させる[2][4]。
  • 仕込まれたもの:外部のサーバーにつながって指示を待つ Rust 製の Linux バックドアと、ウェブシェルを書き込む PHP のドロッパー[4]。
  • パッチだけでは足りない:Adobe は修正パッチ(VULN-39341)の適用に加えて、暗号鍵の変更(ローテーション)も求めている[1][4]。

前提:EC サイトとテンプレート

Adobe Commerce と Magento Open Source は、商品の陳列から注文・決済・メール通知まで、EC サイトに必要な機能をそろえた製品です。注文確認や支払い失敗のお知らせなどのメールは、あらかじめ用意したひな形(テンプレート)に、注文番号や氏名などの値を差し込んで作られます。

差し込む値は「ただの文字」として扱うのが原則です。IT パスポートで学ぶ SQL インジェクションやクロスサイトスクリプティングと同じく、「入力をプログラムとして解釈させない」ことが守りの基本になります。

まず押さえる用語

用語ひとことでもっと詳しく
CVE / CVSS脆弱性の世界共通の番号と、深刻度を 0.0〜10.0 で表す指標。10.0 は最大値。IPA「共通脆弱性評価システムCVSS概説」
テンプレートインジェクションひな形に値を埋め込む処理で、入力した値が「プログラムの一部」として解釈されてしまう欠陥。CWE-1336(MITRE)
バックドア侵入した攻撃者が、あとから再び入れるように仕掛けておく裏口のプログラム。—
ドロッパー別の不正なプログラム(ここではウェブシェル)を書き込むためのプログラム。—
暗号鍵のローテーション使っている暗号鍵を新しいものに替えること。古い鍵が盗まれていても使えなくなる。—

本来の仕組みと、どこが破られたか

テンプレート処理の正常時と攻撃時正常時注文・決済の処理メール文面を生成値として埋め込むメールを送信攻撃時細工した値を送るメール文面を生成値として埋め込むPHP コードが動く
図1 値として扱うべき入力が、PHP のコードとして実行された(The Hacker News の記述をもとにした概念図)

EC サイトは「支払いに失敗しました」のようなお知らせメールを、ひな形に注文情報などの値を当てはめて作ります。値は「ただの文字」として扱うのが原則です。

StyleSmuggler では、テンプレートの処理に PHP のコードを紛れ込ませることで、メールを作る過程でコードが実行されました[4]。図1の赤い破線のように、「値として埋め込む」はずの箇所でコードが動いたわけです。Disrex は、この仕組みを「Magento 自身のテンプレート処理を、認証なしのリモートコード実行の連鎖に変えた」と表現しています[4]。

攻撃の流れ

sequenceDiagram
    autonumber
    participant A as 攻撃者
    participant M as Magentoサーバー
    participant C as 攻撃者のサーバー
    A->>M: 細工したリクエスト(認証不要)
    M->>M: 支払い失敗メールのテンプレートを処理
    M->>M: 紛れ込んだPHPコードを実行
    A->>M: PHPドロッパーでウェブシェルを設置
    M->>C: Rust製バックドアが接続し指示を待つ
  • 1〜3:ログインせずに、メール文面を作る処理を通してコードが動く[2][4]。
  • 4〜5:ウェブシェルと、外部のサーバーから指示を受け取るバックドアの2系統が仕込まれた[4]。
  • CISA は9月8日に KEV に追加し、米連邦機関に9月11日までの対処を求めた[3][4]。
  • Disrex によると、最初の悪用が報告された50分後には、同社が管理する別の Magento サーバーが侵害されていた[4]。

なぜ「パッチ+鍵の変更」なのか(考察)

  • パッチは今後の侵入を防ぐだけで、すでに盗まれたものは取り戻せない。暗号鍵の変更まで求められているのは、侵入された場合に鍵が持ち出されている可能性があるから、と読める。
  • テンプレートの機能は「データ」と「プログラム」の境目があいまいになりやすい。利用者の入力がテンプレートの一部として解釈される経路があると、今回のような穴になる。
  • 公表から悪用までが非常に短い。EC サイトはカード情報や個人情報を扱うため、狙われやすい。

いま確認すること

  • 【Adobe Commerce / Magento を使っている】VULN-39341 のパッチを適用し、暗号鍵を変更する[1][4]。
  • 【Adobe Commerce / Magento を使っている】見慣れない PHP ファイル、外部の見知らぬサーバーへの接続など、侵入の痕跡がないか確かめる[4]。
  • 【全員】自分のアプリで、利用者の入力を「値」ではなく「テンプレート」としてテンプレートエンジンに渡している箇所がないか確かめる。
  • 【全員】暗号鍵や API キーを、侵害時にすぐ替えられる手順になっているか確かめる。

出典・参考リンク

一次情報

  1. Adobe Security Bulletin APSB26-146
  2. NVD — CVE-2026-75650
  3. CISA Known Exploited Vulnerabilities Catalog

報道・解説

  1. The Hacker News — Adobe Patches Magento Zero-Day Exploited to Deploy Rust Backdoor

PART 2問題(情報処理安全確保支援士 試験形式)

問1 午前II形式(4択)

Adobe Commerce / Magento の CVE-2026-75650(StyleSmuggler)の原因の分類として、最も適切なものはどれか。

  • ア SQL インジェクション
  • イ テンプレートエンジンにおける特殊要素の無害化の不備(テンプレートインジェクション)
  • ウ クロスサイトリクエストフォージェリ(CSRF)
  • エ ディレクトリトラバーサル
解答・解説を表示

解答:イ

CVE レコードでの分類は CWE-1336。テンプレートの処理に PHP のコードを紛れ込ませ、メール文面を作る過程で実行させた。アはデータベースへの問い合わせ文を操作する攻撃、ウは利用者のブラウザに意図しない要求を送らせる攻撃、エはファイルのパスを操作して想定外のファイルを読む攻撃で、いずれも今回の仕組みとは異なる。

↑ Part 1「本来の仕組みと、どこが破られたか」を読み直す

問2 午後形式(記述)

A社は EC サイトを Adobe Commerce で運営している。CVE-2026-75650 の公表を受けて、A社は修正パッチ VULN-39341 を適用し、対応を終えようとした。セキュリティ担当の B さんは、①暗号鍵の変更も必要だと指摘した。

設問 本文中の下線①について、B さんがそう指摘した理由を50字以内で述べよ。

解答・解説を表示

解答例:パッチ前に侵入されて暗号鍵が盗まれていた場合、その鍵を使った不正を防げないから(39字)

パッチは今後の侵入を防ぐだけで、すでに持ち出された鍵は無効にならない。Adobe もパッチと鍵の変更の両方を求めている。「パッチが不完全だから」は、パッチ自体の欠陥を前提にしていて、今回の理由とは異なる。

↑ Part 1「なぜ「パッチ+鍵の変更」なのか」を読み直す