ความพยายามทั้งหมดที่นี่เพื่อแก้ไขช่องโหว่ใน log4j นั้นสั้น คุณไม่สามารถพึ่งพา ค้นหา
คำสั่งเนื่องจากจะดูในชุดของเส้นทางที่กำหนดค่าเท่านั้น (/etc/updatedb.conf
บนเดเบียน)
ซอฟต์แวร์สามารถติดตั้งตัวเองในตำแหน่งที่ไม่ได้กำหนดค่าไว้ อัปเดตb.conf
และพลาดงาน cron ซึ่งอัปเดตฐานข้อมูลตำแหน่ง
นอกจากนี้ยังมีการค้นพบว่าผู้จำหน่ายซอฟต์แวร์ (เช่น ยืดหยุ่น) ได้บรรจุใหม่ JndiLookup.class ที่มีช่องโหว่ (เช่น: elasticsearch-sql-cli-7.16.1.jar
) ในตำแหน่งที่ไม่รู้จักมาก่อนซึ่งทำให้โซลูชันไม่สมบูรณ์ซึ่งสร้างขึ้นโดยใช้แฮช ชื่อ หรือพาธของไฟล์ที่รู้จัก
@shodanshok อยู่บนเส้นทางที่ถูกต้อง แต่แทนที่จะค้นหา log4j อย่างชัดเจน การดูใน '.jar' ทุกอันในระบบเป็นสิ่งที่จำเป็น
สมบูรณ์กว่านี้ต้องใช้ซองซิป และส่วนขยายของคำตอบของ shodanshok นี่จะแสดงเฉพาะสถานที่ที่ JndiLookup.คลาส
พบรหัส สามารถเพิ่มบรรทัดอื่นเพื่อลบช่องโหว่เหล่านี้ได้ แต่ฉันอยากให้ดุลยพินิจของผู้ดูแลระบบ ลิงก์ยืดหยุ่นด้านบนแสดงวิธีการ:
สำหรับ jar ใน $(find / -name '*.jar'); ทำ
เปิดเครื่องรูด -l "$jar" | grep 'JndiLookup.class' &>/dev/null && echo "พบช่องโหว่ใน $jar"
เสร็จแล้ว
ตัวอย่าง:
# สำหรับ jar ใน $(find / -name '*.jar'); ทำ
> เปิดเครื่องรูด -l "$jar" | grep 'JndiLookup.class' &>/dev/null && echo "พบช่องโหว่ใน $jar"
> เสร็จแล้ว
พบช่องโหว่ใน /usr/lib/unifi/lib/log4j-core-2.13.3.jar
พบช่องโหว่ใน /home/minecraft/.m2/repository/org/spigotmc/minecraft-server/1.15.2-SNAPSHOT/minecraft-server-1.15.2-SNAPSHOT.jar
พบช่องโหว่ใน /home/minecraft/.m2/repository/org/spigotmc/minecraft-server/1.15.1-SNAPSHOT/minecraft-server-1.15.1-SNAPSHOT.jar
...
ระวังเมื่อเรียกใช้สิ่งนี้บนระบบที่มีระบบไฟล์เครือข่ายที่เมาท์เนื่องจากประสิทธิภาพอาจได้รับผลกระทบ ในกรณีเหล่านั้น คุณต้องรันคำสั่งบนไฟล์เซิร์ฟเวอร์เอง