ช่องโหว่ความปลอดภัยร้ายแรง CVE-2024-45337 (CVSS 9.1) พบใน Golang Cryptography Library
ช่องโหว่นี้เกิดจากการใช้งานฟังก์ชัน ServerConfig.PublicKeyCallback อย่างไม่เหมาะสม ซึ่งอาจนำไปสู่การเลี่ยงการตรวจสอบสิทธิ์ในแอปพลิเคชันและไลบรารีต่างๆ
ต้นตอของปัญหา:
ฟังก์ชัน PublicKeyCallback ถูกออกแบบมาเพื่อให้เซิร์ฟเวอร์ตรวจสอบความถูกต้องของ public key ที่ลูกค้าส่งมาในระหว่างการเชื่อมต่อ SSH อย่างไรก็ตาม ในเอกสารประกอบได้ระบุไว้อย่างชัดเจนว่าฟังก์ชันนี้ไม่ได้รับประกันว่าคีย์ดังกล่าวจะถูกใช้จริงในการตรวจสอบสิทธิ์
ช่องโหว่เกิดขึ้นเมื่อแอปพลิเคชันใช้ลำดับหรือเนื้อหาของคีย์ที่ส่งไปยัง PublicKeyCallback อย่างผิดพลาดในการตัดสินใจเกี่ยวกับการอนุญาต สิ่งนี้ทำให้ผู้โจมตีสามารถใช้ประโยชน์จากช่องโหว่ดังนี้:
1. ส่งคีย์สาธารณะหลายชุด: ผู้โจมตีสามารถส่ง public key หลายชุดไปยังเซิร์ฟเวอร์เพื่อสร้างความสับสน
2. ตรวจสอบสิทธิ์ด้วยวิธีอื่น: แม้ว่าเซิร์ฟเวอร์จะตรวจสอบคีย์สาธารณะเฉพาะเจาะจง ผู้โจมตีสามารถตรวจสอบสิทธิ์ด้วยวิธีอื่น เช่น รหัสผ่านหรือการโต้ตอบผ่านคีย์บอร์ด
ความไม่สอดคล้องกันระหว่างคีย์ที่แสดงและวิธีการตรวจสอบสิทธิ์จริงสามารถทำให้แอปพลิเคชันที่มีช่องโหว่ยินยอมให้เข้าถึงโดยไม่ได้รับอนุญาต
แนวทางป้องกัน:
1. อัปเกรดเป็น golang.org/x/crypto v0.31.0 หรือใหม่กว่า:
เวอร์ชันนี้ได้แก้ไขปัญหาด้วยการบังคับให้ใช้คีย์ล่าสุดที่ส่งไปยัง PublicKeyCallback ระหว่างการตรวจสอบสิทธิ์ด้วย public key
2. ใช้ Permissions อย่างถูกต้อง:
แอปพลิเคชันควรใช้ฟิลด์ Permissions ในการ callback สำหรับเก็บและดึงข้อมูลที่เกี่ยวข้องกับการตรวจสอบสิทธิ์ หลีกเลี่ยงการตัดสินใจเกี่ยวกับการอนุญาตจากสถานะภายนอกหรือจากลำดับคีย์ที่ส่งไปยัง PublicKeyCallback
3. ตรวจสอบไลบรารีของบุคคลที่สาม:
หากใช้ไลบรารีบุคคลที่สามที่เกี่ยวข้องกับ golang.org/x/crypto ให้ตรวจสอบเอกสารประกอบและการใช้งานอย่างละเอียดเพื่อหลีกเลี่ยงการใช้งาน PublicKeyCallback และฟิลด์ Permissions อย่างไม่เหมาะสม
การดำเนินการตามขั้นตอนเหล่านี้จะช่วยลดความเสี่ยงและป้องกันการโจมตีที่อาจเกิดขึ้นได้
ที่มา
securityonline.info
cyware.com
Fomodailys คือแหล่งข้อมูลข่าวสารที่ครบวงจรสำหรับ Cryptocurrency มุ่งเน้นการนำเสนอเนื้อหาที่น่าเชื่อถือและเข้าใจง่าย เพื่อช่วยให้ทุกคนสามารถก้าวเข้าสู่ยุคใหม่ของการเงินและเทคโนโลยี