当社のAIエンジンNeutronが、UCバークレーのCyberGymベンチマークで97.1%のスコアを記録しました。 詳細を見る

ディープダイブ

ディープダイブ

MagentoとAdobe CommerceのPolyShell RCEが実環境で悪用(CVE-2026-48356)

PolyShell(CVE-2026-48356)はMagentoのREST APIにある未認証のファイルアップロード脆弱性で、2026年3月から大規模に悪用されています。Adobeの2026年7月のパッチリリースで修正されます。

要点

  • 発見したSansec研究チームがPolyShellと名付けたCVE-2026-48356は、MagentoとAdobe CommerceのREST APIにある無制限のファイルアップロード脆弱性です。未認証の呼び出し元が、ゲストカートの商品ルートを通じて実行可能ファイルをサーバーに書き込めます。AdobeのCVEレコードの評価はCVSS v3.1 9.3(AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N)です。
  • すべての本番向けブランチが影響を受けます。対象は2026年7月より前のパッチレベルのAdobe Commerce 2.4.4~2.4.9とMagento Open Source 2.4.6~2.4.9に加え、Commerce B2BとAdobe Commerce Eventsです。サポート対象系列の修正は2026年7月のパッチリリース(2.4.9-2026-jul、2.4.8-2026-julなど)です。
  • 実環境で大規模に悪用されています。Sansecは2026年3月19日から自動化された大量スキャンを記録し、4月14日までに監視対象ストアの82%に悪意あるPHPがアップロードされたことを確認しました。また、その後のローダー攻撃キャンペーンで感染した953ストアのうち471ストアでは、PolyShellを通じてコードが挿入されたと推定しています。CISAは2026年10月27日にCVE-2026-48356をKnown Exploited Vulnerabilitiesカタログへ追加し、連邦機関の対応期限を2026年11月10日に設定しました。
  • 使用中のブランチ向けの2026年7月のパッチリリースを直ちに適用してください。今日中にパッチを適用できない場合は、pub/media/custom_options/へのWebアクセスを遮断し、WAFでゲストカートのAPIルートをフィルタリングしたうえで、以下の確認方法を使ってアップロードされたシェルとaccesson.phpバックドアを探してください。

影響を受けるか

Adobe Commerce、Magento Open Source、Adobe Commerce B2B、Adobe Commerce Eventsのいずれかが下表のバージョンで稼働し、REST API(ゲストカートのルートを含む)にネットワーク経由で到達できる場合、影響を受けます。

2.4.9の一般提供版について、AdobeのCVEレコードとSansecの説明は異なります。レコードは7月のパッチより前の2.4.9を影響対象としていますが、Sansecは2026年5月12日の2.4.9一般提供版にすでに修正が含まれると報告しています。

Sansecはさらに、7月のリリースで古いサポート対象系列に修正がバックポートされたと説明しています。安全と判断する前に、使用中のビルドがどこに位置するかを確認してください。

ブランチ 影響を受けるバージョン 修正バージョン
Adobe Commerce 2.4.9系列 2026年7月より前のパッチレベルの2.4.9 AdobeのCVEレコードでは2.4.9-2026-jul、Sansecでは2.4.9 GA(2026年5月12日)
Adobe Commerce 2.4.8系列 2.4.8-p5以前 2.4.8-2026-jul
Adobe Commerce 2.4.7系列 2.4.7-p10以前 2.4.7-2026-jul
Adobe Commerce 2.4.6系列 2.4.6-p15以前 2.4.6-2026-jul
Adobe Commerce 2.4.5系列 2.4.5-p17以前 2.4.5-2026-jul
Adobe Commerce 2.4.4系列 2.4.4-p18以前 2.4.4-2026-jul
Adobe Commerce B2B 1.5.3、1.5.2-p5以前、1.4.2-p10以前、1.3.4-p17以前、1.3.3-p18以前 1.5.3-2026-jul, 1.5.2-2026-jul, 1.4.2-2026-jul, 1.3.4-2026-jul, 1.3.3-2026-jul
Magento Open Source 2.4.9系列 2026年7月より前のパッチレベルの2.4.9 AdobeのCVEレコードでは2.4.9-2026-jul、Sansecでは2.4.9 GA(2026年5月12日)
Magento Open Source 2.4.8系列 2.4.8-p5以前 2.4.8-2026-jul
Magento Open Source 2.4.7系列 2.4.7-p10以前 2.4.7-2026-jul
Magento Open Source 2.4.6系列 2.4.6-p15以前 2.4.6-2026-jul
Adobe Commerce Events 1.20.0以前 1.21.0

