Kritik Log4J Zafiyeti

Yaygın olarak kullanılmakta olan Apache Log4J2 kütüphanesinde kritik seviyede bir zafiyet tespit edilmiştir. Zafiyet, CVE-2021-44228 numarası ve en yüksek CVSS skoru(10) ile yayımlanmıştır. Log4J 2.14.01 ve altı sürümler etkilenmektedir.

2016 yılında siber güvenlik araştırmacılarının gündeme getirdiği Java Naming and Directory Interface (JNDI) üzerinden ‘uzaktan kod çalıştırabilir miyiz’ teorisinin son kurbanı kayıt alma (log) fonksiyonu log4j oldu.

Apache tarafından yayımlanan bilgide Apache Log4J2 <=2.14.1 ‘de konfigürasyon, log mesajları ve parametrelerde kullanılan JNDI özellikleri saldırgan tarafından kontrol edilebilen LDAP  ve diğer JNDI ile ilgili girdilere karşı korumasız kalmaktadır. 

Saldırgan tarafından kontrol edilen ve gönderilen zararlı kodun log’lanması, uygulama üzerinde uzaktan kod çalıştırmaya neden olmaktadır. İstismar; hata mesajları ve anormal http header bilgileri vb. nedenlerle oluşan log mesajlarının parse edilmesi ile oluşmaktadır.

Çözüm Önerileri

Log4j fonksiyonunun güncellenmesi kesin çözüm olsa dahi kullanım alanının yaygınlığı, güncelleme sürecindeki farklı fonksiyon ve servis güncelleme bağımlılıkları olması nedeni ile ideal çözümün uygulanması çok hızlı olmayacaktır. Temel olarak yapılması ön görülen yaklaşım:

  • Yayımlanan Log4J 2.15.0 sürümü ile bu özellik devre dışı bırakılmıştır. Log4j kütüphanelerini hızla son sürüme güncelleyin,

https://logging.apache.org/log4j/2.x/index.html

https://logging.apache.org/log4j/2.x/download.html

  • Web Application Firewall’da kural yazımı ile istismar isteklerini engelleyin,
  • Uygulamalardaki log4f fonksiyonunda uzaktan kod çalıştırmaya yüzey açan kod bloğunu devre dışı bırakın, (log4j.formatMsgNoLookups , Dlog4j.formatMsgNoLookups bu iki fonksiyondan birini kütüphane içerisinde “true” olarak işaretlemeniz gerekir.)
  • Mümkünse log4f fonksiyonunu kapatın,
  • JNDI sorgulama fonksiyonunu kapatın, (JdniLookup ve JdniManager class’larını “log4j-core.jar” içerisinden silmelisiniz.)
  • Aşağıdaki sorgu kodu ile bu işlemlerden önce sisteme istismar denemesi oldu mu kontrollerini sağlayın:

sudo egrep -i -r ‘\$\{jndi:(ldap[s]?|rmi|dns):/[^\n]+’ /var/log/

Kaynaklar:

https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/

https://blog.checkpoint.com/2021/12/11/protecting-against-cve-2021-44228-apache-log4j2-versions-2-14-1/

https://logging.apache.org/log4j/2.x/index.html

https://thehackernews.com/2021/12/extremely-critical-log4j-vulnerability.html