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。
參考資料: