Use-after-free nedir?
Use-after-free, bir programın serbest bıraktığı belleği daha sonra yeniden kullanmaya devam etmesinden doğan bellek güvenliği açığıdır. Bu bellek bölgesine artık başka veri yerleşmiş olabileceğinden program beklenmedik davranır; saldırgan bunu kod akışını değiştirmek için kullanabilir.
Açık, C ve C++ gibi belleğin elle yönetildiği dillerde görülür. Bir nesnenin yaşam süresi yanlış takip edildiğinde, serbest kalmış işaretçi (dangling pointer) geride kalır.
Nasıl çalışır?
Program bir nesne için bellek ayırır, işi bitince serbest bırakır, ancak nesneye işaret eden bir referans bir yerde hâlâ durur. Saldırgan, aynı bölgeye kendi kontrol ettiği veriyi yerleştirebilirse program eski nesneyi kullanırken aslında saldırgan verisini işler.
Sonuç; bilgi sızıntısı, çökme ya da kod çalıştırma olabilir. Tarayıcılar, ayrıştırıcılar ve ağ servisleri gibi karmaşık yazılımlarda sık karşılaşılan bir hata sınıfıdır.
Sunucu ve hosting ortamında
Çekirdekte, ağ yığınında, kütüphanelerde ve uzun ömürlü servislerde bu tür hatalar bulunabilir. Sunucu yöneticisi olarak hatanın kendisini düzeltemezsiniz; yapabileceğiniz şey ilgili yamayı hızla uygulamak ve etkilenen bileşeni yeniden başlatmaktır.
- Çekirdek açıkları genellikle sunucunun yeniden başlatılmasını gerektirir.
- Kütüphane güncellemelerinden sonra o kütüphaneyi kullanan servislerin yeniden başlatılması gerekir.
Nasıl korunulur?
- Güvenlik güncellemelerini düzenli ve zamanında uygulayın.