新しく取得したイメージではなく、稼働中のインスタンスのバージョンを確認します。

# From the Magento root directory
php bin/magento --version

# From the composer lock file
grep -A1 '"name": "magento/product-community-edition"' composer.lock   # Open Source
grep -A1 '"name": "magento/product-enterprise-edition"' composer.lock   # Adobe Commerce

# In a container
docker exec <container> php bin/magento --version

修正方法

通常のComposerまたはコマンドラインによるアップグレード手順で、使用中のブランチ向けの2026年7月のパッチリリース(APSB26-73)をインストールし、完了後にphp bin/magento --versionが修正済みレベルを示すことを確認します。修正済みバージョンの正式な一覧はAdobeのセキュリティ情報です。Sansecによると、2026年7月のバックポートはAPSB26-73に対応します。2.4.9一般提供版の修正は、先行する2.4.9プレリリースブランチでAPSB25-94として提供されたものです。

今日中にパッチを適用できない場合、2つの緩和策でリスクを下げられます。いずれもSansecのアドバイザリに基づきます。

  • アップロードディレクトリへのWebアクセスを遮断します。nginxでは、PHPハンドラーが優先されないよう、サーバー設定内のすべての\.php$ locationブロックより前に次のブロックを追加します。
location ~* ^/pub/media/custom_options/ {
    return 403;
}

Apacheでは、pub/media/custom_options/.htaccessが存在し、次の内容を含むことを確認します。

<IfModule mod_php.c>
    php_flag engine 0
</IfModule>
Deny from all

Sansecによると、ほとんどのストアはAdobeのサンプルではなく、ホスティングプロバイダー独自のWebサーバー設定を使用しています。 - WAFでゲストカートのAPIルートを遮断します。ディレクトリの遮断では書き込み経路が開いたままなので、アップロード自体を止めるのはこの制御だけです。

制限事項:アクセスの遮断はアップロードを遮断しません。攻撃者はAPI経由で引き続きディスクにファイルを書き込めるため、後の設定変更、移行、Webサーバーの切り替えによって実行可能になる場合があります。Sansecのバージョン分析によると、アップロードディレクトリでPHPの実行を遮断している設定でも、この脆弱性の蓄積型クロスサイトスクリプティング(XSS)の形態は残ります。ファイルがコンテンツとして配信されるためです。

根本原因

MagentoのREST APIは、オプション、オプションの種類、ファイル拡張子を検証せずに、カート商品のリクエストからファイルをディスクに書き込みます。2026年3月17日に公開されたSansecの技術分析は、その仕組みを説明しています。商品オプションの種類がfileの場合、Magentoはbase64エンコードされたファイルデータ、MIMEタイプ、ファイル名を含む埋め込みのfile_infoオブジェクトを処理し、サーバーのpub/media/custom_options/quote/にファイルを書き込みます。

Sansecの分析では、3つのチェックが欠けています。

  1. オプションIDの検証がない。送信されたオプションIDが、商品の実際のオプションと照合されません。
  2. オプションの種類による制限がない。商品にファイル型のオプションが実際に存在するかどうかに関係なく、ファイルアップロードのロジックが動作します。
  3. ファイル拡張子の制限がない。.php、.phtml、.pharなどの拡張子は遮断されません。唯一の検証は画像ヘッダーのチェック(getimagesizefromstring)であり、有効な画像であると同時に実行可能なPHPでもあるポリグロットファイルなら簡単に通過できます。

最も危険なエンドポイントは、認証情報が不要な匿名ゲストカートのルートです。

メソッド エンドポイント 認証
POST /V1/guest-carts/:cartId/items なし
PUT /V1/guest-carts/:cartId/items/:itemId なし

