Началось все с исправления уязвимости CVE-2016-10033 в PHPMailer 5.2.17: добавили экранирование переменной $sender функцией escapeshellarg() перед вызовом функции mail(). Однако, не учли что использование функции экранирования escapeshellarg() может конфликтовать с escapeshellcmd(), которая применяется для пятого параметра саймой функцией mail(). В результате мы получим неэкранированную последовательность, которая передается параметром к системному вызову mail, что ведет к возможности выполнения любой шелл команды.
Например:
$mail->SetFrom("\"Attacker\\' -Param2 -Param3\"@test.com", 'Client Name');