Критическая Уязвимость В Библиотеке Phpmailer. Устранить Незамедлительно

Дорогие друзья,

В сторонней программной библиотеке PHPMailer была обнаружена критическая уязвимость, позволяющая злоумышленникам создавать на сервере файлы с произвольным содержимым (подробнее: http://thehackernews.com/2016/12/phpmailer-security.html).

Данная библиотека используется в CS-Cart для отправки электронных писем. Однако, благодаря внутренним системам безопасности CS-Cart, созданные файлы не могут содержать исполняемый PHP-код, что усложняет использование этой уязвимости.

Уязвимости подвержены все версии CS-Cart, начиная с 1.2.x.

Три способа устранения уязвимости в зависимости от вашей версии CS-Cart:

• Если вы используете CS-Cart версии 4.4.2, вам необходимо обновить его до версии 4.4.2.SP2. Данное обновление станет доступно в течение следующих 16 часов.

• Если вы успели обновить CS-Cart до версии 4.4.2.SP1, вам также необходимо обновить его до версии 4.4.2.SP2. Данное обновление станет доступно в течение следующих 16 часов.

• Тем, кто использует более ранние версии CS-Cart, мы настоятельно рекомендуем устранить уязвимость самостоятельно, следуя указанным инструкциям:

For CS-Cart 1.x:
1. Откройте файл classes/phpmailer/class.phpmailer.php

2. В этом файле найдите строку:

$this->Sender = $address;

3. Замените её следующей строкой:

$this->Sender = escapeshellcmd($address) === $address ? $address : '';

4. Затем найдите ещё одну строку:

$params = sprintf("-oi -f %s", $this->Sender);

5. И замените её следующей строкой:

$params = sprintf("-oi -f %s", escapeshellarg($this->Sender));


For CS-Cart 2.x, 3.x:
1. Откройте файл lib/phpmailer/class.phpmailer.php

2. В этом файле найдите строку:

$this->Sender = $address;

3. Замените её следующей строкой:

$this->Sender = escapeshellcmd($address) === $address ? $address : '';

4. Затем найдите ещё одну строку:

$params = sprintf("-oi -f %s", $this->Sender);

5. И замените её следующей строкой:

$params = sprintf("-oi -f %s", escapeshellarg($this->Sender));


For CS-Cart 4.0.x, 4.1.x, 4.2.x:
1. Откройте файл app/lib/other/phpmailer/class.phpmailer.php

2. В этом файле найдите строку:

$this->Sender = $address;

3. Замените её следующей строкой:

$this->Sender = escapeshellcmd($address) === $address ? $address : '';

4. Затем найдите ещё одну строку:

$params = sprintf("-oi -f %s", $this->Sender);

5. И замените её следующей строкой:

$params = sprintf("-oi -f %s", escapeshellarg($this->Sender));


For CS-Cart 4.3.x and 4.4.x:
1. Откройте файл app/lib/vendor/phpmailer/phpmailer/class.phpmailer.php

2. В этом файле найдите строку:

$this->Sender = $address;

3. Замените её следующей строкой:

$this->Sender = escapeshellcmd($address) === $address ? $address : '';

4. Затем найдите ещё одну строку:

$params = sprintf('-f%s', $this->Sender);

5. И замените её следующей строкой:

$params = sprintf('-f%s', escapeshellarg($this->Sender));