ช่องโหว่ Zero-Day ตัวใหม่ใน Java Spring Framework ทำให้เกิดการโจมตีด้วย Remote code execution ได้

มีการเปิดเผยข้อมูลของช่องโหว่ Zero-day ตัวใหม่ใน Spring Core Java framework ที่มีชื่อว่า 'Spring4Shell' ซึ่งทำให้ผู้โจมตีสั่งรันโค้ดที่เป็นอันตรายได้จากระยะไกล (Remote code execution) ได้โดยไม่ต้องมีการตรวจสอบสิทธิ์บนแอปพลิเคชัน

Spring เป็น Application framework ยอดนิยมที่ช่วยให้นักพัฒนาซอฟต์แวร์พัฒนาแอปพลิเคชัน Java ได้อย่างรวดเร็ว แอปพลิเคชันเหล่านี้สามารถนำไปใช้งานบนเซิร์ฟเวอร์ เช่น Apache Tomcat ในลักษณะ Stand-alone packages ได้

โดยเมื่อวานนี้ (29 มีนาคม 2022) ได้มีการเปิดเผยช่องโหว่ของ Spring Cloud Function ซึ่งมีหมายเลขช่องโหว่คือ CVE-2022-22963 โดยคาดว่าน่าจะมี POC Exploit ถูกปล่อยตามออกมาในเร็วๆนี้

อย่างไรก็ตาม มีการพบข้อมูลเกี่ยวกับช่องโหว่ Remote code execution ของ Spring Core ที่ร้ายแรงกว่านั้นถูกเผยแพร่ใน QQ chat service และเว็บไซต์ด้าน Cybersecurity ของจีนในเวลาต่อมา

ในวันนี้ (30 มีนาคม 2022) Exploit code ของช่องโหว่ Zero-Day ดังกล่าวได้ถูกปล่อยออกมาในช่วงระยะเวลาหนึ่งก่อนที่จะถูกลบออกไป แต่นักวิจัยด้านความปลอดภัยทางไซเบอร์บางคนสามารถดาวน์โหลดโค้ดไว้ได้ทัน และในเวลาต่อมานักวิจัยด้านความปลอดภัยทางไซเบอร์และบริษัทรักษาความปลอดภัยจำนวนมากได้ยืนยันว่าข้อมูลช่องโหว่นั้นถูกต้อง และเป็นเรื่องที่น่ากังวลอย่างมาก

ช่องโหว่ Spring RCE ตัวใหม่นี้ ซึ่งปัจจุบันเรียกว่า Spring4Shell เกิดจากการ Deserialization ที่ไม่ปลอดภัยของ passed arguments โดยในช่วงแรกคาดว่าจะส่งผลต่อแอปที่ใช้งาน Spring ทั้งหมดที่ทำงานบน Java เวอร์ชัน 9 ขึ้นไป แต่ในภายหลังพบว่าต้องมี requirement บางอย่างจึงจะทำให้แอปที่ใช้งาน Spring มีช่องโหว่

Will Dormann นักวิเคราะห์ช่องโหว่ของ CERT/CC กล่าวว่าแอปต้องใช้ "Spring Beans", "Spring Parameter Binding" และ Spring Parameter Binding ต้องมีการตั้งค่าให้ใช้ non-basic parameter type เช่น POJO

บริษัทรักษาความปลอดภัยทางไซเบอร์ Praetorian ยังยืนยันว่าช่องโหว่นี้ต้องมีการตั้งค่าเฉพาะเจาะจงบางอย่าง จึงจะทำให้การโจมตีนั้นเกิดขึ้นได้สำเร็จ

"การโจมตีช่องโหว่นี้ ต้องมีการเปิดใช้งาน DataBinder (เช่น POST request ที่ decode ข้อมูลจาก request body โดยอัตโนมัติ) และขึ้นอยู่กับ Servlet container สำหรับแอปพลิเคชัน" Praetorian อธิบาย

ตัวอย่างเช่น เมื่อ Spring ถูกปรับใช้กับ Apache Tomcat ที่สามารถเข้าถึง WebAppClassLoader ได้ ซึ่งช่วยให้ผู้โจมตีสามารถเรียก getters และ setters เพื่อเขียนไฟล์ JSP ที่เป็นอันตรายลงบนดิสก์ได้ และหาก Spring ถูกปรับโดยใช้ Embedded Tomcat Servlet Container ตัวโหลด classloader จะเป็น LaunchedURLClassLoader ซึ่งมีการเข้าถึงที่จำกัด

แม้ว่าเงื่อนไขอาจมีข้อจำกัดจำนวนมาก แต่แหล่งข่าวหลายแห่งแจ้งกับทาง BleepingComputer ว่าช่องโหว่ของ Spring4Shell กำลังถูกใช้ในการโจมตีเป็นจำนวนมาก

ช่องโหว่นี้คือ Log4Shell ใหม่หรือไม่

Spring เป็น Application framework ที่ได้รับความนิยมอย่างมากสำหรับ Java applications ซึ่งทำให้เกิดความกังวลอย่างมากว่าเหตุการณ์นี้อาจนำไปสู่การโจมตีในวงกว้างเมื่อผู้โจมตีสแกนหาแอปที่มีช่องโหว่

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

จากเหตุการณ์การโจมตีลักษณะนี้ ทำให้ค่อนข้างคล้ายกับช่องโหว่ที่ถูกพบในเดือนธันวาคม ด้วยการโจมตีเซิร์ฟเวอร์ที่มีการใช้ Log4j จำนวนมาก โดยช่องโหว่นี้ถูกใช้เพื่อติดตั้งมัลแวร์ และ Ransomware

เนื่องจากช่องโหว่นี้ยังไม่มีแพตช์แก้ไข เพื่อป้องกันไม่ให้ถูกโจมตีด้วยช่องโหว่ดังกล่าว ขอแนะนำให้ผู้ดูแลระบบใช้ข้อมูลของ Praetorian เพื่อลดผลกระทบที่อาจเกิดขึ้นโดยเร็วที่สุด

ที่มา : bleepingcomputer