Geçen haftanın en kötü haberlerinden birisini aldık, siber güvenlik camiasının ve milyonlarca sistem adminin mesai harcadığı büyük Log4j zafiyeti. Google da son 7 gün aramalarda da Log4j keywordunun nasıl yükseldiğini görebiliyoruz.
Resim-1
Peki nedir bu Log4j ;
Log4j Java tabanlı yazılmış olan isteğe göre seviye bazlı loglama yapan apache lisansı olan loglama frameworkudur. Ceki GÜLCÜ tarafından geliştirilmeye başlanmış ve Apache Software Foundation tarafından geliştirilmesine devam edilmiş.
Yine internette araştırmalarıma göre Ceki GÜLCÜ nin geliştirdiği Log4j 1.x sürümü değil Apache Software Foundation tarafından geliştirilen log4j2 sürümünde zafiyet olduğunu görmem diğer dikkatimi çeken nokta olmuştur.
Resim-2
Dünya üzerinde milyarlarca java kullanan sistem olması bu açığın nedenli kritik seviyede olduğunu gözler önüne sermektedir.
Eğer Log4j 2.0-beta9 ve 2.14.1 sürümleri ve arasında bir sürüm kullanıyorsanız veya kullandığınız uygulamada log4j kütüphanelerinde bu sürümü kullanıyorsa zafiyetten etkilendiniz veya etkilenebilirsiniz deemektir.
Kaynak :https://logging.apache.org/log4j/2.x/security.html
Peki hangi uygulamalar bu zafiyetten etkileniyor derseniz,
Manufacturer/Component | Notes | Verified |
Apple | TRUE | |
Tencent | TRUE | |
Steam | TRUE | |
TRUE | ||
Baidu | TRUE | |
DIDI | TRUE | |
JD | TRUE | |
NetEase | TRUE | |
CloudFlare | TRUE | |
Amazon | TRUE | |
Tesla | TRUE | |
Apache Solr | TRUE | |
Apache Druid | TRUE | |
Apache Flink | FALSE | |
Apache Struts2 | TRUE | |
flume | FALSE | |
dubbo | FALSE | |
IBM Qradar SIEM | TRUE | |
PaloAlto Panorama | TRUE | |
Redis | FALSE | |
logstash | FALSE | |
ElasticSearch | TRUE | |
kafka | FALSE | |
ghidra | TRUE | |
ghidra server | TRUE | |
Minecraft | TRUE | |
PulseSecure | TRUE | |
UniFi | TRUE | |
VMWare | TRUE | |
Blender | TRUE | |
TRUE | ||
Webex | TRUE | |
TRUE | ||
VMWarevCenter | TRUE | |
Speed camera LOL | TRUE |
Kaynak: https://github.com/YfryTchsGD/Log4jAttackSurface
Bu liste sürekli güncelleniyor ve artmaktadır. Etkilenen servisler için verified True ise zafiyet çalıştırılmış ve test edilmiş demektir. False olanlar için durum şu an belirsizdir.
Eğer tamamen internete açık ve portları açık bir sunucunuz var ve yeterli güvenlik ürününe sahip değilseniz , sunucunuz bu zafiyetten etkilenmiş olabilir.
Log4j Zafiyeti Nasıl Çalışıyor ?
Kaynak : https://socradar.io/what-do-you-know-about-the-log4j-critical-vulnerability-and-what-can-we-do/
Node4j Açığının Tespiti
Node4j için henüz bilinen bir patch veya yama çıkmadı her platform ayrı ayrı kendi kütüphanesi için önlemler ve sürüm yükseltme önermektedir.
Öncelikle bu ürün veya kütüphane bizim sunucularımızda var mı öğrenmemiz gerekecek.
Linux sunucularda bunu anlayabilmenin bazı yolları var.
Öncelikle sunucumuzda log4j framework mevcut mu öğrenmek için aşağıdaki basit komut satırları ile arama yapabiliriz.
grep -r “org/apache/logging/log4j/core/lookup/JndiLookup.class” / (/etc veya /opt gibi klasörlerde arama yapmak daha çabuk sürecektir ama garanti sonuç için root altında arama yapmalısınız bunun sonucu çok uzun sürecektir bilginize.
Yukardaki komutu çalıştırdınız ama kaynak yetersizliğinden dolayı veya linuxta ulimite takıldığınızdan dolayı
grep: memory exhausted şeklinde bir hata alabilirsiniz.
Bu hatayı aldığınız için aşağıdaki komutu yerine kullanabilirsiniz.
find /etc -type f -exec grep -rn “org/apache/logging/log4j/core/lookup/JndiLookup.class” /dev/null {} +
Aramanıza göre binary exact matches jar gibi bir sonuç alırsanız log4j kullanıyorsunuz demektir.
Aşağıdaki kaynak verdiğim linklerden de yararlanabilirsiniz.
https://gist.github.com/Neo23x0/e4c8b03ff8cdf1fa63b7d15db6e3860b
Windows için ilgili komut satırı ile aratabilirsiniz.
gci ‘C:\’ -rec -force -include *.jar -ea 0 | foreach {select-string “JndiLookup.class” $_} | select -exp Path
Güncel : Log4j paketlerini bulmak için oluşturulmuş bir java uygulaması
https://github.com/mergebase/log4j-detector
Log4j Zafiyetinden Etkilendim mi ?
Log4j zafiyetinden dolayı sunucunuzda bir tarama yapılıp yapılmadığını veya exploit çalıştırıldığını anlamak için ise
Aşağıdaki komut dizisini kullanabilirsiniz
egrep -i -r ‘\$\{jndi:(ldap[s]?|rmi|dns):/[^\n]+’ /var/log
veya bir python betiği ile bu taramayı yapabilirsiniz.
İlgili python betiği ve nasıl çalıştırılcağı hakkında link:
https://github.com/Neo23x0/log4shell-detector
Apache Software Foundation tarafından yayınlanan bildiriye göre jvm options üzerinde ilgili ayarları yaptığınızda açığı şimdilik kapatabiliyorsunuz.
“Users of Log4j 2.10 or greater may add -Dlog4j.formatMsgNoLookups=true as a command line option or add log4j.formatMsgNoLookups=true to a log4j2.component.properties file on the classpath to prevent lookups in log event messages”
Elastic Search Üstünde Node4j Açığının Kapatılması
Ben ELK üstünde manuel aldığım önlemi burda sizinle paylaşacağım sizlerde bu ayarları yapabilir, şimdilik zafiyetten korunabilirsiniz.
Eğer ELK sunucunuzda servis olarak kurulu ise
Elasticsearch servisinin kurulu olduğu dizine giderek jvm.options dosyasına ilgili satırı ekleyin.
-Dlog4j2.formatMsgNoLookups=true
Bu satırı ekledikten sonra servisi restart edin. Tüm ELK nodelarında bu işlemi sırasıyla yapınız.
Eğer elk servisininde kullanıldığı bir docker yapınız varsa elk servisinin bulunduğu docker yaml dosyasına girerek aşağıdaki satırı editleyiniz.
Servislerin altında elasticsearch: ile başlayan satırı bulun orda
“ES_JAVA_OPTS=-Xms2g –Xmx2g” olan satıra gelin bu satırı aşağıdaki şekilde editleyin.
“ES_JAVA_OPTS=-Xms6g -Xmx6g -Dlog4j2.formatMsgNoLookups=true”
Ardından
docker-compose –f *-compose.yaml up –d komutu ile dockerlarınızı reload edinizi.
SPARK servisi için internette yaptığım araştırmalarda aşağıdaki sonucu buldum.
https://discourse.igniterealtime.org/t/log4j-vulnerability/91111
SAP HANA Sistemler İçin Log4j Zafiyet Tespiti ve Önlemler
https://blogs.sap.com/2021/12/14/hana-xsa-log4j-cve-2021-44228/
Konu ile ilgili bu postu sürekli güncel tutacağım ve yeni bilgiler ile editleyeceğim.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs:Log4j Zafiyeti,Log4j Zafiyeti nedir,Log4j, Log4j Zafiyetinin tespiti, Log4j Zafiyeti için alınabilecek önlemler