Flatt Security, saldırganların Windows uygulamalarına kötü amaçlı komutlar yerleştirmesine olanak tanıyan “BatBadBut” adlı kritik bir güvenlik açığını keşfetti. Flatt Security’nin güvenlik mühendisi RyotaK tarafından keşfedilen kusur, birden fazla programlama dilini etkiliyor. Durum CERT Koordinasyon Merkezi’ne bildirildi ve GitHub’da 10,0 ciddiyet puanıyla CVE-2024-24576 olarak kaydedildi.
Sorun Ne?
Windows Rust geliştiricilerine, ‘BatBadBut’ adı verilen ve makinelere kötü niyetli komut enjeksiyonlarına yol açabilecek kritik bir güvenlik açığı nedeniyle sürümlerini güncellemeleri çağrısı yapılıyor. Güvenlik açığı, Komut API’sini kullanarak Windows’ta toplu iş dosyalarını çağırırken bağımsız değişkenlerden hatalı şekilde kaçan Rust standart kitaplığını etkiliyor.
BatBadBut güvenlik açığı, saldırganların ‘CreateProcess’ işlevine dayanan Windows uygulamalarına komutlar eklemesine olanak tanıyor. Bunun nedeni, toplu iş dosyalarını çalıştıran cmd.exe’nin karmaşık ayrıştırma kurallarına sahip olması ve programlama dili çalışma zamanlarının komut bağımsız değişkenlerinden düzgün şekilde çıkamamasıdır.
Neden Oluşur?
‘BatBadBut’ sorunu, programlama dilleri ile Windows işletim sistemi arasındaki etkileşimden kaynaklanmaktadır. Bir program “CreateProcess” işlevini çağırdığında Windows, yürütmeyi gerçekleştirmek için “cmd.exe” adlı ayrı bir işlemi başlatır. Bu ayrı işlem, .bat dosyasındaki komutları ayrıştırır.
Bilginiz olsun diye söylüyorum, Windows varsayılan olarak PATHEXT ortam değişkeninde .bat ve.cmd dosyalarını içerir; bu da çalışma zamanlarının geliştiricilerin niyetine aykırı olarak toplu iş dosyaları yürütmesine neden olabilir. Saldırgan, toplu iş dosyalarının komut bağımsız değişkenleri bölümünü kontrol ederek Windows uygulamalarına komutlar enjekte edebilir. Bunu yapmak için uygulamanın Windows’ta bir komut yürütmesi, komut dosyası uzantısını belirtmesi, komut bağımsız değişkenlerini kontrol etmesi ve bunlardan kaçamaması gerekir.
Ryotak, “Bazı çalışma zamanları, geliştiricinin yürütmeyi amaçladığı komutla aynı adı taşıyan bir toplu iş dosyası varsa, geliştiricilerin niyetine aykırı olarak toplu iş dosyalarını çalıştırır” diye açıkladı.
Etkilenen Uygulamalar
Haskell süreç kitaplığı, Rust, Node.js, PHP ve yt-dlp bu hatadan etkileniyor. Rust Güvenlik Yanıtı Çalışma Grubu, 9 Nisan 2024’te, Windows’ta toplu iş dosyalarını çağırmak için kullanılan Rust standart kitaplığının bağımsız değişkenlerden gerektiği gibi kaçamadığı ve saldırganların kaçışı atlayarak rastgele kabuk komutları yürütmesine olanak tanıdığı konusunda bilgilendirildi. Haskell, Rust ve yt-dlp yamalar yayınladı.
Ryotak, bunun bir “internet kırma güvenlik açığı” olmadığını ve çoğu uygulamanın bundan etkilenmediğini, halihazırda mevcut çeşitli hafifletme önlemlerinin bulunduğunu bildiriyor. Bazı programlama dilleri bu sorunu bir kaçış mekanizması ekleyerek çözmüştür. Ayrıca BatBadBut yalnızca 1.77.2’den önceki Rust sürümlerini etkiler, başka hiçbir platformu veya kullanımı etkilemez.
Azaltma Stratejileri:
Araştırmacılar, geliştiricilere, özellikle kullanıcı tarafından sağlanan verilerle çalışırken, dış süreçlerle etkileşime giren işlevleri kullanırken dikkatli olmalarını tavsiye ediyor. Kullanıcı girdisini komutlara dahil etmeden önce doğrulamanızı ve temizlemenizi, güvenli alternatifler kullanmanızı ve çerçeve ve kitaplık geliştiricileri tarafından sağlanan en son güvenlik yamaları ve düzeltmelerle güncel kalmanızı önerirler.
İLGİLİ KONULAR
- Rust Tabanlı macOS Arka Kapısı Fidye Yazılımı Çeteleriyle Bağlantılı
- Windows Defender SmartScreen Kusuru Kötü Amaçlı Yazılımla Kullanılıyor
- Rust Tabanlı Enjektör, Çok Aşamalı Saldırıda Remcos RAT’ı Kullanıyor