【資安】漏洞預警:PHPMailer存在讓攻擊者遠端執行任意程式碼之漏洞(CVE-2016-10033與CVE-2016-10045),請儘速確認並進行修正。

[內容說明:]
轉發行政法人國家資通安全科技中心 資安訊息警訊 NCCST-ANA-201612-0018。
PHPMailer是一個用於發送電子郵件的PHP函式庫,強化PHP內建之mail函式功能,提供透過網站介面寄發信件用途,並且廣泛被其他開放源專案使用,例如WordPress、Drupal與Joomla等。

2016/12/16波蘭研究員Dawid Golunski發現5.2.18版本以前的PHPMailer,存在未嚴格篩選郵件寄件者特殊字元之問題,導致攻擊者可將惡意郵件寫入網頁程式碼。原因在於PHPMailer實作支援RFC 3696所設定之特殊格式郵件信箱(郵件帳號以雙引號含括,但其中包含空白字元,例如 email address with spaces@example.com)時,並未嚴格過濾內容,導致攻擊者可在上述郵件帳號中,利用添加反斜線與雙引號(”)方式,達到夾帶更多參數給系統上Sendmail郵件伺服器目的(雙引號開頭與結尾代表一個參數,故透過此方式,以增加更多參數),並藉由額外夾帶之Sendmail參數(包含-X,為Sendmail接受之參數,可將郵件內容寫入檔案),達到將惡意PHP程式內容寫入網頁程式碼,以造成遠端執行程式碼之弱點(弱點編號為CVE-2016-10033)。

針對CVE-2016-10033漏洞,雖然PHPMailer官方網站已於12/24釋出5.2.18更新版本,但因更新內容不夠完善,攻擊者仍可透過再增加單引號(‘)方式繞過其更新之過濾防護機制(弱點編號為CVE-2016-10045漏洞)。因此請儘速將PHPMailer更新至5.2.20(12/28釋出)以上版本。

[影響平台:]
PHPMailer 5.2.19(含)前的版本。

[建議措施:]
請檢視PHPMailer版本,方式如下:
1. 檢視PHPMailer根目錄下之VERSION檔案
2. 透過搜尋class.phpmailer.php檔案,並檢視PUBLIC VERSION資訊
如所使用之PHPMailer為5.2.20前的版本,請儘速至官方網頁(https://github.com/PHPMailer/PHPMailer)下載並安裝最新版本之PHPMailer。

[參考資料:]
1. https://github.com/PHPMailer/PHPMailer/wiki/About-the-CVE-2016-10033-and-CVE-2016-10045-vulnerabilities
2. https://www.wordfence.com/blog/2016/12/phpmailer-vulnerability/
3. http://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10033-Vuln.html
4. https://legalhackers.com/advisories/PHPMailer-Exploit-Remote-Code-Exec-CVE-2016-10045-Vuln-Patch-Bypass.html
5. https://github.com/PHPMailer/PHPMailer/blob/master/changelog.md