วิเคราะห์การโจมตีโดยใช้ช่องโหว่ของ Exchange CVE-2022-41040 และ CVE-2022-41082

สืบเนื่องจากเมื่อวันที่ 29 กันยายนที่ผ่านมา ทาง Microsoft ได้รายงานถึงช่องโหว่ Zero-Day ระดับความรุนแรงสูงบน Microsoft Exchange Server 2013, 2016 และ 2019 ที่มีชื่อว่า ProxyNotShell ซึ่งมีรายละเอียดดังต่อไปนี้

  • CVE-2022-41040 เป็นช่องโหว่การปลอมแปลงคำขอฝั่งเซิฟเวอร์ - server-side request forgery (SSRF) (CVSS 8.8)
  • CVE-2022-41082 เป็นช่องโหว่ที่ทำให้สามารถเรียกใช้งานโค้ดที่เป็นอันตรายจากระยะไกลได้ผ่าน PowerShell - remote code execution (RCE) (CVSS 8.8)

โดยช่องโหว่ CVE-2022-41040 จะเป็นช่องทางให้ผู้โจมตีที่ผ่านการตรวจสอบสิทธิ์ (authentication) สามารถใช้ประโยชน์จากช่องโหว่ CVE-2022-41082 จากระยะไกลได้ แต่อย่างไรก็ตามการโจมตียังจำเป็นต้องผ่านการตรวจสอบสิทธิ์จาก Exchange Server ให้ได้ก่อน เพื่อที่จะทำให้สามารถโจมตีได้สำเร็จ โดยทั้งสองช่องโหว่สามารถใช้โจมตีแยกจากกันได้

ปัจจุบัน Microsoft Defender Antivirus และ Microsoft Defender for Endpoint สามารถตรวจจับมัลแวร์ และพฤติกรรมที่เกี่ยวข้องกับการโจมตี โดยทาง Microsoft จะยังคงตรวจสอบภัยคุกคามที่ใช้ประโยชน์จากช่องโหว่ดังกล่าวอย่างต่อเนื่อง เพื่อช่วยลดความเสี่ยงให้กับผู้ใช้งาน

ลักษณะการโจมตี
ผู้โจมตีจะส่ง request SOAP "autodiscover" ในลักษณะ POST /autodiscover/autodiscover.json?@toto.com/PowerShell/ [ ..] HTTP/1.1
ซึ่ง request ลักษณะดังกล่าวจะทำให้เกิดการเรียกใช้ PowerShell จากระยะไกล เช่น การติดตั้ง Web Shell บนเซิร์ฟเวอร์ และทำให้สามารถควบคุมระบบได้จากภายนอก ซึ่งด้วยการที่ Exchange Server ทำงานโดยใช้สิทธิ์ในระดับสูง จึงทำให้วิธีนี้เป็นวิธีที่มีประสิทธิภาพมากในการเข้าควบคุมเซิร์ฟเวอร์ทั้งหมด

อย่างไรก็ตามช่องโหว่นี้ผู้โจมตีจำเป็นจะต้องผ่านการตรวจสอบสิทธิ์ก่อน จึงจะสามารถโจมตีได้สำเร็จ แต่การได้มาของข้อมูล User นั้น ผู้โจมตีสามารถได้มาจากหลากหลายวิธีมาก เช่น การโจมตีแบบ Password Spray หรือการซื้อผ่าน Dark Web อื่น ๆ เป็นต้น

แนวทางการป้องกัน

Update 4 ตุลาคม 2565

Microsoft แจ้งว่าผู้ใช้งาน Microsoft Exchange Online ไม่ต้องดำเนินการใด ๆ เพิ่มเติม ส่วนผู้ใช้งาน Exchange Server ให้ดำเนินการดังนี้

  1. เปิด IIS Manager
  2. เลือก Default Web Site
  3. ในเมนู Feature View เลือก URL Rewrite
  4. ใน Actions pane ทางด้านขวา เลือกเมนู Add Rules
  5. เลือก Request Blocking และ click OK
  6. Input ข้อข้อความดังต่อไปนี้ “.autodiscover.json.*Powershell.” (ในข้อความจำเป็นต้องใส่ Quote ลงไปด้วย) จากนั้นคลิ๊ก OK
  7. จากนั้นเลือก Regular Expression ใต้เมนู Using
  8. เลือก Abort Request ใต้คำว่า How to block จากนั้นคลิ๊ก OK
  9. ขยายช่อง Rule และเลือก Rule ที่มี Pattern : .autodiscover.json.*Powershell. จากนั้นเลือก Edit ใต้คำว่า Condition
  10. เปลี่ยน Condition input จาก {URL} เป็น {REQUEST_URI}

Microsoft แจ้งผู้ใช้งานว่าจะไม่มีผลกระทบใด ๆ ต่อฟังก์ชันของ Exchange หากทำตามคำแนะนำ นอกจากนี้ยังแนะนำให้ Disable remote PowerShell สำหรับผู้ที่ไม่ใช่ Administrator ของระบบ

ที่มา : microsoft, msrc