ProFTPD這個(gè)跑了二十多年的老牌FTP服務(wù)器,因?yàn)橐粋€(gè)日志函數(shù)的引號(hào)判斷邏輯,被敲上了8.1分的CVSS評(píng)分。攻擊者不需要復(fù)雜工具,只需要一個(gè)精心構(gòu)造的用戶名,就能讓數(shù)據(jù)庫(kù)執(zhí)行任意命令——從繞過(guò)登錄到遠(yuǎn)程控制服務(wù)器,全看管理員怎么配的。
漏洞核心:一個(gè)函數(shù)的"聰明"反成破綻
![]()
問(wèn)題出在is_escaped_text()函數(shù)。這個(gè)函數(shù)的設(shè)計(jì)意圖是識(shí)別"已經(jīng)轉(zhuǎn)義過(guò)的安全文本",避免重復(fù)處理。但它的判斷規(guī)則太簡(jiǎn)單了:只要字符串以單引號(hào)開(kāi)頭和結(jié)尾,中間沒(méi)有引號(hào),就認(rèn)定是安全的。
攻擊者利用這個(gè)邏輯漏洞,構(gòu)造'惡意代碼'格式的用戶名。系統(tǒng)一看"哦,有引號(hào)包圍,肯定是轉(zhuǎn)義過(guò)的",直接放行,跳過(guò)了正常的清洗流程。結(jié)果這段"用戶名"被原樣送進(jìn)數(shù)據(jù)庫(kù)查詢,變成可執(zhí)行的SQL指令。
這個(gè)變量通常通過(guò)%U占位符插入日志。管理員用SQLNamedQuery指令配置日志存儲(chǔ)時(shí),很少會(huì)想到一個(gè)用戶名能擊穿整個(gè)安全模型。
攻擊面有多大:看配置,但通常不小
ProFTPD的mod_sql模塊本身是個(gè)常見(jiàn)配置。它讓管理員能用數(shù)據(jù)庫(kù)管用戶,不用給每個(gè)FTP賬號(hào)建本地Linux賬戶——這對(duì)托管幾千個(gè)網(wǎng)站的服務(wù)商來(lái)說(shuō)是剛需。
現(xiàn)代Linux發(fā)行版和主機(jī)管理面板(比如cPanel、Plesk這類)經(jīng)常預(yù)裝ProFTPD。ZeroPath Research指出,這種架構(gòu)在共享主機(jī)環(huán)境里特別普遍。一個(gè)服務(wù)器掛幾千個(gè)網(wǎng)站,數(shù)據(jù)庫(kù)后端是標(biāo)準(zhǔn)操作。
但漏洞的實(shí)際危害取決于具體配置:
· 如果只開(kāi)了日志、沒(méi)開(kāi)數(shù)據(jù)庫(kù)認(rèn)證,攻擊者能篡改日志、注入假記錄,或者通過(guò)SQL查詢探測(cè)數(shù)據(jù)庫(kù)結(jié)構(gòu)
· 如果用了數(shù)據(jù)庫(kù)認(rèn)證,攻擊者可以繞過(guò)密碼驗(yàn)證直接登錄,甚至提權(quán)到管理員
· 如果數(shù)據(jù)庫(kù)用戶權(quán)限給得寬,配合特定條件能執(zhí)行系統(tǒng)命令,實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行
最麻煩的是"配置漂移"——很多服務(wù)器最初只開(kāi)日志,后來(lái)功能越加越多,權(quán)限越放越寬,但安全檢查沒(méi)跟上。
為什么現(xiàn)在才被發(fā)現(xiàn):遺留代碼的信任假設(shè)
ProFTPD的代碼庫(kù)可以追溯到1990年代末。is_escaped_text()這種"看起來(lái)合理"的防御邏輯,在當(dāng)時(shí)可能確實(shí)擋住了一些簡(jiǎn)單攻擊。但它犯了一個(gè)經(jīng)典錯(cuò)誤:用格式特征推斷安全性,而不是真正驗(yàn)證內(nèi)容。
單引號(hào)包圍不等于轉(zhuǎn)義。真正的轉(zhuǎn)義需要處理引號(hào)內(nèi)部的特殊字符,或者使用參數(shù)化查詢把數(shù)據(jù)和指令分開(kāi)。這個(gè)函數(shù)把"長(zhǎng)得像轉(zhuǎn)義的"當(dāng)成"確實(shí)是轉(zhuǎn)義的",屬于典型的邏輯型漏洞——代碼能跑,測(cè)試能過(guò),但攻擊者換個(gè)角度就看穿了。
更深層的問(wèn)題是FTP協(xié)議本身的尷尬地位。它太老了,老到很多人覺(jué)得"反正沒(méi)人用了",安全投入跟著下滑。但現(xiàn)實(shí)是,批量主機(jī)管理、嵌入式設(shè)備、企業(yè)內(nèi)部文件傳輸,F(xiàn)TP/FTPS/SFTP的裝機(jī)量依然巨大。攻擊者從來(lái)不嫌棄舊目標(biāo),反而喜歡這種"沒(méi)人管的老系統(tǒng)"。
修復(fù)建議:ZeroPath Research的緊急呼吁
安全團(tuán)隊(duì)和系統(tǒng)管理員需要立即行動(dòng)。具體措施原文沒(méi)展開(kāi),但從漏洞機(jī)理可以反推優(yōu)先級(jí):
第一,檢查mod_sql是否啟用,以及SQLNamedQuery里有沒(méi)有用到%U這類用戶輸入變量。有的話,這段配置就是攻擊入口。
第二,審視數(shù)據(jù)庫(kù)賬號(hào)權(quán)限。即使漏洞被利用,最小權(quán)限原則也能把損失關(guān)在數(shù)據(jù)庫(kù)層,不至于直接拿到系統(tǒng)shell。
第三,關(guān)注ProFTPD官方補(bǔ)丁。CVE-2026-42167的修復(fù)大概率會(huì)修改is_escaped_text()的判斷邏輯,或者干脆棄用這個(gè)函數(shù),改用更嚴(yán)格的輸入處理。
短期來(lái)看,這個(gè)漏洞會(huì)推動(dòng)一波主機(jī)商的安全審計(jì)。長(zhǎng)期來(lái)看,它再次證明:老代碼的"合理假設(shè)"在新攻擊面下往往是定時(shí)炸彈。FTP不會(huì)消失,但它需要的安全維護(hù)投入,和它的"過(guò)氣"名聲完全不成正比。
最后說(shuō)句扎心的:這個(gè)漏洞的利用門檻低到令人發(fā)指——不需要0day挖掘能力,不需要復(fù)雜漏洞鏈,只需要懂SQL語(yǔ)法和引號(hào)匹配。在漏洞賞金平臺(tái)上,這種"構(gòu)造特定字符串就能RCE"的漏洞,通常歸類為"新手友好型"。二十多年的老牌服務(wù)器被新手友好的方式擊穿,這本身比技術(shù)細(xì)節(jié)更值得行業(yè)反思。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.