利用者が編集できるテンプレートでサーバー側のコードを動かさせない(WASABI SWITCH 事例)
EC 運営システム「WASABI SWITCH」への不正アクセスでは、店舗が編集できるコンテンツテンプレートの中で PHP を使える機能が悪用された。管理画面のアカウントを奪われると、テンプレート経由でサーバー上の任意コード実行に直結する。テンプレートはロジックを書けない形式にし、ログイン ID とパスワードの推測されやすさも潰す。
何が起きたか
- 調査で、テンプレートエンジンで使える PHP の機能が不正アクセスに使われていたと判明し、運営元はテンプレート内で PHP を使えないよう仕様を変更した(2026-10-18)。
- 不正ログインは、ログイン ID が利用ドメインと同じ文字列のアカウントや、推測されやすいパスワードのアカウントが狙われていた。運営元は全アカウントのパスワードを強制変更し、メールでの 2 段階認証を必須にした。
- 利用店舗の購入者には、実際の注文情報を書いた不審メール(品切れ返金を名目に LINE 登録へ誘導)が届いていた。
やること(SaaS・CMS を作る側)
- テンプレートはロジックなしの形式にする: 利用者が書けるテンプレートに PHP などのサーバー側コードを埋め込ませない。変数の差し込みと決まったループ・条件だけを許すエンジンにし、サンドボックス設定(使える関数・フィルターの許可リスト)を有効にする。
- 管理画面アカウント=サーバー権限にしない: テンプレート編集、プラグイン追加、ファイルアップロードなど「コードを置ける」操作は、特に強い認証(パスキーや 2 段階認証)と操作ログを要求する。
- 推測されやすい ID を作らせない: ログイン ID にドメイン名・店舗名・メールアドレスの前半などを既定で使わない。パスワードは漏えいリストとの照合と最低強度を必須にする(パスワードハッシュは「アルゴリズム+コストパラメータ」まで決める(Argon2id / scrypt / bcrypt / PBKDF2))。
- 侵害時の連絡経路を決めておく: 運営元はパスワードを「メールでは送らない」と明言し、別経路(担当サポートのチャット)で仮パスワードを渡した。偽の「パスワード再設定メール」が来る前提で、利用者に普段どおりの入口からログインするよう案内する。
やること(使う側)
- テンプレートにサーバー側コードを書いている箇所がないか棚卸しし、不要なら消す。
- 管理画面のログイン ID とパスワードを推測されにくいものにし、2 段階認証を有効にする。
注意点
- テンプレートに任意コードを許すのは機能としては便利だが、「アカウントの乗っ取り」と「サーバーの乗っ取り」の距離をゼロにする。過去に許していた場合は、既存テンプレートに不審なコードが仕込まれていないかも確認する。
出典
- @MalwareBibleJP · 2026-10-19
- ワサビ「【重要・第五報】パスワードの強制変更・2段階認証の設定と、コンテンツテンプレートの仕様変更について」(2026-10-18): wasabi-inc.biz
- @MalwareBibleJP · 2026-10-19