Sansecによると、GraphQLのミューテーションは異なるコードパスを使うため、この脆弱性の影響を受けません。AdobeはCVE-2026-48356の公式なパッチ差分や修正分析を公開していないため、正確なパッチロジックはここでは引用できません。修正はまず2.4.9プレリリースブランチ(APSB25-94)に入り、次に2026年5月12日の2.4.9一般提供版で出荷され、その後2026年7月にすべてのサポート対象系列へバックポートされました。

悪用方法

Sansecが公開したペイロード分析によると、攻撃経路は一つの未認証リクエストから永続的なバックドアへと進みます。

  1. 攻撃者は/V1/guest-carts/:cartId/itemsに、base64ペイロードがポリグロットであるfile_infoオブジェクトを含むPOSTを送信します。これは有効なGIFまたはPNG画像に実行可能なPHPを埋め込んだもので、画像ヘッダーのチェックを満たします。
  2. ファイルはpub/media/custom_options/quote/の下に書き込まれます。よく見られるファイル名はindex.phpや、780index.phpのようにオプションIDを先頭に付けたものです。
  3. アップロードディレクトリ内またはその配下の.phpファイルをPHPハンドラーに渡す設定では、アップロードされたファイルにリクエストすると、Webサーバーユーザーとして実行されます。Sansecのバージョン分析は、この動作をMagento 2.0.0~2.2.xに同梱された標準のnginxサンプル設定(index.phpというファイル名を利用)、すべての.phpをfastcgiに渡す非標準のnginx設定を使う任意のMagentoバージョン、そしてphp_flag engine 0がない2.3.5より前のMagentoリリース上のApacheに関連付けています。
  4. Sansecが最も多く捕捉したペイロードは、GIF89aポリグロットのindex.php Webシェルです。cookieのdをハードコードされたハッシュa17028468cb2a870d460676d6d6da3ad63706778e3と照合し、eval(base64_decode())で任意のPHPを実行します。また、$_POST["up"]で起動するファイルアップロード機能も含みます。別の亜種は、ハードコードされたMD54009d3fa8132195a2dab4dfa3affc8d2をhash_equals()で検証し、コマンドを直接system()へ渡します。
  5. 永続化のため、攻撃者はaccesson.phpという名前の二次バックドアを展開し、書き込み可能なすべての最上位ディレクトリの<top-level directory>/assets/images/accesson.phpに配置します。Sansecは一つのストアでこのようなパスを10個挙げており、var/assets/images/accesson.php、app/assets/images/accesson.php、vendor/assets/images/accesson.php、pub/assets/images/accesson.phpなどが含まれます。動作中のシェルを運用者が大規模に探せるようビーコン8194460を出力し、それ以外は最初のペイロードと同様に機能します。
  6. 最後に、攻撃者は難読化されたJavaScriptローダーをCMSページやブロックに挿入し、購入者のブラウザーに追加のペイロードを配信します。
