Bash aşamasındaki obfuscation açıklaması
- xz/liblzma'da bir arka kapı bulundu. OpenSSH sunucusunu etkiliyor.
- Arka kapıyı içeren ikili dosyadan çok, ilk bash kısmı ile kullanılan basit ama zekice obfuscation yöntemine odaklanılıyor.
- Bu yazı, bash aşamasının nasıl obfuscate edildiğini ve çıkarıldığını açıklıyor.
Başlamadan önce
- xz/liblzma'nın iki sürümü (5.6.0 ve 5.6.1) etkilendi. Aralarında küçük farklar var.
- Bash kısmı üç aşamaya (ya da dört aşamaya?) ayrılıyor ve her aşama Stage 0'dan Stage 2'ye kadar adlandırılıyor.
- "Stage 3"ten de söz edilecek, ancak bunun henüz tam olarak uygulanmamış olabileceği belirtiliyor.
- Obfuscate/şifrelenmiş aşamalar ile sonrasındaki ikili arka kapı, iki test dosyasına gizlenmiş durumda.
Stage 0
- m4/build-to-host.m4 dosyasından başlıyor. Bu kod, build sürecinin bir noktasında çalıştırılarak Stage 1 betiğini çıkarıyor.
- Test dosyasından baytları okuyup standart çıktıya aktarıyor ve
tr komutunu kullanarak karakterleri başka karakterlere eşliyor.
Stage 1
- "####Hello####" ile başlayan bir bash dosyası. Yalnızca Linux'ta çalışacak şekilde ayarlanmış.
eval kullanarak config.status içinden srcdir değerini çıkarıyor ve belirli baytları atlayıp yazdıran karmaşık bir head komutu zinciri içeriyor.
tr komutuyla basit bir yerine koyma şifresi uyguluyor, ardından xz komutuyla sıkıştırmayı açıp çalıştırıyor.
Stage 2
- Stage 2, gerçek derleme sürecini değiştiren bash betiği.
- Bir "extension/patch" sistemi varmış gibi görünüyor; bu sayede test dosyalarını sürekli değiştirmeden yeni betikler çalıştırılabiliyor.
.o dosyalarını çıkarıp derleme/bağlama sürecine entegre eden kod içeriyor.
Özet
- Bu süreç son derece gizli ve yalnızca standart komut satırı araçları kullanılarak karmaşık biçimde kurgulanmış.
- Üç aşamalı çalıştırma ve "extension" sistemi sayesinde geleceğe dönük tasarlanmış; böylece ikili test dosyalarını yeniden değiştirmeye gerek kalmıyor.
- Bu tür bir saldırının tesadüfen keşfedilmiş olması, güvenlik topluluğunda birçok soru işareti bırakıyor.
GN⁺ görüşü
- Bu yazı, yazılım güvenliği ve tedarik zinciri saldırılarının önemini vurguluyor. Yazılım build sürecinde ortaya çıkabilecek zafiyetleri fark etmek, kod incelemesi ve güvenlik denetimlerinin önemini yeniden hatırlatıyor.
- Obfuscation teknikleri ve çok aşamalı saldırı yöntemleri, saldırganların sistemlere ne kadar sofistike biçimde sızabildiğini gösteriyor. Bu teknikler güvenlik uzmanları için de eğitsel değer taşıyor.
- Benzer işlevler sunan diğer güvenlik araçları veya projeler arasında OWASP'ın Dependency-Check'i ve Sonatype'in Nexus Platform'u bulunuyor. Bunlar, yazılım bağımlılıklarında güvenlik açıklarını belirlemeye yardımcı oluyor.
- Bu tür tekniklere karşı önlem alırken, yazılım tedarik zincirinin tüm aşamalarında güvenliği güçlendirmek gerekiyor. Bunun artısı sistem güvenliğini artırması; eksisi ise saldırganlar bu yöntemleri kullanırsa tespit etmenin zor olabilmesi.
- Bu olay, açık kaynak topluluğunun hem güçlü hem de zayıf yönlerini ortaya koyuyor. Topluluk temelli inceleme ve katkılar, projelerin büyümesi ve güvenliği için önemli; ancak aynı zamanda kötü niyetli katkıcıların yarattığı risk de var.
Henüz yorum yok.