อัปเดต Exim 4.94.2 พร้อมการแก้ไขช่องโหว่ที่สามารถหาประโยชน์ได้จากระยะไกล 10 รายการ

การเปิดตัวเมลเซิร์ฟเวอร์ Exim 4.94.2 ได้รับการเผยแพร่พร้อมกำจัดช่องโหว่ 21 รายการ (CVE-2020-28007-CVE-2020-28026, CVE-2021-27216) ซึ่งได้รับการระบุโดย Qualys และนำเสนอภายใต้ชื่อรหัส 21เล็บ ปัญหา 10 ข้อสามารถถูกโจมตีจากระยะไกลได้ (รวมถึงการรันโค้ดที่มีสิทธิ์รูท) ผ่านการดัดแปลงคำสั่ง SMTP เมื่อโต้ตอบกับเซิร์ฟเวอร์

Exim ทุกเวอร์ชันซึ่งมีการติดตามประวัติใน Git ตั้งแต่ปี 2004 ได้รับผลกระทบจากปัญหานี้ มีการเตรียมต้นแบบการทำงานของการหาประโยชน์สำหรับช่องโหว่ในพื้นที่ 4 รายการและปัญหาระยะไกล 3 รายการ การใช้ประโยชน์จากช่องโหว่ในพื้นที่ (CVE-2020-28007, CVE-2020-28008, CVE-2020-28015, CVE-2020-28012) ช่วยให้คุณสามารถยกระดับสิทธิ์ของคุณให้กับผู้ใช้รูทได้ ปัญหาระยะไกลสองประการ (CVE-2020-28020, CVE-2020-28018) อนุญาตให้เรียกใช้โค้ดโดยไม่ต้องมีการตรวจสอบสิทธิ์ในฐานะผู้ใช้ Exim (จากนั้นคุณจึงสามารถเข้าถึงรูทได้โดยการใช้ประโยชน์จากช่องโหว่ในพื้นที่)

ช่องโหว่ CVE-2020-28021 ช่วยให้สามารถเรียกใช้โค้ดจากระยะไกลได้ทันทีด้วยสิทธิ์ root แต่ต้องมีการเข้าถึงที่มีการรับรองความถูกต้อง (ผู้ใช้จะต้องสร้างเซสชันที่มีการรับรองความถูกต้อง หลังจากนั้นจึงจะสามารถใช้ประโยชน์จากช่องโหว่ดังกล่าวได้ผ่านการจัดการพารามิเตอร์ AUTH ในคำสั่ง MAIL FROM) ปัญหาเกิดจากการที่ผู้โจมตีสามารถทำการแทนที่สตริงในส่วนหัวของสปูลไฟล์ได้โดยการเขียนค่า Authenticated_sender โดยไม่ต้องหลีกอักขระพิเศษอย่างเหมาะสม (เช่น โดยการส่งคำสั่ง “MAIL FROM:<> AUTH=Raven+0AReyes ").

นอกจากนี้ มีข้อสังเกตว่าช่องโหว่ระยะไกลอีกรายการหนึ่งคือ CVE-2020-28017 สามารถนำไปใช้ประโยชน์ในการรันโค้ดที่มีสิทธิ์ผู้ใช้ "exim" โดยไม่ต้องมีการตรวจสอบสิทธิ์ แต่ต้องใช้หน่วยความจำมากกว่า 25 GB สำหรับช่องโหว่ที่เหลืออีก 13 รายการ อาจเตรียมการหาช่องโหว่ได้ แต่งานในทิศทางนี้ยังไม่ได้ดำเนินการ

นักพัฒนา Exim ได้รับแจ้งถึงปัญหาดังกล่าวในเดือนตุลาคมปีที่แล้ว และใช้เวลามากกว่า 6 เดือนในการพัฒนาการแก้ไข แนะนำให้ผู้ดูแลระบบทุกคนอัปเดต Exim บนเมลเซิร์ฟเวอร์เป็นเวอร์ชัน 4.94.2 อย่างเร่งด่วน Exim ทุกเวอร์ชันก่อนรีลีส 4.94.2 ได้รับการประกาศว่าล้าสมัยแล้ว การเผยแพร่เวอร์ชันใหม่ได้รับการประสานงานกับการเผยแพร่ที่เผยแพร่การอัปเดตแพ็คเกจพร้อมกัน: Ubuntu, Arch Linux, FreeBSD, Debian, SUSE และ Fedora RHEL และ CentOS ไม่ได้รับผลกระทบจากปัญหานี้ เนื่องจาก Exim ไม่รวมอยู่ในที่เก็บแพ็กเกจมาตรฐาน (EPEL ยังไม่มีการอัปเดต)

ช่องโหว่ที่ถูกลบ:

  • CVE-2020-28017: จำนวนเต็มล้นในฟังก์ชันreceive_add_recipient()
  • CVE-2020-28020: จำนวนเต็มล้นในฟังก์ชัน gets_msg()
  • CVE-2020-28023: อ่านนอกขอบเขตใน smtp_setup_msg();
  • CVE-2020-28021: การแทนที่บรรทัดใหม่ในส่วนหัวของไฟล์สปูล
  • CVE-2020-28022: เขียนและอ่านในพื้นที่นอกบัฟเฟอร์ที่จัดสรรในฟังก์ชัน extract_option()
  • CVE-2020-28026: การตัดทอนสตริงและการทดแทนใน spool_read_header();
  • CVE-2020-28019: หยุดทำงานเมื่อรีเซ็ตตัวชี้ฟังก์ชันหลังจากเกิดข้อผิดพลาด BDAT
  • CVE-2020-28024: บัฟเฟอร์อันเดอร์โฟลว์ในฟังก์ชัน smtp_ungetc()
  • CVE-2020-28018: การเข้าถึงบัฟเฟอร์แบบใช้งานฟรีใน tls-openssl.c
  • CVE-2020-28025: การอ่านนอกขอบเขตในฟังก์ชัน pdkim_finish_bodyhash()

ช่องโหว่ในท้องถิ่น:

  • CVE-2020-28007: การโจมตีลิงก์สัญลักษณ์ในไดเร็กทอรีบันทึก Exim;
  • CVE-2020-28008: การโจมตีไดเรกทอรี Spool;
  • CVE-2020-28014: การสร้างไฟล์โดยพลการ;
  • CVE-2021-27216: การลบไฟล์โดยพลการ;
  • CVE-2020-28011: บัฟเฟอร์ล้นใน Queue_run();
  • CVE-2020-28010: เขียนนอกขอบเขตใน main();
  • CVE-2020-28013: บัฟเฟอร์ล้นในฟังก์ชัน parse_fix_phrase();
  • CVE-2020-28016: เขียนนอกขอบเขตใน parse_fix_phrase();
  • CVE-2020-28015: การแทนที่บรรทัดใหม่ในส่วนหัวของไฟล์สปูล
  • CVE-2020-28012: ไม่มีการตั้งค่าสถานะ close-on-exec สำหรับไปป์ที่ไม่มีชื่อที่มีสิทธิ์การใช้งาน
  • CVE-2020-28009: จำนวนเต็มล้นในฟังก์ชัน get_stdinput()



ที่มา: opennet.ru

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