Go 1.17.5 和 Go 1.16.12 發(fā)布:安全更新
大家好,我是 polarisxu。
前些天剛發(fā)布 1.17.4 和 1.16.11,今天又發(fā)布 1.17.5 和 Go1.16.11,主要是安全更新,同樣是小版本發(fā)布。
這次發(fā)布,主要包含兩個安全問題修復(fù):
1)net/http 包:限制 header 規(guī)范化緩存
攻擊者可以在接受 HTTP/2 請求的 Go 服務(wù)器中導(dǎo)致無限的內(nèi)存增長。
這個問題還挺嚴(yán)重的。如果因為各種原因,暫時無法升級到最新版本,可以在調(diào)用 Serve 之前設(shè)置 GODEBUG=http2server=0 環(huán)境變量來禁用 HTTP/2,但如果通過 golang.org/x/net/http2 包手動配置,則無法設(shè)置,而應(yīng)該升級 golang.org/x/net/http2 到 v0.0.0-20211209124913-491a49abca63。
2)syscall 包:don’t close fd 0 on ForkExec error
當(dāng)運(yùn)行在 Unix 系統(tǒng)上的 Go 程序沒有文件描述符并調(diào)用 syscall.ForkExec(包括間接使用 os/exec 包)時,syscall.ForkExec 可以關(guān)閉文件描述符 0 作為失敗。如果這種情況反復(fù)發(fā)生,則可能導(dǎo)致 I/O 錯誤重定向,例如將用于一個連接的網(wǎng)絡(luò)流量寫入另一個連接,或者將用于一個文件的內(nèi)容寫入另一個連接。
對于無法立即更新到新版本的用戶,可以通過提高每個進(jìn)程的文件描述符限制來緩解該錯誤。
以上兩個 issue 的詳細(xì)信息見:https://github.com/golang/go/issues?q=milestone%3AGo1.17.5+label%3ACherryPickApproved。
大家可以采用自己喜歡的方式升級版本,也可以到 Go語言中文網(wǎng)下載:https://studygolang.com/dl。
推薦閱讀