flowchart LR A["未認証のPOST
/V1/guest-carts/:cartId/items"] --> B["base64ポリグロットを含む
file_info(画像+PHP)"] B --> C["画像ヘッダーだけをチェック、
拡張子とオプションは未検証"] C --> D["ファイルを
pub/media/custom_options/quote/へ書き込み"] D --> E["脆弱な設定では
Webサーバーが.phpを実行"] E --> F["GIF89a Webシェルが
eval(base64_decode())を実行"] F --> G["accesson.phpバックドアと
CMSブロックのJSローダー"] G --> H["購入者のブラウザーが
攻撃者の制御するペイロードを取得"]

実環境で観測されたPolyShellのファイル名には、index.php、json-shell.php、bypass.phtml、c.php、r.php、rce.php、static.php、test.php、blocked-json.php、bypass-async.php、urlencode-shell.php、xx_malicious_file.phpがあります。\u0062\u0079\u0070\u0061\u0073\u0073.\u0070\u0068\u0070(デコードするとbypass.php)などのUnicodeによる難読化も確認されています。

攻撃はすぐに大規模化しました。Sansecのテレメトリによると、2026年3月23日までに保護対象ストアの23%が標的となり、3月30日までには79.5%に達しました。3月24日までにストアの56.7%、4月14日までに82%へ悪意あるPHPがアップロードされました。これらはすべて、一般提供版の最初の修正が存在する前に起きています。

PolyShellの被害を受けたSansec保護対象ストアの割合:2026年3月23日までに23%が標的となり、3月30日までに79.5%が標的となり、4月14日までに82%で悪意あるアップロードを確認
図1:PolyShellによる悪意あるアップロードは、最初の探索から4週間以内にSansec監視対象ストアの82%に到達。出典:SansecのPolyShellアドバイザリ、2026年10月28日確認

攻撃者にできること

影響はWebサーバーの設定で分かれますが、どちらも深刻です。PHPが実行される場合、攻撃者はWebサーバーユーザーとしてコードを実行でき、Webシェルの設置、ストアの完全な制御、データベースの読み取りと書き換えが可能になります。Sansecは、PNG画像を装ったWebシェルがpub/media/custom_options/quote/に置かれ、CMSブロックのローダーと共存する状況を実環境で確認しました。実行が遮断されている場合でも、アップロードされたファイルはディスク上に残り、将来の設定変更で露出する可能性があります。また、蓄積型XSSの形態では、代わりに管理者セッションを乗っ取れます。

スコアに関する注記:AdobeのCVEレコードは、スコープ変更ありでCVSS v3.1 9.3と評価し、悪用によって「現在のユーザーのコンテキストで任意のコードが実行され、被害者のアカウントやセッションに対する昇格したアクセスや制御を得る可能性がある」と記載しています。レコードのUI:Rベクトルは、被害者が細工されたコンテンツにアクセスする必要のある経路を評価しています。ゲストカート経由のアップロード自体には、認証情報もユーザー操作も不要です。

攻撃に必要な条件は次のとおりです。

  • 匿名ゲストカートのルートを含め、影響対象バージョンのREST APIに到達できること
  • 単なるファイル配置ではなくコード実行に至るには、アップロード先パスからPHPファイルを実行するWebサーバー設定であること。Sansecは、多くのストアがアップロードディレクトリのファイルを公開していると確認しています。
  • それ以外は不要。アップロード段階では、アカウント、認証、ユーザー操作のいずれも不要

修正は検証されているか

いいえ。Adobeは公式のパッチ差分や修正分析を公開していないため、差分との照合によって修正を確認することはできません。公開されている情報では、SansecのアドバイザリとAdobeのCVEレコードによると、修正はまずAPSB25-94に基づく2.4.9プレリリースブランチに入り(2025年10月14日、2.4.9-alpha3で修正)、2026年5月12日の2.4.9一般提供版で出荷され、2026年7月のパッチリリース(APSB26-73)で、すべてのサポート対象リリース系列にバックポートされました。

Sansecが説明した動作を完全に修正するには、3つの欠落をすべて埋める必要があります。送信されたオプションIDを商品と照合し、商品が実際にファイル型オプションを宣言している場合だけfile_infoを受け付け、書き込み可能なファイル名と拡張子を制限することです。

Sansecのテレメトリでは、悪意あるアップロードが確認された監視対象ストアの割合は4月14日までに82%に達しました。これは5月12日の一般提供版より前であり、古い系列にバックポートが提供される前でもあります。10月27日のKEV掲載は、未修正の環境が依然として攻撃されていることを示しています。

侵害されたかどうかの確認方法

以下の確認方法と指標は、Sansecのアドバイザリに基づきます。影響対象レベル以下のすべてのストアで、Magentoのルートディレクトリから実行してください。

# Executable files in the custom options upload directory are a strong indicator.
find pub/media/custom_options/ -type f \( -name '*.php' -o -name '*.phtml' -o -name '*.phar' \)

# Stores that never offered file-type product options: any file other than
# .htaccess is suspicious. Legitimate customer file-option uploads land under
# pub/media/custom_options/quote/ and order/, so skip this on stores that use them.
find pub/media/custom_options/ -type f ! -name '.htaccess'

# The post-exploitation backdoor, placed under assets/images/ in top-level directories.
find . -name 'accesson.php' -type f
  • pub/media/custom_options/配下の.php、.phtml、.pharファイルは、いずれも侵害を強く示す指標です。そこにあるGIFとPNGファイルも調べてください。ポリグロットシェルは、GIF89aまたはPNGのヘッダーを持ちながら、内部にPHPを含みます。
  • CMSページと静的ブロック(cms_blockとcms_pageテーブル)から、この攻撃キャンペーンのローダードメイン(下表)を探します。SansecのPolyShell発生期の以前の調査には、jslibrary[.]netとcanevaslab[.]comも挙げられています。
  • 管理者アカウントを監査します。Sansecは、完全にパッチ適用済みの2.4.7-p10ストアで、唯一の侵害の兆候がローダー挿入に使われた不正な管理者アカウントだった事例を記録しています。この事例はPolyShellによるものではありませんが、同じ攻撃キャンペーンの一部です。
  • Sansecのアドバイザリには、境界ログの確認用として、2026年3月以降のPolyShellスキャンで観測された50件を超える送信元IPが掲載されています。
ローダードメイン 初回確認
manulfie[.]click 2025年7月
neswnsssn[.]click 2025年12月
lanhd6549tdhse[.]top 2026年3月
additionalver[.]com 2026年6月
deepveindrilling[.]com 2026年10月6日登録、10月24日までに83ストアのCMSブロックに存在

タイムライン

  • 2025-07:ローダー攻撃キャンペーンが開始。期間中に953ストアが感染し、大半はMagentoを使用(Sansec、2026年10月公開)。
  • 2025-10-14:AdobeのAPSB25-94更新で2.4.9-alpha3をリリース。Sansecが最初に修正されたとする2.4.9プレリリース版です(APSB25-94、Sansec)。
  • 2026-03-16:12:00 UTCに最初のPolyShellの探索を観測。Sansecは同日にShieldの保護を追加(Sansec)。
  • 2026-03-17:Sansecが一般向けの警告と技術分析を公開(Sansec)。
  • 2026-03-19:自動化された大量スキャンが開始。その後、50件を超えるスキャナーIPを観測(Sansec)。
  • 2026-03-23:Sansec保護対象ストアの23%が標的に。
  • 2026-03-24:ストアの56.7%に悪意あるPHPがアップロードされる(Sansec)。
  • 2026-03-30:ストアの79.5%が標的に(Sansec)。
  • 2026-04-14:ストアの82%に悪意あるPHPがアップロードされる(Sansec)。
  • 2026-05-12:Adobeが修正を含むMagento 2.4.9をリリース。古いサポート対象系列へのバックポートはまだなし(Sansec)。
  • 2026-07-14:AdobeのCVEレコードを公開し、2026年7月のパッチリリースでサポート対象系列へ修正をバックポート(CVEレコード、APSB26-73)。
  • 2026-10-06:deepveindrilling[.]comを登録。10月7日に稼働し、10月24日までに83ストアのCMSブロックに存在(Sansec)。
  • 2026-10-27:CISAがCVE-2026-48356をKnown Exploited Vulnerabilitiesカタログに追加。連邦機関の期限は2026年11月10日(CISA KEV)。
  • 2026-10-28:本記事を公開。

一般向け警告からKEV掲載までの間隔は224日で、古いサポート対象系列に修正が届いたのは、警告から119日後でした。

3月の探索から10月のKEV掲載までのPolyShellパッチ対応の推移
図2:3月17日のSansecの一般向け警告から10月27日のCISA KEV掲載まで224日。古いサポート対象系列へのバックポートは7月14日にリリース。出典:Sansecのアドバイザリ、AdobeのCVEレコード、CISA KEV、2026年10月28日確認

よくある質問

PolyShellはSansecが追跡するローダー攻撃キャンペーンと同じCVEか

関連はありますが、別のものです。CVE-2026-48356(PolyShell)はREST APIのアップロード脆弱性です。Sansecが追跡するローダー攻撃キャンペーン(2025年7月以降、953ストア、5ドメイン)は、侵入経路の一つとしてPolyShellを使う犯罪活動です。Sansecは、471ストアではPolyShellを通じて、別の102ストアではPolyShellまたは先行するSessionReaperの脆弱性(CVE-2025-54236)を通じてコードが挿入されたと推定しています。少なくとも一つのストアには、代わりに不正な管理者アカウントを通じて侵入しています。

WebサーバーがアップロードディレクトリのPHPを遮断していれば安全か

完全には安全ではありません。実行の遮断によってリモートコード実行(RCE)の形態は止められますが、APIは依然として攻撃者のファイルをディスクに書き込み、一部の設定ではSansecが説明する蓄積型XSSの形態も残ります。また、将来のサーバー移行や設定変更により、置かれていたファイルが動作するシェルに変わる可能性があります。完全な修復はパッチの適用であり、Webサーバーでの遮断は暫定措置です。

7月に修正された脆弱性をCISAが10月になってKEVに追加したのはなぜか

悪用が続き、未修正の環境がまだ多いためです。3月の公開から数日以内にこの脆弱性への大量スキャンが始まり、古いサポート対象系列に修正が届いたのは7月になってからでした。Sansecは10月にも、ストアのCMSブロックで新たなローダードメインを発見しています。2026年10月27日付のCISAのKEVエントリは、連邦機関の修復期限を2026年11月10日に設定しています。

パッチを適用した場合もWAFルールは必要か

パッチは脆弱性を取り除くため、適用後のWAFルールは任意です。適用前についてSansecは、ディレクトリの遮断では書き込み経路が開いたままであるため、脆弱なAPI呼び出しを遮断するWAFルールだけがアップロードを停止できると明記しています。Sansecのアドバイザリはさらに、最終更新時点でCloudflareがPolyShellを対象とするWAFルールを公開していないとしています。対応するルールが提供されていることを確認するまで、クラウドWAFによるPolyShellの遮断を当てにしないでください。

影響するのはAdobe Commerceだけか、それともMagento Open Sourceもか

両方です。AdobeのCVEレコードは、Adobe Commerce、Adobe Commerce B2B、Magento Open Source(2.4.6~2.4.9系列)、Adobe Commerce Eventsの影響対象バージョンを列挙し、それぞれの修正として2026年7月のパッチリリースを示しています。

Ostorlabで外部から攻撃可能なAdobe CommerceとMagentoストアを検出

すべてのストアフロントでOstorlabのWebスキャンを実行してください。各ストアで稼働するAdobe CommerceまたはMagentoのバージョンとパッチレベル、ゲストカートのアップロードルートが公開されているかを特定するため、11月10日のKEV期限前に、それぞれが上表の修正済みリリースで稼働していることを確認できます。

参考文献

  • CVE-2026-48356のCISA KEVエントリ、2026年10月27日追加、期限は2026年11月10日:https://www.cisa.gov/known-exploited-vulnerabilities-catalog (2026年10月28日確認)
  • CVEレコード、CVSS v3.1 9.3、影響対象と修正済みバージョンの一覧:https://cveawg.mitre.org/api/cve/CVE-2026-48356 (2026年10月28日確認)
  • Adobeセキュリティ情報APSB26-73(2026年7月のパッチリリース):https://helpx.adobe.com/security/products/magento/apsb26-73.html
  • Sansec、「PolyShell: unrestricted file upload in Magento and Adobe Commerce」、2026年3月17日、2026年10月まで更新(技術分析、ペイロード分析、スキャナーIP、緩和策):https://sansec.io/research/magento-polyshell (2026年10月28日確認)
  • Sansec、「deepveindrilling.com: Magento CMS block loader hits 953 stores」、2026年10月(攻撃キャンペーンの侵入経路の分析:471ストアはPolyShell、102ストアはPolyShellまたはSessionReaper、83ストアに10月のローダードメイン):https://sansec.io/research/magento-cms-block-loader-deepveindrilling (2026年10月28日確認)
  • Sansec、「SessionReaper, unauthenticated RCE in Magento & Adobe Commerce (CVE-2025-54236)」、関連する脆弱性について:https://sansec.io/research/sessionreaper
  • The Hacker News、「Adobe Commerce PolyShell Attacks Breach Hundreds of Stores as Brotli Exploit Traffic Emerges」、2026年10月28日:https://thehackernews.com/2026/10/adobe-commerce-polyshell-attacks-breach.html
  • The Hacker News、「Hackers Infect 953 Online Stores With Scanner-Evading JavaScript, Mostly on Magento」、2026年10月26日:https://thehackernews.com/2026/10/hackers-infect-953-online-stores-with.html
  • The Hacker News、「Magento PolyShell Flaw Enables Unauthenticated Uploads, RCE and Account Takeover」、2026年3月20日、進行中の悪用記録を3月23日に追記:https://thehackernews.com/2026/03/magento-polyshell-flaw-enables.html