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

利用者が編集できるテンプレートでサーバー側のコードを動かさせない(WASABI SWITCH 事例)

EC 運営システム「WASABI SWITCH」への不正アクセスでは、店舗が編集できるコンテンツテンプレートの中で PHP を使える機能が悪用された。管理画面のアカウントを奪われると、テンプレート経由でサーバー上の任意コード実行に直結する。テンプレートはロジックを書けない形式にし、ログイン ID とパスワードの推測されやすさも潰す。

@MalwareBibleJP · 投稿 2026-10-18
#ssti#template#rce#saas#authentication#credential-stuffing

何が起きたか

  • 調査で、テンプレートエンジンで使える PHP の機能が不正アクセスに使われていたと判明し、運営元はテンプレート内で PHP を使えないよう仕様を変更した(2026-10-18)。
  • 不正ログインは、ログイン ID が利用ドメインと同じ文字列のアカウントや、推測されやすいパスワードのアカウントが狙われていた。運営元は全アカウントのパスワードを強制変更し、メールでの 2 段階認証を必須にした。
  • 利用店舗の購入者には、実際の注文情報を書いた不審メール(品切れ返金を名目に LINE 登録へ誘導)が届いていた。

やること(SaaS・CMS を作る側)

  1. テンプレートはロジックなしの形式にする: 利用者が書けるテンプレートに PHP などのサーバー側コードを埋め込ませない。変数の差し込みと決まったループ・条件だけを許すエンジンにし、サンドボックス設定(使える関数・フィルターの許可リスト)を有効にする。
  2. 管理画面アカウント=サーバー権限にしない: テンプレート編集、プラグイン追加、ファイルアップロードなど「コードを置ける」操作は、特に強い認証(パスキーや 2 段階認証)と操作ログを要求する。
  3. 推測されやすい ID を作らせない: ログイン ID にドメイン名・店舗名・メールアドレスの前半などを既定で使わない。パスワードは漏えいリストとの照合と最低強度を必須にする(パスワードハッシュは「アルゴリズム+コストパラメータ」まで決める(Argon2id / scrypt / bcrypt / PBKDF2))。
  4. 侵害時の連絡経路を決めておく: 運営元はパスワードを「メールでは送らない」と明言し、別経路(担当サポートのチャット)で仮パスワードを渡した。偽の「パスワード再設定メール」が来る前提で、利用者に普段どおりの入口からログインするよう案内する。

やること(使う側)

  • テンプレートにサーバー側コードを書いている箇所がないか棚卸しし、不要なら消す。
  • 管理画面のログイン ID とパスワードを推測されにくいものにし、2 段階認証を有効にする。

注意点

  • テンプレートに任意コードを許すのは機能としては便利だが、「アカウントの乗っ取り」と「サーバーの乗っ取り」の距離をゼロにする。過去に許していた場合は、既存テンプレートに不審なコードが仕込まれていないかも確認する。

出典

X の元の投稿を開く