บัฟเฟอร์ล้นใน OpenSSL ที่ถูกใช้ประโยชน์เมื่อตรวจสอบใบรับรอง X.509

มีการเผยแพร่ไลบรารีการเข้ารหัส OpenSSL 3.0.7 รุ่นแก้ไขแล้ว ซึ่งแก้ไขช่องโหว่สองรายการ ปัญหาทั้งสองมีสาเหตุมาจากบัฟเฟอร์ล้นในรหัสตรวจสอบฟิลด์อีเมลในใบรับรอง X.509 และอาจนำไปสู่การเรียกใช้โค้ดเมื่อประมวลผลใบรับรองที่มีเฟรมพิเศษ ในขณะที่เผยแพร่การแก้ไข นักพัฒนา OpenSSL ไม่ได้บันทึกหลักฐานใด ๆ ที่แสดงถึงช่องโหว่ที่ใช้งานได้ซึ่งอาจนำไปสู่การเรียกใช้โค้ดของผู้โจมตี

แม้ว่าการประกาศเวอร์ชันใหม่ก่อนเผยแพร่จะกล่าวถึงปัญหาร้ายแรง แต่ในความเป็นจริงแล้ว ในการอัปเดตที่เผยแพร่ สถานะของช่องโหว่ก็ลดลงถึงระดับที่เป็นช่องโหว่ที่เป็นอันตราย แต่ไม่ร้ายแรง ตามกฎที่ใช้ในโครงการ ระดับของอันตรายจะลดลงหากปัญหาปรากฏในการกำหนดค่าที่ผิดปกติ หรือหากมีโอกาสต่ำที่จะใช้ประโยชน์จากจุดอ่อนในทางปฏิบัติ

ในกรณีนี้ ระดับความรุนแรงลดลงเนื่องจากการวิเคราะห์ช่องโหว่โดยองค์กรต่างๆ โดยละเอียดสรุปว่าความสามารถในการรันโค้ดระหว่างการหาประโยชน์ถูกบล็อกโดยกลไกการป้องกันสแต็กโอเวอร์โฟลว์ที่ใช้ในหลายแพลตฟอร์ม นอกจากนี้ เค้าโครงตารางที่ใช้ในลีนุกซ์บางรุ่นส่งผลให้มีไบต์ 4 ไบต์ที่เกินขอบเขตถูกซ้อนทับบนบัฟเฟอร์ถัดไปบนสแต็ก ซึ่งยังไม่ได้ใช้งาน อย่างไรก็ตาม มีความเป็นไปได้ที่จะมีแพลตฟอร์มที่สามารถนำไปใช้ในการรันโค้ดได้

ปัญหาที่ระบุ:

  • CVE-2022-3602 - ช่องโหว่ซึ่งแสดงในตอนแรกว่าร้ายแรง ทำให้เกิดบัฟเฟอร์ล้นขนาด 4 ไบต์เมื่อตรวจสอบฟิลด์ด้วยที่อยู่อีเมลที่ออกแบบมาเป็นพิเศษในใบรับรอง X.509 ในไคลเอนต์ TLS ช่องโหว่สามารถถูกโจมตีได้เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ที่ควบคุมโดยผู้โจมตี บนเซิร์ฟเวอร์ TLS สามารถโจมตีช่องโหว่ได้หากใช้การรับรองความถูกต้องของไคลเอ็นต์โดยใช้ใบรับรอง ในกรณีนี้ ช่องโหว่จะปรากฏขึ้นในขั้นตอนหลังจากการตรวจสอบห่วงโซ่ความน่าเชื่อถือที่เกี่ยวข้องกับใบรับรอง เช่น การโจมตีต้องการให้ผู้ออกใบรับรองตรวจสอบใบรับรองที่เป็นอันตรายของผู้โจมตี
  • CVE-2022-3786 เป็นอีกหนึ่งเวกเตอร์สำหรับการใช้ประโยชน์จากช่องโหว่ CVE-2022-3602 ที่ระบุในระหว่างการวิเคราะห์ปัญหา ความแตกต่างคือความเป็นไปได้ที่บัฟเฟอร์จะล้นบนสแต็กตามจำนวนไบต์ที่มีเครื่องหมาย “” (เช่น ผู้โจมตีไม่สามารถควบคุมเนื้อหาของโอเวอร์โฟลว์ได้ และปัญหาสามารถใช้เพื่อทำให้แอปพลิเคชันขัดข้องเท่านั้น)

ช่องโหว่จะปรากฏเฉพาะในสาขา OpenSSL 3.0.x เท่านั้น (ข้อบกพร่องดังกล่าวเกิดขึ้นในโค้ดแปลง Unicode (punycode) ที่เพิ่มในสาขา 3.0.x) การเผยแพร่ OpenSSL 1.1.1 รวมถึงไลบรารีส้อม OpenSSL LibreSSL และ BoringSSL ไม่ได้รับผลกระทบจากปัญหานี้ ในเวลาเดียวกัน การอัปเดต OpenSSL 1.1.1 ได้รับการเผยแพร่ ซึ่งมีเฉพาะการแก้ไขข้อบกพร่องที่ไม่เกี่ยวกับความปลอดภัยเท่านั้น

สาขา OpenSSL 3.0 ใช้ในการแจกแจงเช่น Ubuntu 22.04, CentOS Stream 9, RHEL 9, OpenMandriva 4.2, Gentoo, Fedora 36, ​​​​การทดสอบ Debian/ไม่เสถียร ขอแนะนำให้ผู้ใช้ระบบเหล่านี้ติดตั้งการอัปเดตโดยเร็วที่สุด (Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch) ใน SUSE Linux Enterprise 15 SP4 และ openSUSE Leap 15.4 แพ็คเกจที่มี OpenSSL 3.0 จะมีให้เลือกใช้ แพ็คเกจระบบใช้สาขา 1.1.1 Debian 1, Arch Linux, Void Linux, Ubuntu 11, Slackware, ALT Linux, RHEL 20.04, OpenWrt, Alpine Linux 8 และ FreeBSD ยังคงอยู่ในสาขา OpenSSL 3.16.x

ที่มา: opennet.ru

เพิ่มความคิดเห็น