テック技報最新号へ →
セキュリティ

Magento の cms_block に仕込まれ、閲覧者の localStorage に居座るローダーを掃除する

Magento を中心とする EC サイトで、データベースの cms_block テーブルにローダーが仕込まれ、受け取ったコードを閲覧者ブラウザーの localStorage(fpCode)に保存して毎回再実行する。テーマファイルだけでなく CMS ブロック・ページを点検し、DB に書き込める入口(Web シェル・不正管理者・漏れたパスワード)を塞いでから消す。

@MalwareBibleJP · 2026-10-30
#magento#ecommerce#skimmer#web-compromise#localstorage#cleanup

手口(Sansec)

  • 挿入先は店舗ページの部品を保存する cms_block テーブル。同社スキャナーは 148 のサーバー環境で cms_block から検出し、設定テーブルやテーマファイルからは検出なし。
  • 10 月 23 日の更新で、ローダーがブラウザー自動操作の痕跡・GPU・画面サイズ・言語などを送り、サーバー側が配信内容を選ぶ方式に変更。自動ブラウザーの検査では HTTP 200 でも追加の内容が返らず、検査で見えにくい。
  • 新しい配信先 deepveindrilling[.]com は 83 店舗で確認(うち 60 店舗は以前から侵害)。
  • 受け取ったコードは localStorage の fpCode に保存され、ページを開くたびに再実行。配信ドメインを遮断しても、一度受け取った閲覧者では実行が続く。店舗内の読み出し用スクリプトを除去すれば、この経路での再実行は止まる。

点検

  • 管理画面の「コンテンツ → ブロック/ページ」、または DB で cms_block・cms_page の content に外部 <script>、難読化 JS、localStorage・fpCode などの文字列がないか調べる。例:
    sql
    SELECT block_id, identifier, update_time FROM cms_block
     WHERE content LIKE '%<script%' OR content LIKE '%localStorage%' OR content LIKE '%deepveindrilling%';
  • ファイルだけを見るスキャンでは見落とす。DB の中身も検査対象に入れる。

掃除の順番

  1. Web シェル、不審な管理者アカウント・プロセスを除去する。
  2. DB・管理者・API 連携のパスワードを変更する。
  3. PolyShell 向け APSB26-73、SessionReaper 向け APSB25-88 の修正を適用する。
  4. その後で cms_block のローダーを削除し、時間をおいて再スキャンする。

コアパッチを全部当てていた店舗でも、不正な管理者とバックドアが残っていたためにクリーンなスキャンの 1 時間後に再挿入された。スクリプトだけ消しても DB へ書き込める状態が残れば戻ってくる。順番の考え方は 配布物に混入したプラグインのバックドアは「再生成の仕組み」から止める(Rank Math SEO PRO 3.0.123 事例) と同じ。

出典

X の元の投稿を開く