Araştırmacılar, Windows işletim sistemi içinde sistemik bir güvenlik açığı ortaya çıkardılar ve güvenlik denetimlerini atlamak ve uzaktan kod yürütmek için “en uygun” charset dönüşüm özelliğini kullandılar.
Bulgular, Microsoft Excel, PHP-CGI ve diğerleri gibi yaygın olarak kullanılan araçları etkileyen gerçek dünyadaki sömürü senaryoları ile çeşitli uygulamalardaki yaygın etkileri vurgulamaktadır.
Charset Dönüşümü ve “En Uygun” Davranışı
Windows Systems, Modern Uyumluluk için UNICODE (UTF-16) ve eski uygulamalar için eski ANSI için çift kodlama sistemleri (UTF-16) üzerinde çalışır.
Bunları köprülemek için Windows, belirli bir kod sayfası tarafından desteklenmeyen karakterlere görsel veya işlevsel olarak benzer meslektaşlarına yaklaşan “en uygun” eşleme adlı dahili bir özellik kullanır.
Örneğin, sonsuzluk sembolü (∞) “8” basamağına eşlenebilir. ).
Investigate Real-World Malicious Links & Phishing Attacks With Threat Intelligence Lookup - Try for Free
Sömürülen güvenlik açıkları
Çalışma, aşağıdakiler dahil olmak üzere birden fazla CVE ortaya çıktı:
- CVE-2024-4577 (PHP-CGI RCE):
Bir saldırgan, güvenlik kontrollerini atlamak için özel hazırlanmış bir sorgu dizesi olan?%ADS ekleyerek PHP-CGI sunucularını Çince veya Japon kod sayfalarıyla tehlikeye atabilir. Burada, Unicode karakteri “yumuşak tire” (U+00AD), bir çizgi (“-”) ile eşlenir ve kötü niyetli argüman enjeksiyonu sağlar-bu da RCE’ye yol açar. - CVE-2024-49026 (Microsoft Excel RCE):
Araştırmacılar, argüman ayrıştırma kontrollerini atlamak için Excel’in “açık” özelliğini kullandılar. Bir Excel dosyasını FullWidth Unicode karakterlerini kullanarak yeniden adlandırarak ve kötü niyetli argümanlar enjekte ederek, saldırganlar NTLM rölesi tabanlı RCE’ye ulaştı.
Sömürü nasıl çalışır
Dosya adı kaçakçılık
Bu saldırı, belirli kod sayfalarında yol sınırlayıcılarına (/ veya \) dönüştürülen karakterlere dayanır. Örneğin, Japon ve Korece kod sayfalarındaki yen (¥) ve Won (₩) sembolleri, dizin geçişini etkinleştirerek arkadan (\) dönüştürülür.
C: /windows/win.ini’de istenmeyen dosya erişimi:
#include
int main() {
LPCWSTR filePath = L"AAAA¥..¥..¥..¥..¥..¥conf¥cuckoo.conf";
HANDLE hFile = CreateFileW(filePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
CloseHandle(hFile);
return 0;
}
Bu istismarda, kötü amaçlı dosya adları, yapılandırma ayarları gibi hassas dosyaları ortaya çıkararak dizin kısıtlamalarını atlayın.
Argüman bölünmesi
Özel karakterlerin tam genişlik sürümlerini kullanan (örneğin, "çift tırnak için), saldırganlar Windows komut satırı işlemlerine ek argümanlar enjekte ederler.
Bir Python örneğinde:
subprocess.run(['wget', '-q', f"https://test.tld/{path}.txt"])
Burada, "–use-desspass = calc" gibi kötü niyetli giriş sağlamak, amaçlanan komutu beklenmedik argümanlara bölerek calc.exe’yi başlatır.
Çevre Değişkeni Karışıklık
Bu saldırı, ortam değişkenleri için en uygun davranışlardan yararlanır. Örneğin, CGI komut dosyaları aracılığıyla geçirilen sorgu dizeleri ve HTTP başlıkları, karakter kısıtlamalarını atlamak için manipüle edilir, bu da yerel dosya dahil etme (LFI) veya diğer saldırılara neden olur.
Vaka çalışmaları
- Guguklu Sandbox istismarı:
Python’un ANSI API’lerine olan güvenini kullanan araştırmacılar, sınırlı dizinlere geçen dosya adlarını kaçakçılık yaparak sanal alan ana bilgisayarlarına sızdı. - Elfinder RCE:
Tam genişlikli karakterlerle hazırlanmış kötü niyetli bir katran arşiv adı, keyfi komutlar enjekte etti, calc.exe’yi GNU Tar’ın kullanımı-kullanma-taksit-programı bayrağı aracılığıyla başlatın.
Şiddetli olmasına rağmen, güvenlik açıkları sorumluluk konusunda tartışmaya yol açtı ve fizibiliteyi düzeltir. Putty gibi bazı satıcılar derhal yazılımlarını yamalarken, curl gibi diğerleri, girdileri sterilize etmek için geliştiricilere ertelendi.
Devco Report tarafından yapılan bir rapora göre, Microsoft, CVE-2024-49026 gibi belirli vakaların şiddetini kabul etti, ancak eski Windows işlevselliğine bağlı daha geniş sistemik sorunlar için düzeltmeler yapmadı.
- Geniş karakter API’lerini tercih edin: Unicode API’leri (örneğin, CreateProcessw) kullanmak istenmeyen ANSI dönüşümlerini önler.
- Girişleri sterilize edin: Kullanıcı tarafından sağlanan tüm veriler için sağlam kaçma veya doğrulama sağlayın.
- Güvenli varsayılan ayarları etkinleştirin: Uygulamalar, eski kod sayfalarına güvenmekten kaçınarak UTF-8’i varsayılan olarak etkinleştirmelidir.
- Monitör Güncellemeleri: Geliştiriciler, etkilenen satıcılardan ve kütüphanelerin yamaları konusunda uyanık kalmalıdır.
CVE-2024-4577 ve CVE-2024-49026 gibi derin yerleşik güvenlik açıklarının bu vahiy, modern yazılım ekosistemlerinde miras uyumluluk özelliklerinin risklerinin altını çizmektedir.
Saldırganlar, Windows’un “en uygun” charset davranışı gibi düşük seviyeli tuhaflıklardan yararlandıkça, hem geliştiriciler hem de güvenlik uzmanları sistemik değişikliklere öncelik vermeli ve kodlama standartlarını güvenli hale getirmelidir.
Jenkins & Jira -> Ücretsiz Web Semineri kullanarak uygulama güvenliğini CI/CD iş akışlarınıza entegre etmek