

最新消息
北京時(shí)間2025年4月2日,Go 官方團(tuán)隊(duì)緊急發(fā)布了Go 1.24.2和Go 1.23.8版本,重點(diǎn)修復(fù)了net/http
包中的一個(gè)高危安全漏洞——HTTP 請(qǐng)求走私(Request Smuggling)(CVE-2025-22871)。該漏洞可能導(dǎo)致惡意攻擊者繞過安全檢測(cè),構(gòu)造非法請(qǐng)求,威脅服務(wù)器安全。
漏洞影響范圍
? 所有使用
net/http
處理分塊傳輸編碼(Chunked Transfer Encoding)的 Go 服務(wù)端或代理服務(wù)器。? 如果服務(wù)部署在反向代理(如 Nginx、Apache)之后,也可能受此漏洞影響,需同步檢查代理配置。
什么是 HTTP 請(qǐng)求走私?
HTTP 請(qǐng)求走私是一種攻擊技術(shù),攻擊者通過構(gòu)造畸形的 HTTP 請(qǐng)求,利用服務(wù)器和代理對(duì)請(qǐng)求解析的差異,繞過安全策略,實(shí)現(xiàn)惡意請(qǐng)求注入、緩存投毒甚至數(shù)據(jù)竊取。
漏洞成因
在 Go 的net/http
包中,當(dāng)處理分塊傳輸編碼(Chunked Encoding)的請(qǐng)求時(shí),如果分塊大小行(Chunk-Size Line)以\n
(LF)而非標(biāo)準(zhǔn)的\r\n
(CRLF)結(jié)尾,某些代理或服務(wù)端可能會(huì)錯(cuò)誤解析,導(dǎo)致請(qǐng)求走私。
攻擊示例
惡意請(qǐng)求可能長(zhǎng)這樣:
GET / HTTP/1.1 Transfer-Encoding: chunked 5\n // 非法分塊行(僅 LF 結(jié)尾) Hello 0\r\n\r
修復(fù)前:部分服務(wù)器可能錯(cuò)誤解析5\n
為合法分塊,導(dǎo)致后續(xù)數(shù)據(jù)被惡意利用。
修復(fù)后:Go 1.24.2 嚴(yán)格拒絕此類請(qǐng)求,直接返回錯(cuò)誤。
? 修復(fù)內(nèi)容:Go 1.24.2 如何堵住漏洞?
本次更新在net/http
包中增加了嚴(yán)格的分塊編碼校驗(yàn)邏輯:
1.強(qiáng)制 CRLF 檢測(cè)
? 分塊大小行必須以
\r\n
結(jié)尾,否則直接報(bào)錯(cuò)"chunked line ends with bare LF"。
2.禁止非法 CR 字符
? 如果分塊行內(nèi)部出現(xiàn)額外的
\r
,拋出錯(cuò)誤"invalid CR in chunked line",防止攻擊者構(gòu)造畸形數(shù)據(jù)。
3.嚴(yán)格遵循 RFC 9112 標(biāo)準(zhǔn)
? 確保所有分塊請(qǐng)求解析符合 HTTP 規(guī)范,避免解析歧義。
修復(fù)代碼關(guān)鍵邏輯(簡(jiǎn)化版):
if bytes.IndexByte(p, '\r') != len(p)-2 { return errors.New("invalid chunked line") } p = p[:len(p)-2] // 移除 CRLF,僅處理合法數(shù)據(jù)
影響與建議?必須升級(jí)的場(chǎng)景:
? 你的 Go 服務(wù)直接暴露在公網(wǎng),處理用戶請(qǐng)求。
? 使用了
net/http
作為 HTTP 服務(wù)器或客戶端,并啟用分塊傳輸編碼。
如何檢查是否受影響?
? 運(yùn)行
go version
,如果版本低于1.24.2或1.23.8,需立即升級(jí)。? 使用安全掃描工具(如 Burp Suite)測(cè)試服務(wù)端是否允許裸 LF 分塊請(qǐng)求。
升級(jí)命令
go get golang.org/dl/go1.24.2 go1.24.2 download
總結(jié)Go 1.24.2 是一個(gè)關(guān)鍵安全更新,所有開發(fā)者應(yīng)盡快升級(jí),避免被惡意攻擊者利用請(qǐng)求走私漏洞入侵服務(wù)。如果你的業(yè)務(wù)依賴 HTTP 分塊傳輸編碼,建議:
1.立即升級(jí)到 Go 1.24.2。
2.檢查反向代理配置,確保兼容 RFC 標(biāo)準(zhǔn)。
3.監(jiān)控異常請(qǐng)求,防范潛在攻擊。
我們相信 Go 語言和算法為普通開發(fā)者提供了強(qiáng)有力的“面試?yán)鳌?,并致力于分享全面的編程知識(shí)。在這里,您可以找到最新的 Go 語言教程、算法解析、提升面試競(jìng)爭(zhēng)力的秘籍以及行業(yè)動(dòng)態(tài)。 歡迎關(guān)注“福大大架構(gòu)師每日一題”,讓 Go 語言和算法助力您的職業(yè)發(fā)展
熱門跟貼