Drupal Commerce Core の支払い回避(CVE-2026-118539):更新したら最近の注文を点検する
Drupal の EC モジュール Commerce Core に、認証なしで支払いを飛ばしたり価格を書き換えたりできるアクセス制御の欠陥が見つかった。修正版へ上げるだけでなく、直近の注文に「支払いのない確定注文」や「不自然な単価」がないかを確認する。
どういう問題か
- 一部のルート(URL の経路)やデータ項目の保護が足りず、認証不要・全構成で悪用できると評価された(Drupal の評価で Highly critical、25 点中 21 点)。通常のサイトにも、API だけを使う分離型サイト(ヘッドレス構成)にも影響する。
- 非公開データの一部漏えいとデータの改変も影響に含まれる。保守元 Centarro は実サイトでの不正注文の試みを 2 件受けているが、自動化された悪用は見ていないとしている。
対応手順
- 版を確認して更新する: 影響は 2.41 未満と 3.0.0〜3.3.12。修正版は 3 系が 3.3.13、旧系列が 8.x-2.41(10 月 28 日公開)。
- 関連モジュールも一緒に上げる: 入れているなら Commerce API、Commerce License、Commerce Shipping、Commerce Stripe も同時に更新する。
- 使っていないなら JSON:API を読み取り専用に戻す: JSON:API 経由の更新を許す必要がないサイトは、書き込みを止めておく(それでも修正版の適用は急ぐ)。
- 最近の注文を点検する。見るのは次の 3 つ。
- 決済の保留も承認もないのに「確定」になっている未払い注文
- 普段ありえない単価
- 職員の操作や販促ルールから説明できない値引き・手数料
- JSON:API の更新を許していたサイトでは、決済データがないのに「支払い済み」と表示される注文も対象
- 怪しい注文はアクセスログで裏を取る: 無料注文や職員の価格調整など正当な例もあるので、該当しただけで悪用とは言えない。注文の IP アドレスと時刻をアクセスログと突き合わせ、カートから決済までの通常の画面遷移を通ったかを確認する。
一般化できる教訓
- EC の脆弱性は「更新したら終わり」ではなく、更新前に入った不正な注文が残る。決済の記録と注文の状態がずれていないかを照合する定期チェックがあると、こういうときに速い。