ปัญหา
โค้ดที่เรียก string_ตีความ_escape() จะจัดสรรบัฟเฟอร์สำหรับเดรนตามขนาดจริง และพอยน์เตอร์ที่ถูกเปิดเผยจะจบลงในพื้นที่นอกขอบเขตของบัฟเฟอร์ ดังนั้น เมื่อพยายามประมวลผลสตริงอินพุต สถานการณ์เกิดขึ้นเมื่ออ่านข้อมูลจากพื้นที่นอกขอบเขตของบัฟเฟอร์ที่จัดสรร และความพยายามในการเขียนสตริงที่ไม่ได้ใช้ Escape อาจนำไปสู่การเขียนเกินขอบเขตของบัฟเฟอร์
ในการกำหนดค่าเริ่มต้น สามารถใช้ประโยชน์จากช่องโหว่ได้โดยการส่งข้อมูลที่ออกแบบมาเป็นพิเศษไปยัง SNI เมื่อสร้างการเชื่อมต่อที่ปลอดภัยไปยังเซิร์ฟเวอร์ ปัญหานี้ยังสามารถแก้ไขได้ด้วยการแก้ไขค่า peerdn ในการกำหนดค่าที่กำหนดค่าสำหรับการตรวจสอบสิทธิ์ใบรับรองไคลเอ็นต์หรือเมื่อนำเข้าใบรับรอง การโจมตีผ่าน SNI และ peerdn สามารถทำได้ตั้งแต่การเปิดตัว
มีการเตรียมต้นแบบการหาช่องโหว่สำหรับการโจมตีผ่าน SNI ซึ่งทำงานบนสถาปัตยกรรม i386 และ amd64 บนระบบ Linux พร้อม Glibc ช่องโหว่นี้ใช้การซ้อนทับข้อมูลบนพื้นที่ฮีป ส่งผลให้มีการเขียนทับหน่วยความจำที่ใช้จัดเก็บชื่อไฟล์บันทึก ชื่อไฟล์จะถูกแทนที่ด้วย "/../../../../../../../../etc/passwd" ถัดไป ตัวแปรที่มีที่อยู่ของผู้ส่งจะถูกเขียนทับ ซึ่งจะถูกบันทึกไว้ในบันทึกเป็นครั้งแรก ซึ่งช่วยให้คุณเพิ่มผู้ใช้ใหม่เข้าสู่ระบบได้
การอัปเดตแพ็คเกจพร้อมการแก้ไขช่องโหว่ที่เผยแพร่โดยการแจกจ่าย
เพื่อเป็นวิธีแก้ปัญหาชั่วคราวในการบล็อกช่องโหว่ คุณสามารถปิดใช้งานการสนับสนุน TLS หรือเพิ่มได้
ส่วน ACL “acl_smtp_mail”:
เงื่อนไขการปฏิเสธ = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
เงื่อนไขการปฏิเสธ = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
ที่มา: opennet.ru