Güvensiz Deserializasyon (Insecure Deserialization) Nedir?
Güvensiz deserializasyon, güvenilmeyen serileştirilmiş verinin nesneye çevrilmesiyle saldırganın uygulama davranışını değiştirmesine ve kod çalıştırmasına yol açar. Nasıl çalıştığı, neden RCE'ye gittiği, imza ve tip beyaz listesi savunması, KAOS ile tespit.
Hızlı cevap: Güvensiz deserializasyon (Insecure Deserialization), bir uygulamanın dışarıdan gelen serileştirilmiş veriyi güvenmeden geri nesneye çevirmesi sonucu, saldırganın uygulamanın davranışını değiştirebilmesi ve bazı durumlarda sunucuda kod çalıştırabilmesidir. Serileştirme, bir nesneyi saklanabilir ya da iletilebilir bir veri dizisine çevirmektir; deserializasyon ise tersidir. Sorun, uygulama bu diziyi geri nesneye çevirirken içindeki talimatlara körü körüne güvenmesidir. Saldırgan, çevrildiğinde tehlikeli bir zincir tetikleyen özel bir veri hazırlarsa, sonuç uzaktan kod çalıştırmaya kadar gidebilir. Kök çözüm: güvenilmeyen kaynaktan gelen veriyi asla doğrudan deserialize etmemek, bunun yerine imzalı ve tip kısıtlı güvenli formatlar kullanmaktır.
Güvensiz deserializasyon, en yıkıcı ama en az anlaşılan web açıklarından biridir. Görünmezdir, çünkü çoğu zaman arka planda, oturum verisinde, önbellekte ya da mesaj kuyruğunda sessizce çalışır. OWASP Top 10 listesinde yer alır ve başarılı bir sömürü genelde tam sunucu ele geçirmeyle sonuçlanır. Bu yazı, güvensiz deserializasyonun nasıl çalıştığını ve nasıl doğru savunulacağını anlatır.
Serileştirme ve deserializasyon nedir
Bir program bir nesneyi (örneğin bir kullanıcı oturumunu) diske yazmak ya da ağ üzerinden göndermek istediğinde, onu bir bayt ya da metin dizisine çevirir; buna serileştirme denir. Karşı taraf bu diziyi alıp yeniden nesneye çevirir; buna deserializasyon denir. Bu, uygulamalar arasında veri taşımanın yaygın ve meşru bir yoludur.
Tehlike, deserializasyon sırasında bazı platformların yalnızca veriyi değil, veriye gömülü davranışı da geri kurmasıdır. Saldırgan, çevrildiğinde belirli metotların otomatik tetiklendiği bir nesne zinciri hazırlarsa, uygulama bu zinciri masumca çalıştırır.
Neden bu kadar tehlikeli
| Yön | Klasik enjeksiyon | Güvensiz deserializasyon |
|---|---|---|
| Hedef | Sorgu ya da komut | Uygulamanın nesne grafiği |
| Görünürlük | Genelde girdi alanında | Oturum, çerez, önbellek, kuyruk |
| Tipik etki | Veri sızması | Uzaktan kod çalıştırma |
| Tespit | İmza taranabilir | İş bağlamı ve zincir bilgisi gerekir |
Kritik nokta: saldırgan çoğu zaman veriyi okuyamaz bile, ama çevrilme anında tetiklenen zincir sayesinde komut çalıştırabilir. Bu, açığı komut enjeksiyonu kadar yıkıcı yapar.
Nerede karşımıza çıkar
- Oturum ve çerez verisi. Sunucu tarafında serileştirilmiş oturum, istemciye verilip geri alınıyorsa, saldırgan onu değiştirebilir.
- Önbellek ve mesaj kuyrukları. Bileşenler arası taşınan serileştirilmiş nesneler.
- API ve dosya içe aktarma. Karmaşık nesneleri kabul eden uçlar.
- Gizli alanlar ve tokenlar. İçinde serileştirilmiş durum taşıyan değerler.
Doğru savunma
1. Güvenilmeyen veriyi deserialize etmeyin
En güçlü savunma budur. Dışarıdan gelen veri, doğrudan nesneye çevrilmemelidir. Zorunluysa, yalnızca beklenen alanları taşıyan basit ve tip kısıtlı bir format kullanılmalıdır.
2. Bütünlük doğrulaması ekleyin
İstemciye verilen serileştirilmiş veri, sunucunun gizli anahtarıyla imzalanmalı ve geri alındığında imza doğrulanmalıdır. Böylece değiştirilmiş veri reddedilir. Bu, JWT güvenliğindeki imza mantığıyla aynı ilkedir.
3. Tip beyaz listesi
Deserializasyon kaçınılmazsa, yalnızca izin verilen sınırlı sayıda nesne tipine izin verilmelidir. Bilinmeyen tiplerin geri kurulması engellenmelidir.
4. En az yetki ve izleme
Uygulama hesabı sınırlı yetkiyle çalışmalı, beklenmedik deserializasyon davranışları izlenmelidir. Bu, güvenlik yanlış yapılandırması yönetiminin bir parçasıdır.
KAOS ile deserializasyon açığı tespiti
Güvensiz deserializasyon açıklarını, DSET'in yapay zekâ destekli otonom güvenlik tarama motoru KAOS ile tespit ediyoruz. KAOS çok-ajanlı mimarisiyle serileştirilmiş veri taşıyan uçları, çerezleri ve tokenları keşfeder, bütünlük doğrulamasının var olup olmadığını dener ve değiştirilmiş bir yükün uygulama tarafından kabul edilip işlendiğini gösterebildiğinde bunu kontrollü biçimde doğrular. Yalnızca kanıtlanmış bulguyu raporlar; bu sınıf iş bağlamı gerektirdiği için makine keşfeder ve doğrular, uzman zinciri yorumlar. KAOS insan uzmanın yanında çalışır ve her bulguyu çalışan bir kanıtla belgeler.
Sık sorulan sorular
Güvensiz deserializasyon her platformda olur mu? Nesne serileştirmeyi destekleyen ve güvenilmeyen veriyi deserialize eden her ortamda risk vardır. Riskin biçimi platforma göre değişir ama ilke aynıdır.
Veriyi şifrelersem sorun çözülür mü? Şifreleme gizliliği sağlar ama tek başına yetmez. Asıl gereken bütünlük doğrulaması ve güvenilmeyen veriyi hiç deserialize etmemektir.
Bu açık nasıl fark edilir? Serileştirilmiş görünümlü değerler (çerez, token, gizli alan) tespit edilir ve değiştirilmiş bir yükün işlenip işlenmediği kontrollü biçimde sınanır.
Etkisi neden bu kadar yüksek? Başarılı bir sömürü genelde uzaktan kod çalıştırmaya ve tam sunucu ele geçirmeye yol açar; bu yüzden en kritik bulgulardandır.
Kaynaklar
- OWASP, Deserialization Cheat Sheet: https://cheatsheetseries.owasp.org
- OWASP, Insecure Deserialization: https://owasp.org
- MITRE, CWE 502: https://cwe.mitre.org/data/definitions/502.html
- PortSwigger Web Security Academy, Insecure deserialization: https://portswigger.net/web-security/deserialization
Uygulamanızdaki güvensiz deserializasyon açıklarını KAOS ve uzman ekibimizle çalışan kanıtla tespit ettirmek için DSET ile iletişime geçin. Ankara Hacettepe Teknokent laboratuvarımızdan sızma testi ve güvenli kod denetimi hizmeti veriyoruz.
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.