【2016年12月30日更新】 【CVE-2016-10033】 PHPMailerのリモートコード実行脆弱性に関する対応について

CS-Cart日本語版のバージョン4.3.6-jp-1以前(2016年12月30日時点におけるすべてのバージョン)に同梱されているメール送信ライブラリ「PHPMailer」に、任意のコードを実行される恐れのある脆弱性(CVE-2016-10033)が存在することが判明しました。
本脆弱性の影響を受けるCS-Cartのバージョンおよび条件、修正方法を以下に示しますので、対策を実施してください。


 

脆弱性のあるPHPMailerが含まれるCS-Cartのバージョン

 

  • CS-Cart日本語版 - スタンダード版 v4.3.6-jp-1以前のバージョン
  • CS-Cart日本語版 - マーケットプレイス版 v4.3.6-jp-1以前のバージョン

※ 2016年12月30日時点におけるすべてのバージョンが対象となります。

CS-Cartサーバープラン をご利用のお客様については、すでに対策済みのため作業は不要です。
(サーバー上にテスト環境を構築している場合は、テスト環境に下記の対策が施されているか確認してください。対策が施されていない場合はご自身にて実施願います。)
ただし、サーバー上にWordPressなど、PHPMailerを利用する他のCMSなどをインストールしている場合は、必ずご自身で対策を実施してください。

※ 2016年12月30日午前7時以降にCS-Cart.jpからダウンロードしたCS-Cartは対策済みのため対応不要です。


 

脆弱性の影響

 

CS-Cart日本語版では、メールの送信にPHPMailerではなくQdmailを利用しているため、直接的に脆弱性の影響を受けることはありません。
また、意図的にPHPMailerを利用するような改変を行っている場合も、送信処理前に入力値のサニタイズを実施しているため直接的な影響はありません。
ただし、脆弱性のあるスクリプトを放置しておくことは危険なため、必ず下記の対策を実施してください。


 

対策方法

 

本脆弱性は、次に示す手順で修正できます。必ず実施いただきますようお願いいたします。
※ CS-Cartのバージョン確認方法は こちら

【2016年12月30日 午前7:00更新】
以下の赤字の部分が2016年12月30日に更新された箇所となります。
2016年12月29日以前に対策を実施した方は、お手数ですが追加で作業を実施願います。

 ----------------------------------------------------------------
 

CS-Cart日本語版 v4.3系 :
app/lib/vendor/phpmailer/phpmailer/class.phpmailer.php
 の
$this->Sender = $address;
 を
$this->Sender = escapeshellcmd($address) === $address ? $address : '';
 に変更し、

$params = sprintf('-f%s', $this->Sender);
 を
$params = sprintf('-f%s', escapeshellarg($this->Sender));
 に変更してください。

 ----------------------------------------------------------------
 

CS-Cart日本語版 v4.0系、v4.1系、v4.2系 :
app/lib/other/phpmailer/class.phpmailer.php
 の
$this->Sender = $address;
 を
$this->Sender = escapeshellcmd($address) === $address ? $address : '';
 に変更し、

$params = sprintf("-oi -f %s", $this->Sender);
 を
$params = sprintf("-oi -f %s", escapeshellarg($this->Sender));
 に変更してください。

 ----------------------------------------------------------------
 

CS-Cart日本語版 v2系、v3系 :
lib/phpmailer/class.phpmailer.php
 の
$this->Sender = $address;
 を
$this->Sender = escapeshellcmd($address) === $address ? $address : '';
 に変更し、

$params = sprintf("-oi -f %s", $this->Sender);
 を
$params = sprintf("-oi -f %s", escapeshellarg($this->Sender));
 に変更してください。
 ----------------------------------------------------------------

 

影響は限定的だが早めの対応を

 

上記のとおり、本脆弱性によるCS-Cartのセキュリティへの影響は限定的ですが、攻撃によるリスクを最小化するため、必ず上記の対応を実施いただきますようお願い申し上げます。