Patched Exim - แพทช์อีกครั้ง การดำเนินการคำสั่งระยะไกลใหม่ใน Exim 4.92 ในคำขอเดียว

Patched Exim - แพทช์อีกครั้ง การดำเนินการคำสั่งระยะไกลใหม่ใน Exim 4.92 ในคำขอเดียว

เมื่อไม่นานมานี้ ในช่วงต้นฤดูร้อน มีการเรียกร้องให้ Exim อัปเดตเป็นเวอร์ชัน 4.92 อย่างกว้างขวาง เนื่องจากช่องโหว่ CVE-2019-10149 (อัปเดต Exim เป็น 4.92 อย่างเร่งด่วน - มีการติดไวรัสที่ใช้งานอยู่ / Sudo Null IT News). และเมื่อไม่นานมานี้ ปรากฎว่ามัลแวร์ Sustes ตัดสินใจใช้ประโยชน์จากช่องโหว่นี้

ตอนนี้ใครก็ตามที่อัพเดทอย่างเร่งด่วนก็สามารถ “ชื่นชมยินดี” อีกครั้งได้: เมื่อวันที่ 21 กรกฎาคม 2019 นักวิจัย Zerons ค้นพบช่องโหว่ที่สำคัญใน Exim Mail Transfer agent (MTA) เมื่อใช้ TLS สำหรับเวอร์ชันจาก 4.80 ไป 4.92.1 รวมช่วยให้สามารถระยะไกลได้ รันโค้ดด้วยสิทธิ์พิเศษ (CVE-2019-15846).

ช่องโหว่

มีช่องโหว่เมื่อใช้ทั้งไลบรารี GnuTLS และ OpenSSL เมื่อสร้างการเชื่อมต่อ TLS ที่ปลอดภัย

ตามที่นักพัฒนา Heiko Schlittermann ไฟล์การกำหนดค่าใน Exim ไม่ได้ใช้ TLS ตามค่าเริ่มต้น แต่การแจกจ่ายจำนวนมากสร้างใบรับรองที่จำเป็นระหว่างการติดตั้งและเปิดใช้งานการเชื่อมต่อที่ปลอดภัย Exim เวอร์ชันใหม่กว่าจะติดตั้งตัวเลือกนี้ด้วย tls_advertise_hosts=* และสร้างใบรับรองที่จำเป็น

ขึ้นอยู่กับการกำหนดค่า Distros ส่วนใหญ่เปิดใช้งานตามค่าเริ่มต้น แต่ Exim จำเป็นต้องมีใบรับรอง+คีย์เพื่อทำงานเป็นเซิร์ฟเวอร์ TLS Distros อาจสร้างใบรับรองระหว่างการตั้งค่า Exims ที่ใหม่กว่ามีตัวเลือก tls_advertise_hosts โดยมีค่าเริ่มต้นเป็น "*" และสร้างใบรับรองที่ลงนามด้วยตนเอง หากไม่มีให้ไว้

ช่องโหว่นั้นอยู่ที่การประมวลผลที่ไม่ถูกต้องของ SNI (Server Name Indication ซึ่งเป็นเทคโนโลยีที่เปิดตัวในปี 2003 ใน RFC 3546 เพื่อให้ไคลเอนต์ขอใบรับรองที่ถูกต้องสำหรับชื่อโดเมน การจัดจำหน่ายมาตรฐาน TLS SNI / บล็อกกลุ่ม WEBO / Sudo Null IT News) ระหว่างการจับมือ TLS ผู้โจมตีเพียงแค่ต้องส่ง SNI ที่ลงท้ายด้วยแบ็กสแลช ("") และอักขระว่าง (" ")

นักวิจัยจาก Qualys ได้ค้นพบข้อบกพร่องในฟังก์ชัน string_printing(tls_in.sni) ซึ่งเกี่ยวข้องกับการหลีกเลี่ยง "" อย่างไม่ถูกต้อง ด้วยเหตุนี้ แบ็กสแลชจึงถูกเขียนโดยไม่ใช้ Escape ไปยังไฟล์ส่วนหัวของสปูลการพิมพ์ จากนั้นไฟล์นี้จะถูกอ่านด้วยสิทธิ์พิเศษโดยฟังก์ชัน spool_read_header() ซึ่งทำให้ฮีปโอเวอร์โฟลว์

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

สามารถดูการศึกษาโดยละเอียดเพิ่มเติมโดย Qualys ได้ ที่นี่.

Patched Exim - แพทช์อีกครั้ง การดำเนินการคำสั่งระยะไกลใหม่ใน Exim 4.92 ในคำขอเดียว

การใช้ SNI ใน TLS

จำนวนเซิร์ฟเวอร์สาธารณะที่อาจมีความเสี่ยง

ตามสถิติจากผู้ให้บริการโฮสติ้งรายใหญ่ อี-ซอฟท์ อิงค์ ณ วันที่ 1 กันยายน บนเซิร์ฟเวอร์ที่เช่า เวอร์ชัน 4.92 ถูกใช้ในโฮสต์มากกว่า 70%

เวอร์ชั่น
จำนวนเซิร์ฟเวอร์
เปอร์เซ็นต์

4.92.1
6471
ลด 1.28%

4.92
376436
ลด 74.22%

4.91
58179
ลด 11.47%

4.9
5732
ลด 1.13%

4.89
10700
ลด 2.11%

4.87
14177
ลด 2.80%

4.84
9937
ลด 1.96%

เวอร์ชันอื่น ๆ
25568
ลด 5.04%

สถิติของบริษัท อี-ซอฟท์ อิงค์

หากคุณใช้เครื่องมือค้นหา Shodanจากนั้นจาก 5,250,000 รายการในฐานข้อมูลเซิร์ฟเวอร์:

  • ประมาณ 3,500,000 รายใช้ Exim 4.92 (ประมาณ 1,380,000 รายใช้ SSL/TLS)
  • มีผู้ใช้มากกว่า 74,000 รายที่ใช้ 4.92.1 (ประมาณ 25,000 รายที่ใช้ SSL/TLS)

ดังนั้น Exim เซิร์ฟเวอร์ที่มีช่องโหว่ซึ่งเป็นที่รู้จักและเข้าถึงได้สาธารณะมีจำนวนประมาณ 1.5 ล้าน.

Patched Exim - แพทช์อีกครั้ง การดำเนินการคำสั่งระยะไกลใหม่ใน Exim 4.92 ในคำขอเดียว

ค้นหาเซิร์ฟเวอร์ Exim ใน Shodan

การป้องกัน

  • ตัวเลือกที่ง่ายที่สุด แต่ไม่แนะนำคือการไม่ใช้ TLS ซึ่งจะส่งผลให้ข้อความอีเมลถูกส่งต่ออย่างชัดเจน
  • เพื่อหลีกเลี่ยงการใช้ประโยชน์จากช่องโหว่ ขอแนะนำให้อัปเดตเป็นเวอร์ชันมากกว่า Exim Internet Mailer 4.92.2.
  • หากไม่สามารถอัปเดตหรือติดตั้งเวอร์ชันที่มีแพตช์ได้ คุณสามารถตั้งค่า ACL ในการกำหนดค่า Exim สำหรับตัวเลือกได้ acl_smtp_mail โดยมีหลักเกณฑ์ดังนี้
    # to be prepended to your mail acl (the ACL referenced
    # by the acl_smtp_mail main config option)
    deny    condition = ${if eq{}{${substr{-1}{1}{$tls_in_sni}}}}
    deny    condition = ${if eq{}{${substr{-1}{1}{$tls_in_peerdn}}}}

ที่มา: will.com

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