php打补丁,PHPMailer库打补丁后漏洞仍然存在,怎么解?
開源PHPMailer庫被披露存有一個(gè)嚴(yán)重的遠(yuǎn)程代碼執(zhí)行漏洞。這個(gè)漏洞在被修補(bǔ)后,又進(jìn)行了二次修復(fù),因?yàn)榈谝淮螞]有充分解決問題。那么,這個(gè)漏洞是如何工作的?為什么原始補(bǔ)丁沒有解決問題?
Michael Cobb:代碼庫和框架大大減少了構(gòu)建新應(yīng)用程序所需的時(shí)間,保存了一些通用組件,因而開發(fā)團(tuán)隊(duì)不需要再為每個(gè)新項(xiàng)目從頭開始構(gòu)建。
絕大多數(shù)Web服務(wù)都是使用流行的第三方框架和庫構(gòu)建的。這種重復(fù)使用代碼的最大問題是,如果在受歡迎的庫中發(fā)現(xiàn)了一個(gè)漏洞,那么它會(huì)影響成千上萬的應(yīng)用程序、站點(diǎn)和服務(wù)。
這種情況非常頻繁,最近又再次出現(xiàn),前不久Dawid Golunski發(fā)現(xiàn)開源運(yùn)輸類PHPMailer中的遠(yuǎn)程代碼執(zhí)行漏洞。利用該漏洞,攻擊者能夠在Web服務(wù)器帳戶的上下文中訪問目標(biāo)服務(wù)器,可能導(dǎo)致Web應(yīng)用程序受損。
PHPMailer被許多開源項(xiàng)目所使用,如WordPress、Drupal和Joomla,全球約有900萬用戶。網(wǎng)上有數(shù)千個(gè)代碼段和示例,顯示了如何使用PHPMailer從各種形式(如聯(lián)系人或注冊(cè)表單)發(fā)送電子郵件,但其中大多數(shù)包含不安全的代碼行,這讓該漏洞得以被利用,因?yàn)樗试S任何人偽造From和發(fā)件人地址。
PHPMailer使用PHP郵件功能作為發(fā)送郵件的默認(rèn)方法。雖然PHPMailer使用的所有電子郵件地址在使用前都已先行進(jìn)行驗(yàn)證,但Golunski發(fā)現(xiàn)了“生成一個(gè)包含可執(zhí)行命令的有效‘發(fā)件人’電子郵件地址的方式”。雖然“發(fā)件人”電子郵件地址應(yīng)由開發(fā)人員設(shè)置,但通常都是由用戶自行設(shè)置,這非常不好,用戶能夠提交他們選擇的任何電子郵件地址。另外,如果開發(fā)人員未對(duì)發(fā)件人的屬性進(jìn)行明確的設(shè)置,則使用發(fā)件人地址。此發(fā)件人值將添加到傳遞給PHP郵件功能的第五個(gè)參數(shù),該函數(shù)無法過濾掉一些可能包含的字符串字面值轉(zhuǎn)義字符。這樣一來,攻擊者能夠注入包含發(fā)送郵件時(shí)執(zhí)行命令的其他參數(shù)。
這個(gè)漏洞被標(biāo)記為CVE-2016-10033,PHPMailer開發(fā)人員認(rèn)為在發(fā)布的PHPMailer 5.2.18版本時(shí)已修復(fù)了該漏洞。他們?cè)趥鬟f給PHP郵件功能之前,添加了escapeshellarg轉(zhuǎn)義函數(shù)來清理發(fā)件人地址值。
但Golunski注意到,當(dāng)escapeshellarg函數(shù)與現(xiàn)有的轉(zhuǎn)義函數(shù)escapeshellcmd組合使用時(shí),發(fā)件人值仍然沒有得到正確的轉(zhuǎn)義。通過向原始攻擊代碼添加額外的引用,仍然可以逃避補(bǔ)丁所提供的保護(hù)。這個(gè)新的漏洞是CVE-2016-10045,補(bǔ)丁在PHPMailer 5.2.20中被發(fā)布。
PHPMailer團(tuán)隊(duì)已經(jīng)在GitHub上發(fā)布了如何正確處理網(wǎng)站表單中使用的電子郵件地址的示例。它需要向網(wǎng)站域內(nèi)的有效地址發(fā)送表單數(shù)據(jù),并由開發(fā)人員設(shè)置。
這被認(rèn)為是一個(gè)非常關(guān)鍵的漏洞,它顯示出開發(fā)人員和Web管理員保持對(duì)最新安全威脅以及使用任何共享組件、包或庫訂閱保持警惕的重要性。
開發(fā)人員應(yīng)該審查使用PHPMailer郵件功能的所有腳本,還要研究PHP的各種轉(zhuǎn)義功能的工作機(jī)制,以及它們對(duì)不同類型字符串的影響,因?yàn)殄e(cuò)誤的轉(zhuǎn)義字符串也可能導(dǎo)致SQL注入。
我們一直都在努力堅(jiān)持原創(chuàng).......請(qǐng)不要一聲不吭,就悄悄拿走。
我原創(chuàng),你原創(chuàng),我們的內(nèi)容世界才會(huì)更加精彩!
【所有原創(chuàng)內(nèi)容版權(quán)均屬TechTarget,歡迎大家轉(zhuǎn)發(fā)分享。但未經(jīng)授權(quán),嚴(yán)禁任何媒體(平面媒體、網(wǎng)絡(luò)媒體、自媒體等)以及微信公眾號(hào)復(fù)制、轉(zhuǎn)載、摘編或以其他方式進(jìn)行使用。】
微信公眾號(hào)
TechTarget
官方微博
TechTarget中國
總結(jié)
以上是生活随笔為你收集整理的php打补丁,PHPMailer库打补丁后漏洞仍然存在,怎么解?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 通过NFC读写15693
- 下一篇: 设计模式杂谈(一)——设计模式概述