ทำความรู้จักช่องโหว่ใหม่ระดับวิกฤติของ Apache Struts 2 (CVE-2018-11776)

สรุปย่อ

ในวันที่ 22 สิงหาคม 2018 ที่ผ่านมา Apache ได้ออกแพตช์เพื่อแก้ไขช่องโหว่ร้ายแรงระดับวิกฤติ (critical) ใน Apache Struts เพื่อแก้ไขช่องโหว่ CVE-2018-11776 ซึ่งเป็นช่องโหว่ remote code execution กระทบ Apache Struts รุ่น 2.3 ถึง 2.3.34 และ 2.5 ถึง 2.5.16 และอาจส่งกระทบกับ Apache Struts รุ่นอื่นๆ ที่เลิกซัพพอร์ตแล้ว

ทั้งนี้ช่องโหว่ remote code execution ถือเป็นช่องโหว่ที่มีความร้ายแรงสูงสุด เนื่องจากมีความเสี่ยงที่ผู้โจมตีจะรันคำสั่งอันตรายจนกระทั่งยึดครองทั้งระบบได้ ผู้ดูแลระบบควรรีบอัปเดตโดยด่วน

เกี่ยวกับ Apache Struts

Apache Struts เป็น open source framework สำหรับทำเว็บแอปพลิเคชันด้วยภาษา Java ที่กำลังได้รับความนิยมอย่างมากในองค์กรทั่วโลก ในปี 2017เกิดการโจมตี Equifax โดยใช้ช่องโหว่ remote code execution บน Apache Struts (CVE-2017-5638) และเนื่องจาก Equifax ไม่ได้อัปเดตแพตช์เพื่อแก้ไขช่องโหว่ดังกล่าวทำให้ข้อมูลลูกค้าหลุดกว่า 147ล้านคน สร้างความสูญเสียมูลค่ากว่า 600 ล้านดอลลาห์สหรัฐ

รายละเอียดของ CVE-2018-11776

นักวิจัยชื่อ Man Yue Mo จาก Semmle เป็นผู้ค้นพบช่องโหว่ CVE-2018-11776 และทำการแจ้งเตือน Apache Struts ตั้งแต่วันที่ 10 เมษายน 2018 ที่ผ่านมา เขาระบุว่าช่องโหว่ CVE-2018-11776 มีโอกาสที่จะทำให้เกิดความเสียหายได้มากกว่าการโจมตี Equifax เพราะสามารถโจมตีได้ง่ายกว่า เนื่องจากช่องโหว่ CVE-2018-11776 นี้อยู่บน core code ของ Apache Struts และไม่ต้องใช้ปลั๊กอินเสริมใดๆ ในการโจมตี ซึ่งช่องโหว่ดังกล่าวได้รับ CVSS v3 Base Score 9.8

ช่องโหว่ CVE-2018-11776 เกิดจากการไม่ตรวจสอบ input จากผู้ใช้ ทำให้ผู้โจมตีสามารถแทนที่ namespace ด้วยคำสั่งอันตรายได้ ซึ่ง Semmle ได้บอกจุดสังเกตที่ทำให้ถูกโจมตีผ่านช่องโหว่ CVE-2018-11776 คือ

  1. Apache Struts ถูกตั้งค่าให้ alwaysSelectFullNamespace มีค่าเป็น True
  2. Configuration file ของ Apache Struts มี <action ...> tag ที่ไม่ได้ระบุ optional namespace หรือมี <action ...> tag ที่ระบุเป็น wildcard namespace

ถึงแม้ว่าในขณะนี้ Apache Struts ที่ไม่ได้ตั้งค่าดังกล่าวจะปลอดภัย แต่เป็นไปได้ที่จะมีการโจมตีแบบอื่นขึ้นได้ในอนาคต จึงควรแก้ด้วยการอัปเดตแพตช์เป็นรุ่นล่าสุดมากกว่าการแก้ไขการตั้งค่า

ทั้งนี้ Recorded Future ได้ตรวจพบการพูดถึงวิธีโจมตีช่องโหว่ดังกล่าวอย่างมากในเว็บบอร์ดใต้ดินของจีนและรัสเซีย รวมถึงมีการเผยแพร่ Proof of Concept (POC) ของช่องโหว่นี้อย่างเปิดเผยทั่วไปแล้ว เช่น Apache Struts2 CVE-2018-11776 POC และ St2-057 Poc Example ผู้ดูแลระบบจึงควรทำการอัปเดต Apache Struts โดยด่วน

ผู้ที่ได้รับผลกระทบ

นอกจากผู้ใช้ Apache Struts ทั่วไปที่ใช้ Apache Struts รุ่น 2.3 ถึง 2.3.34 และ 2.5 ถึง 2.5.16 จะได้รับผลกระทบแล้ว บริษัทต่างๆ ที่มีการใช้ Apache Struts ในผลิตภัณฑ์อย่าง Cisco ยังได้รับผลกระทบอีกด้วย โดย Cisco อยู่ระหว่างการตรวจสอบว่ามีผลิตภัณฑ์ใดบ้างที่ได้รับผลกระทบบ้าง

แนวทางแก้ไข

  1. อัปเดต Apache Struts เป็นเวอร์ชั่น 2.3.35 หรือ 2.5.17
  2. ตั้งค่า namespace อยู่เสมอ

ตรวจจับการโจมตี

  1. เนื่องจากการโจมตีช่องโหว่ CVE-2018-11776 สามารถโจมตีได้ผ่านเน็ตเวิร์ค ทำให้ Web Application Firewall (WAF) ต่างๆ เช่น Imperva ได้ทำการเพิ่มการดักจับการโจมตีดังกล่าวเข้าไปในบริการแล้ว
  2. สามารถตรวจจับได้ด้วย Snort rule
    1. โดย Talos ออกคำแนะนำว่าสามารถตรวจจับได้ด้วย Snort rule SID 29639, 39190, 39191 และ 47634
    2. และมีผู้เผยแพร่ Snort rule เพื่อใช้ในการตรวจจับ ดังนี้

แหล่งอ้างอิง