เมื่อไม่นานมานี้ได้รับการแจ้งเตือนช่องโหว่ MinIO จากฝ่ายความปลอดภัย

มองเผิน ๆ ช่องโหว่นี้ดูร้ายแรงมาก ต้องรีบแก้ไขให้ทันเวลา
ด้วยเหตุนี้ จึงเริ่มลงมืออัปเกรด
ก่อนอื่น ตรวจสอบว่าเวอร์ชัน MinIO ที่เราใช้คือ 2021-03-26T00:00:41Z
เหตุที่เลือกเวอร์ชันนี้ เพราะเวอร์ชันนี้ใช้สัญญาอนุญาต Apache License 2.0 ,เป็น MinIO เวอร์ชันสุดท้ายที่ใช้เชิงพาณิชย์ได้ฟรีโดยไม่ต้องเปิดเผยซอร์สโค้ด
หลังจากเวอร์ชันนี้ MinIO ได้เปลี่ยนสัญญาอนุญาตเป็น AGPL V3
ตามรายงาน ช่องโหว่นี้
ยืนยันเวอร์ชันที่ได้รับผลกระทบ:RELEASE.2019-12-17T23-16-33Z <= MinIO < RELEASE.2023-03-20T20-16-18Z
เวอร์ชันที่แก้ไขแล้ว:RELEASE.2023-03-20T20-16-18Z
เวอร์ชันที่เราใช้อยู่ในปัจจุบันอยู่ในกลุ่มเวอร์ชันที่ได้รับผลกระทบ。
เนื่องจากเวอร์ชันที่เราใช้เก่าเกินไป จึงไม่กล้าอัปเกรดข้ามเวอร์ชันหลัก。
จึงคิดว่าจะดาวน์โหลดซอร์สโค้ดเอง แล้วอาศัยส่วนของซอร์สโค้ดที่รายงานเปิดเผยมาเขียนแพตช์แก้ไขด้วยตนเอง。
// minio/cmd/bootstrap-peer-server.go
func (b *bootstrapRESTServer) VerifyHandler(w http.ResponseWriter, r *http.Request) { ctx := newContext(r, w, "VerifyHandler") cfg := getServerSystemCfg() logger.LogIf(ctx, json.NewEncoder(w).Encode(&cfg)) }
// minio/cmd/bootstrap-peer-server.go
func getServerSystemCfg() ServerSystemConfig { envs := env.List("MINIO_") envValues := make(map[string]string, len(envs)) for _, envK := range envs { // ข้ามตัวแปรสภาพแวดล้อมบางรายการในส่วนนี้ // ของรายการที่อนุญาตและสามารถกำหนดค่าได้ // แตกต่างกันในแต่ละโหนด ให้อัปเดต skipEnvs() // จับคู่ค่าหากมีค่าจากสภาพแวดล้อมดังกล่าว if _, ok := skipEnvs[envK]; ok { continue } envValues[envK] = env.Get(envK, "") } return ServerSystemConfig{ MinioEndpoints: globalEndpoints, MinioEnv: envValues, } }
แต่เมื่อฉันดาวน์โหลดซอร์สโค้ด แล้วสลับไปยังบรานช์เวอร์ชันที่เราใช้ ฉันกลับพบว่าเวอร์ชันนี้ไม่มีโค้ดที่ระบุไว้ในรายงาน
func (b *bootstrapRESTServer) VerifyHandler(w http.ResponseWriter, r *http.Request) {
ctx := newContext(r, w, "VerifyHandler")
cfg := getServerSystemCfg()
logger.LogIf(ctx, json.NewEncoder(w).Encode(&cfg))
w.(http.Flusher).Flush()
}func getServerSystemCfg() ServerSystemConfig {
return ServerSystemConfig{
MinioPlatform: fmt.Sprintf("OS: %s | Arch: %s", runtime.GOOS, runtime.GOARCH),
MinioEndpoints: globalEndpoints,
}
}โอ๊ย เกิดอะไรขึ้น?เกิดอะไรขึ้น?เกิดอะไรขึ้น?
ตามรายงาน มีเครื่องมือทดสอบที่สามารถใช้ตรวจสอบช่องโหว่นี้ได้https://github.com/MzzdToT/CVE-2023-28432
ดาวน์โหลดโค้ดพิสูจน์ช่องโหว่แล้วรัน ผลลัพธ์แสดงว่าเวอร์ชันที่เราใช้อยู่ไม่ได้รับผลกระทบ。

ตอนนี้ฉันเริ่มสงสัยว่าช่วงเวอร์ชันที่ระบุในรายงานอาจผิด จึงเปรียบเทียบซอร์สโค้ดของ MinIO

เมื่อเปรียบเทียบโค้ดพบว่า เวอร์ชันที่นำข้อบกพร่องนี้เข้ามาจริง ๆ เริ่มตั้งแต่ RELEASE.2021-08-31T05-46-54Z
ตอนนี้ยังยืนยันไม่ได้ว่าข้อสันนิษฐานของผมถูกต้องหรือไม่ จึงเริ่มค้นหาประกาศช่องโหว่นี้จากทางการของ MinIO
https://github.com/minio/minio/security/advisories/GHSA-6xvq-wj2x-3h3q

ความจริงกระจ่างต่อทุกคนแล้ว ทาง MinIO ได้ระบุเวอร์ชันที่ได้รับผลกระทบอย่างถูกต้อง
เวอร์ชันที่ได้รับผลกระทบ
RELEASE.2021-08-31T05-46-54Z
เวอร์ชันที่แก้ไขแล้ว
RELEASE.2023-03-20T20-16-18Z
เวอร์ชันที่เราใช้อยู่ไม่อยู่ในช่วงเวอร์ชันที่ได้รับผลกระทบ。
หลังจากเหตุการณ์ครั้งนี้ ฉันค้นหาบทความอ่านมากมาย
เฮ้อ ผู้ให้บริการด้านความปลอดภัยในประเทศนี่ก็เหมือนกัน คุณลอกฉัน ฉันลอกคุณ。
บทความนี้
https://cloud.tencent.com/developer/article/2315008
ลอกเลียนผลงาน
https://www.h3c.com/cn/d_202304/1830808_30003_0.htm
บทความนี้
https://www.h3c.com/cn/d_202304/1830808_30003_0.htm
ลอกเลียนอีกแล้ว
https://github.com/minio/minio/security/advisories/GHSA-6xvq-wj2x-3h3q
ปรากฏว่ามันยังลอกมาผิดเวอร์ชันอีก ชวนหงุดหงิดจริง ๆ!
ต่อไปฉันจะเปิดเผยลิงก์บทความที่ค้นเจอ มีแต่พวกทำให้คนหลงทางทั้งนั้น ฉันจะขุดมันขึ้นมาสับให้เละ
https://stack.chaitin.com/techblog/detail/62
https://mp.weixin.qq.com/s/JgskenAZ6Cpecoe2k2AEjQ
https://blog.nsfocus.net/miniocve-2023-28432/
https://www.freebuf.com/vuls/363647.html
https://cloud.tencent.com/developer/article/2315008
https://www.h3c.com/cn/d_202304/1830808_30003_0.htm
https://zone.huoxian.cn/d/2708-cve-2023-28432-minio/17
https://www.cve.org/CVERecord?id=CVE-2023-28432