2023年10月に公開されている「RCE可能な脆弱性(JVN#29195731)」について解説します。
この脆弱性は公式サイトでは「リスク低」となっていますが、独自カスタマイズの状況やプラグインによっては「リスク高」の場合があると考えていますのでやや詳しく解説します。
RCE=リモートコード実行とは?
リモートコード実行(RCE)とは、EC-CUBEサイト上で外部のユーザーから送り込まれたプログラムコードが実行されることです。データ抽出や書き換え、破壊など様々なコードが考えられます。
本脆弱性の概要
twigのSandbox security policyが機能しておらず、{{ include(template_from_string(〇〇)) }}のような書き方をしている場合、〇〇の内容によってはtwigの関数などが実行され外部から操作されてしまう可能性があります。
修正方法としては、twigのSandbox security policyを動作させることになります。
独自カスタマイズ部分やプラグインについても対応が必要か
必須です。独自カスタマイズ部分やプラグインについても、該当箇所がないか確認してください。
本体の該当箇所はあくまで管理者が登録する商品データが対象なのでリスクはそこまで高くなく、むしろ独自カスタマイズ部分やプラグインの方がより対策すべきと考えられます。
実際弊社が確認依頼を受けた中で、会員・受注データに対して同様の処理を行っている緊急性の高い例が存在しました。
脆弱性修正の難易度について
この脆弱性はかなり修正の難易度が高くなっています。twigライブラリのアップデートが必要な上、複数の新規クラスファイル作成が必要であるためです。
twigライブラリアップデートの過程でサイトがエラーになったりすることも考えられるため一度サイトをメンテナンス中にするなどの対応が必要になります。
composerが使えるサーバーであればcomposerのコマンドでアップデートできますが、サイトの作り方によっては依存性エラーやプラグインによるアップデートエラーが発生する可能性があります。
また、EC-CUBEのバージョン(3系旧バージョン)によっては公式サイトに書かれていない対応が必要になるケースがありました。
この脆弱性の対応は、EC-CUBEに特に詳しいエンジニアに対応を任せる方が良いかと思います。サイト運営者は自分で修正するよりも制作元などにご確認いただくことをおすすめします。
対応が難しい場合は下記よりお問い合わせください。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。