CVE-2024-3094
XZ Backdoor : Linux Dağıtımlarını Tehdit Eden Kritik Güvenlik Açığı

CVE-2024-3094 <br> XZ Backdoor : Linux Dağıtımlarını Tehdit Eden Kritik Güvenlik Açığı

Giriş

2024 yılı Mart ayının sonlarında, Linux dağıtımlarında yaygın olarak kullanılan XZ Utils paketinde kritik bir güvenlik açığı keşfedildi. CVE-2024-3094 olarak adlandırılan bu açık, saldırganların sisteme yetkisiz erişim sağlamasına ve sistemi ele geçirmesine izin vermektedir. Bu yazıda, XZ Utils’in ne olduğunu, nerede kullanıldığını, CVE-2024-3094 açığının ayrıntılarını ve saldırılardan korunma yöntemlerini inceleyeceğiz.

XZ Nedir?

XZ, LZMA ve LZMA2 sıkıştırma algoritmalarını kullanan açık kaynaklı bir veri sıkıştırma programıdır. Neredeyse tüm Linux dağıtımlarında bulunan XZ Utils, veri transferlerini hızlandırır ve depolama alanından tasarruf sağlar.

XZ Nerede Kullanılır?

XZ, çeşitli Linux dağıtımlarında paketleri sıkıştırmak için kullanılır. Ayrıca, GIMP, VLC Media Player ve 7-Zip gibi birçok popüler uygulamada da sıkıştırma aracı olarak kullanılır.

CVE-2024-3094 Açığı Nedir?

CVE-2024-3094, XZ Utils’in 5.6.0 ve 5.6.1 versiyonlarında bulunan bir arka kapı güvenlik açığıdır. CVSS (Common Vulnerability Scoring System) skoru “10” olarak belirlenen bu açık, saldırganların hedef sisteme erişmesine izin verir. Saldırganlar, bu zafiyeti kullanarak sisteme virüs bulaştırabilir, verileri çalabilir veya sistemi ele geçirebilir.

Ne Oldu?

Microsoft’ta PostgreSQL çalışmaları üzerinde çalışan bir geliştirici ve mühendis olan Andres Freund, kısa süre önce bir Debian sisteminin SSH ile yaşadığı performans sorunlarını gidermeye çalışıyordu. Bu durumda SSH girişleri çok fazla CPU tüketiyor ve valgrind (bellek izleme aracı) ile hatalar üretiyordu.

