Go 1.15.5 和 Go 1.14.12 發(fā)布
關(guān)注公眾號 “轉(zhuǎn)角遇到GitHub” ,每天推薦給你優(yōu)秀開源項目
Go Team 又發(fā)布了 Go 1.15.5 和 Go 1.14.12,以解決最近報告的安全問題。建議所有用戶更新到以下版本之一(如果不確定哪個版本,請選擇 Go 1.15.5)。
math/big: 大數(shù)據(jù)遞歸除法時出現(xiàn) panic。當(dāng)提供精心設(shè)置的大數(shù)輸入時,許多 math/big.Int 方法(Div,Exp,DivMod,Quo,Rem,QuoRem,Mod,ModInverse,ModSqrt,Jacobi 和 GCD)可能會 panic。為了避免發(fā)生 panic,除數(shù)或模參數(shù)必須大于 3168 位(在 32 位體系結(jié)構(gòu)上)或 6336 位(在 64 位體系結(jié)構(gòu)上)。多個 math/big.Rat 方法也受到類似的影響。
當(dāng)提供精心審設(shè)置的公鑰和簽名時,crypto/rsa.VerifyPSS,crypto/rsa.VerifyPKCS1v15 和 crypto/dsa.Verify 可能會崩潰。僅當(dāng)使用具有異常大的字段大?。ū茸畲笾С智€ P-521 大幾倍)的自定義 CurveParam 時,crypto/ecdsa 和 crypto/elliptic 操作才可能受到影響。在精心制作的 X.509 證書鏈上使用 crypto/x509.Verify 可能會導(dǎo)致 panic,即使證書沒有鏈接到受信任的根??梢酝ㄟ^ crypto/tls 連接將鏈交付給客戶端,或接受和驗證客戶端證書的服務(wù)器。可以通過 HTTPS 服務(wù)器使 net/http 客戶端崩潰,而接受客戶端證書的 net/http 服務(wù)器將 recover panic 并且不受影響。
此外,在 X.509 證書請求上或在 golang.org/x/crypto/otr 對話期間,調(diào)用 crypto/x509.(*CertificateRequest).CheckSignature 的應(yīng)用程序可能會崩潰。解析 golang.org/x/crypto/openpgp 實體或驗證簽名可能會崩潰。最后,由于主機密鑰格式錯誤,golang.org/x/crypto/ssh 客戶端可能會崩潰,而如果 PublicKeyCallback 接受格式錯誤的公鑰,或者 IsUserAuthority 接受了格式錯誤的證書,則服務(wù)器可能會崩潰。
相關(guān) issue 見:https://github.com/golang/go/issues/42552。
cmd/go:通過 cgo 在構(gòu)建時執(zhí)行任意代碼。當(dāng)使用 cgo 時,go 命令可以在構(gòu)建時執(zhí)行任意代碼。當(dāng)在惡意軟件包上運行 go get 或生成不可信代碼的任何其他命令時,可能會發(fā)生這種情況。這可能是由于通過 #cgo 指令指定的惡意 gcc 標(biāo)志或鏈接的目標(biāo)文件中的惡意符號名稱引起的。相關(guān) issue:https://github.com/golang/go/issues/42556、https://github.com/golang/go/issues/42559
如果你的項目中可能有上面的情況,建議你升級下版本。注意,因為 Go 每次只維護(hù)最近的兩個版本,很多 bug 在之前的版本也是存在的,但官方并沒有在舊版本中解決它們。
「閱讀原文」可以下載最新版本。
推薦閱讀
轉(zhuǎn)角遇到GitHub - 送給愛開源的你
Git ·?GitHub · GitLab · Gitee
