セキュリティ研究者らは、Magento Open SourceおよびAdobe Commerceのインストール環境に影響を及ぼす、認証不要で悪用可能なリモートコード実行の脆弱性を発見しました。
「StyleSmuggler」と呼ばれるこの脆弱性は、攻撃者がMagentoのテンプレートシステムにPHPペイロードを注入し、通常のアプリケーション処理を通じて実行できてしまうというものです。
Sansecのフォレンジックチームの報告によると、攻撃は9月4日に始まり、インターネットに公開されたECストアが標的となりました。同チームは、Magento Open Sourceのクリーンな環境、具体的にはバージョン2.4.7、2.4.8、2.4.9において、攻撃チェーン全体の再現に成功しています。
注目すべきは、被害に遭った1件がMagento 2.4.6-p15を使用しており、2026年7月と8月のセキュリティパッチを適用済みでパッチ適用状況も問題なしと報告されていた点です。これは、現時点で提供されているパッチではこの脆弱性に対処できていないことを示唆しています。
Securityawareness training
StyleSmugglerの仕組み
StyleSmugglerは、スタイルプロパティを悪用してMagentoのテンプレート処理機能に組み込まれた既存の防御策を回避します。攻撃は次の2段階で進行します。
- 攻撃者は、Magentoが生成するコンテンツにPHPコードを注入、あるいは「汚染」します。おそらく失敗レポートを生成する仕組みを介して行われるとみられます。
- その後、Magentoが汚染されたコンテンツをレンダリングし、決済失敗通知メールが処理される際に注入されたコードが実行されます。
悪意あるPHPコードはメールのレンダリング時に実行されるため、管理者が実際に「Payment Transaction Failed Reminder」というメッセージを開かなくても侵害は成立してしまいます。
さらに、メール配信自体が失敗した場合でも攻撃は成立し得るため、不審なメールが届いていないことをもって「ストアは影響を受けていない」と判断すべきではありません。
研究者らは、攻撃者がコード実行権限を取得した後、Rustで書かれた小型のバックグラウンド型インプラントを展開していることを確認しました。初期のサンプルはLinuxのプロセス[kworker/u:8:0]に偽装していましたが、9月6日にリリースされた新しいバージョンでは、正規のシステム活動に紛れ込むために`fc-cache`を使用しています。
この`fc-cache`亜種は、自身を`~/.cache/fontconfig/fc-cache`にコピーし、cronジョブを通じて永続化を確立します。1時間に2回再起動する仕組みになっています。また、自身のプロセスIDを`/tmp/.fc_<8hex>.lock`という一時ロックファイルに書き込みます。
このインプラントは、コマンド&コントロール(C2)通信をNetwork Time Protocol(NTP)の通信に見せかけて偽装します。60秒ごとにドメイン`ntp.timesync.to`を名前解決し、ポート123経由で48バイトのUDPパケットを送信します。
これらのパケットはNTPサーバーの応答を模していますが、その中身のほとんどは分割されたMessagePack形式のデータであり、システムのホスト名、ユーザー名、OSのバージョン、メモリおよびディスクの使用状況、稼働時間、root権限の有無、インプラントのバージョン、パブリックIPアドレスが含まれています。
このマルウェアは、C2サーバーとの通信を開始する前に、`api4.ipify.org`、`ipv4.icanhazip.com`、`ipv4.ident.me`、`ipinfo.io`といったパブリックIP確認サービスに問い合わせを行います。
使用されるUser-Agent文字列は短縮されており、正規のブラウザのものとは一致しません。さらに、このマルウェアは`/proc/self/status`内の`TracerPid`の値を確認し、デバッグが検出された場合は自身をインストールするものの、攻撃者側との通信は行いません。
専用の緩和策製品を導入していないマーチャントは、直ちにMagento GraphQLへのアクセスを制限すべきです。Sansecは、自社の保護機能であるShieldの導入、eComscanによるホストのスキャン、そして不審な永続化やプロセスが確認された場合のMagento認証情報のローテーションを推奨しています。
管理者は、決済失敗リマインダーメールの予期しない急増、不審なcronエントリ、`x_trace_`を含むテンプレートレポートの痕跡、`[kworker/u:8:0]`や`fc-cache`という名前のプロセスがないか調査する必要があります。
侵害指標(IOC)
| 種別 | 指標 |
|---|---|
| マルウェアダウンロード元ホスト | 247.cdnflare.xyz |
| マルウェアダウンロード元ホスト | 209.141.43.95/files/ |
| C2サーバー | 99.84.67.186:443 |
| リモートシェル | windwsecurity.run:443 |
| NTP偽装C2 | ntp.timesysnc.net:123 |
| NTP偽装C2 | time.microsft.run:123 |
| NTP偽装C2 | pool.microsft.studio:123 |
| 新規構築C2 | ntp.timesync.to:123 |
| フォールバックC2 | ntp.synctime.to:123 |
| フォールバックC2 | ntp.syncstime.to:123 |
| 攻撃元 | 88.216.72.181 |
| SHA-256 | e315687a1dfe61ef4a5a5642214db6d3b2b05d81391285eebc2af664641a26a7 |
| SHA-256 | b79dfdc1eed860e0b76c629d6adfce251db379b0b45a6d728d4ef483f7551420 |
| SHA-256 | 4352cabaa451e5a894535fbcc4d46628701303322a13745cb5479d7d0534ae8e |
| SHA-256 | d2fbf9eb75c495bfea48790d3b228fab0c15a282419c3d3f5e49294c4e1a3e82 |
| ファイルパス | ~/.cache/fontconfig/fc-cache |
| ファイルパス | ~/.local/share/.gvfsd/gvfsd-user |
| プロセス | [kworker/u:8:0], fc-cache |
| 悪意あるリクエスト | POST /graphql?styles[....]= |
| 悪意あるリクエスト | POST /paypal/transparent/response/?<?=eval(base64_decode('.... |
注: IPアドレスおよびドメインは、誤って解決されたりハイパーリンク化されたりするのを防ぐため、意図的に無害化表記(例: [.])にしてあります。再有効化はMISP、VirusTotal、SIEMなど管理された脅威インテリジェンスプラットフォーム内でのみ行ってください。
SOCを最新の状態に保ち、出現から24時間以内にアクティブなマルウェアやフィッシングを把握しましょう。 ANYRUNを試して、早期検知でインシデントを未然に防ぎましょう。
翻訳元: https://gbhackers.com/magento-and-adobe-commerce-stylesmuggler-0-day-rce/