Freund, dikkatli çalışması sayesinde sorunun XZ Utils’e yapılan güncellemelerden kaynaklandığını keşfetti. Freund, Open Source Security List’e yaptığı açıklamada, güncellemelerin sıkıştırma yazılımına kasıtlı olarak arka kapı yerleştiren birinin işi olduğunu belirtti. (https://www.openwall.com/lists/oss-security/2024/03/29/4)

Andres Freund’un dikkati göz ardı edilemeyecek kadar önemliydi, aradaki 500 milisaniyelik farkın dikkate alınması, arka kapının ortaya çıkmasına neden oldu.

Resim

 

Bir Sıkıştırma Yardımcı Programı SSH’ı Nasıl Manipüle Edebilir?

Bu sorunun cevabı, bağlantılar ve paylaşılan kütüphaneler kavramlarını anlamakta yatmaktadır.

Bağlantılar:

Bir program, başka bir programın işlevlerini kullanmak için ona “bağlanabilir”. Bu, bir programın diğerinin kodunu doğrudan çalıştırmasına izin verir.

Paylaşılan Kütüphaneler:

Birden fazla program tarafından kullanılabilen önceden derlenmiş kod parçalarıdır. Bu, programların kodlarını tekrar tekrar yazma ihtiyacını ortadan kaldırarak daha az yer kaplamalarını ve daha hızlı çalışmasını sağlar.

Sıkıştırma Yardımcı Programı ve SSH:

XZ Utils gibi bir sıkıştırma programı, SSH gibi bir programla doğrudan bağlantılı değildir. Ancak, Debian ve diğer bazı Linux dağıtımları, systemd adlı bir program aracılığıyla dolaylı olarak bağlanırlar. Systemd, önyükleme sırasında çeşitli hizmetleri başlatmak için kullanılan bir sistem yöneticisidir. Systemd, XZUtils’i kullanarak sıkıştırılmış dosyaları açabilir ve bu da XZ Utils’e sshd üzerinde dolaylı kontrol sağlar.

Arka Kapı Nasıl Oluşturuldu?

Bu arka kapı yılların emeği gibi görünüyor. Elimizdeki en büyük isim, Github üzerinde JiaT75 (https://github.com/JiaT75) kullanıcı adını kulanan, “Jia Tan” isimli arkadaş veya arkadaşlar.

Hikayeye 2021 yılında başlayan Jia Tan, sıkıştırma algoritmaları üzerinde çalışan bir geliştirici profili olarak kendini gösteriyor. (https://github.com/JiaT75?tab=repositories)

2021: Başlangıç

Yukarıdaki görselde, Jia Tan‘ın 2021 yılında libarchive gibi bir çok açık kaynak projeye katkıda bulunduğunu görebiliyoruz. XZ zafiyetinin keşfedilmesinin ardından, Jia Tan‘ın geçmişteki geliştirmeleri incelendiğinde, libarchive projesine şüpheli bir Pull Request (PR) açtığı ortaya çıktı. (https://github.com/libarchive/libarchive/pull/1609)

Bu PR, güvenli olmayan bir fonksiyonun kullanılmasını içeriyor ve potansiyel bir başka zafiyeti gündeme getiriyor. “safe_fprint” fonksiyonunun daha az güvenli bir varyant ile değiştirildiğini görebiliriz. O sırada bu değişiklik fark edilmemiş.

 (https://github.com/libarchive/libarchive/commit/f27c173d17dc807733b3a4f8c11207c3f04ff34f)

2022: Zafiyetin Gelişimi

2022 yılında, XZ zafiyetinin gelişimi ilginç bir hal aldı. Nisan ayında Jia Tan, XZ üzerinde bir geliştirme yaparak, ilgili geliştirmeleri e-posta yoluyla gönderdi. Ancak asıl dikkat çeken, bu kodun gönderilmesinin ardından yaşanan gelişmeler oldu. Yeni bir kullanıcı olan Jigar Kumar sahneye çıktı ve bu kodun XZ Utils projesine eklenmesi için ısrar etmeye başladı. (https://web.archive.org/web/20240331231543/https://www.mail-archive.com/xz-devel@tukaani.org/msg00565.html)

Kısa bir süre sonra, Jigar Kumar XZ’nin baş geliştiricisi Lasse Collin üzerinde baskı kurarak, projede işlerin yavaş yürüdüğünü, ve XZ’nin başka bir geliştiriciye ihtiyacı olduğunu aktarmaya başladı. Bu durum, açık kaynak yazılımın güvenliği ve devamlılığı ile geliştiricilerin ruh sağlığı arasındaki hassas dengenin altını çizmektedir. (https://web.archive.org/web/20240329182352/https://www.mail-archive.com/xz-devel@tukaani.org/msg00566.html)

 

Jigar Kumar‘ın yaptığı baskı birkaç gün içinde sona erse de, benzer isim yapısına sahip başka kullanıcılar (örneğin Dennis Ens) ortaya çıktı ve baskıyı sürdürdü.

Jigar Kumar, Dennis Ens gibi yeni hesapların, XZ dışında herhangi bir faaliyetleri yoktur ve kimlikleri hala anonimliklerini korumaktadır.

 

2023: Arka Kapının Yerleştirilmesi

2023 yılında, XZ zafiyeti hikayesi yeni bir boyuta taşındı. Jia Tan, bu sefer XZ’ye doğrudan bir arka kapı yerleştirilmesi sürecine öncülük etti. Bu, zafiyetin artık sadece teorik bir risk olmaktan çıkıp, potansiyel bir güvenlik zafiyetine dönüşmesi anlamına geliyordu.

Olaylar, Jia Tan‘ın XZ kod tabanına önemli değişiklikler yapmasıyla başladı. Bu değişiklikler, güvenlik açığına yol açacak bir yapıda tasarlandı ve kodun kritik bölümlerine yerleştirildi. En dikkat çekici nokta, bu değişikliklerin doğrudan güvenlik denetimlerinden kaçınacak şekilde tasarlanmış olmasıydı.

Bu süreçte, Jia Tan‘ın XZ projesinde daha önce tanımlanmamış yeni fonksiyonlar ve kod parçaları eklediği görüldü. Bu yeni eklemeler, projenin güvenlik yapısını tehlikeye atacak ve kötü niyetli kullanıcıların sisteme sızmasına olanak tanıyacak şekilde tasarlandı.

 

  • 7 Ocak 2023 tarihinde Jia Tan, XZ üzerinde ilk kod değişikliğini (commit) yapıyor ve bu da bize tam olarak güveni ne zaman kazandığına dair bir ipucu veriyor. (https://github.com/tukaani-project/xz/pull/7)
  • 2023 Mart ayında, Google’ın OSS-Fuzz projesindeki birincil iletişim e-postası, Lasse Collin’in yerine Jia Tan’ın e-postası olarak güncelleniyor.  (https://github.com/JiaT75/oss-fuzz/commit/6403e93344476972e908ce17e8244f5c2b957dfd)
  • Saldırıda kullanılacak olan test altyapısı, “Jia Tan” tarafından sisteme ekleniyor. Ancak kodun asıl yazarı “Hans Jansen” olarak gözüküyor. Bu kod eklenirken “Lasse Collin” geliştirici olarak gösteriliyor. Hans Jansen’in hesabı, yalnızca bu sahtekarlığı gerçekleştirmek için oluşturulmuş olabilir. (https://git.tukaani.org/?p=xz.git;a=commitdiff;h=ee44863ae88e377a5df10db007ba9bfadde3d314)

    Hans Jansen’in hesabında daha önce ve sonra çok az aktivite görülmektedir. Backdoor içeren XZ sürümünün Debian’a dahil edilmesi için baskı yapmıştır.

  • 2023 Temmuz ayında, yukarıdaki değişikliklerden kaynaklanan sorunlar nedeniyle, fuzzing yapıları için ifunc’un devre dışı bırakılması hakkında, OSS-Fuzz’da bir PR açılmıştır. Bu, yakında tanıtılacak kötü niyetli değişiklikleri gizlemek için kasıtlı gibi görünmektedir. Ayrıca, Jia Tan, gerçekten yanlış olan ancak ifunc’lara dikkat çeken bir Issue açmıştır. (https://github.com/llvm/llvm-project/issues/63957)

 

2024: Kontrolün Ele geçirilmesi ve Arka Kapının Eklenmesi

 

Tespit

CVE-2024-3094 zafiyetinden etkilenip etkilenmediğinizi anlamak için,

strings `which xz` | grep ‘5\.6\.[01]’

komutunu terminal üzerinde çalıştırabilirsiniz.

Cevap olarak bir sonuç almadığınız durumda zafiyetten (şimdilik) etkilenmiyorsunuz demektir.

Zafiyetli bir çıktı olarak, “xz (XZ Utils) 5.6.1” gibi bir sonuç görüyorsanız zafiyetten etkileniyorsunuz demektir. Hızlı bir adım olarak korunma yollarına gitmeniz tavsiye edilir.

Korunma

  • XZ Utils’i Eski Sürüme Dönüştürün: XZ sürümünüzü düşürün, 5.6.0 veya 5.6.1 sürümü kullanıyor iseniz daha düşük bir versiyona geçin sağlayın. Çoğu dağıtımda etkilenmemiş en son sürüm 5.4.6’dır.
  • İlgili Servisleri Yeniden Başlatın: Downgrade işleminden sonra sisteminizi yeniden başlatın veya OpenSSH sunucusunu yeniden başlatın.(sudo systemctl restart ssh) Bu işlem, etkilenen kodun bellekten temizlenmesini sağlar.
  • HoneyPot: Github üzerinde yayınlanan zafiyetli XZ Honeypot, saldırganları tespit ve analiz noktasında size fayda sağlar. (https://github.com/lockness-Ko/xz-vulnerable-honeypot)

 

Sonuç

Bu karmaşık ve çok aşamalı saldırı, Linux ekosisteminde kritik bir güvenlik açığının ortaya çıkışını ve bu tür zafiyetlerin ne denli ciddi sonuçlar doğurabileceğini gözler önüne sermiştir.

CVE-2024-3094 zafiyeti, sadece teknik bir açık olmanın ötesinde, açık kaynak toplulukları ve yazılım güvenliği pratikleri üzerinde ciddi soruları da beraberinde getirmiştir. Bu olay, açık kaynak projelerde katkıda bulunanların kimliklerinin ve niyetlerinin doğrulanmasının, güvenlik denetimlerinin ve kod incelemelerinin önemini bir kez daha vurgulamaktadır. Dolayısıyla, bu tür güvenlik açıklarının önlenmesi ve erken tespiti için toplulukların işbirliği içinde daha dikkatli ve kapsamlı bir yaklaşım benimsemesi gerekmektedir. Bu olaydan çıkarılacak en önemli ders, açık kaynak yazılım güvenliğinin sürekli bir çaba ve dikkat gerektirdiğidir.

 

Kaynaklar:

Referans aldığım kaynaklar ve dahası için,

https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27

https://github.com/amlweems/xzbot

https://www.akamai.com/blog/security-research/critical-linux-backdoor-xz-utils-discovered-what-to-know

https://arstechnica.com/security/2024/04/what-we-know-about-the-xz-utils-backdoor-that-almost-infected-the-world/

https://www.openwall.com/lists/oss-security/2024/03/29/4

https://boehs.org/node/everything-i-know-about-the-xz-backdoor