EC-CUBEの脆弱性「CVE-2021-20717」の注意喚起とブラインドXSSについて

※この記事で知り得たことを悪用することは禁止とします。

5/7にEC-CUBEにXSSの脆弱性があることが公表されました。

https://www.ec-cube.net/news/detail.php?news_id=383

既に攻撃が確認されているとのことです。

修正コードも公開されていましたので、注意喚起と再現をしてみようと思います。

簡単な注意点まとめ

  • 対策などは公式見る。
  • XSSが発生する管理者の操作は「メールを作成→送信内容を確認」。
  • 怪しい箇所はメール通知の内容編集画面で色が変わっている。

脆弱性について

EC-CUBE4系でXSSの脆弱性が確認されています。

以下記述から、通常のXSSではなくブラインドXSSであると推測出来ます。

不正な受注情報が作成された状態で、特定の管理画面操作をするとクロスサイトスクリプティングが発生する可能性があります。

EC-CUBE 4.0系: クロスサイトスクリプティング脆弱性 (JVN#97554111) について
https://www.ec-cube.net/info/weakness/20210507/

ブラインドXSSはStored XSSの一種です。

Stored XSSは、細工した文字列を保存することで他ユーザのブラウザ上で任意のJavascriptを実行させることが可能です。

ブラインドXSSの場合は、「他ユーザ」の対象が管理者となります。

そのため、一般的なXSSのように「検索欄にXSS用の文字列入れてアラート出ないか」と探す方法は取れません。

ブラックボックスの場合は保存できる領域にひたすらにXSS用文字列を入れて保存し、発生したか監視する必要があります。

Burp Proの機能であるCpllaboratorを使用することで検知することが出来ます。

https://burp-resources-ja.webappsec.jp/Documentation/burp/documentation/collaborator/index.html

該当バージョン

該当バージョン:EC-CUBE 4.0.0〜4.0.5

【重要】EC-CUBE 4.0系における緊急度「高」の脆弱性
https://www.ec-cube.net/news/detail.php?news_id=383

対策

バージョンアップもしくはHotfixや修正プラグインをインストールすることで該当脆弱性の修正が可能です。

詳細は公式ページをご確認ください。

https://www.ec-cube.net/news/detail.php?news_id=383

また、攻撃されているかの有無は以下ページをご確認ください。

https://www.ec-cube.net/info/weakness/20210507/#check

再現

※ローカル環境で再現しています。また、この記事で公開している入力箇所や発生遷移は公式発表にて記載されたものであり、未発表のものではございません。

公式発表
https://www.ec-cube.net/info/weakness/20210507/#check

修正前の脆弱なコードにする

該当ファイルを脆弱なコードにしています。

なんとかしてXSS用文字列を埋め込む

具体的にどこに入力したかは記載できませんが、公式発表にある「名前や住所、会社名などに」を参考に埋め込みます。

使うXSS用文字列はアラートが出るだけのものです。

XSSの検知用として使用するためだけのものなので、情報奪取などは出来ません。

対象の遷移を探す

「※ 特に攻撃とみられる受注および、メール通知のプレビューは絶対に表示しないでください。」と公式発表にはありますが、EC-CUBEを使ったことが無いのでどこの機能のことを言っているのかわかりません。

ひたすらに探します。

見つけられました。

「メールを作成→送信内容を確認」の遷移です。

アラートが出ることが確認できました。

修正後の確認

脆弱性が修正されたものにしています。

同様の遷移を確認すると、アラートが出ずに文字列そのまま表示されていることが確認できました。

修正前・修正後で共通ですが、メール内容編集画面ではHTMLとして有効な文字列は色が変わっていました。

事前チェックとして有効かもしれません(書いてあったら申し訳ないです)

今回の件から学んだこと

ECサイトなどユーザ側・管理者側のサイトがある場合に脆弱性診断をする際は、どちらも対象にしたほうが良いと思いました。

予算面で難しい場合は、管理者側はユーザ側の入力がどう扱われているか確認するだけでも良いと思います。

脆弱性診断は対象でなければ診断しませんし、期間が限られているのでひたすらに待っていたりしません。

感想

EC-CUBEのブラインドXSSでした。

ブラインドXSSはバグバウンティではメジャーであり、Appleを対象として行われたバグバウンティレポートでもブラインドXSSは検知されていました。

ブラインドXSSの性質上、管理者側での操作が必要になるので、どうしても脆弱性診断で網羅するのは難しいのかなと感じました。

バグバウンティは時間が無制限(の場合が多い)なので、ブラインドXSS用の文字列を保存してひたすら待つことが可能です。

このあたりの兼ね合いが難しそうです。

スポンサーリンク
スポンサーリンク
ブログ村
PVアクセスランキング にほんブログ村
SNSでフォローする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です