← Radar

Konu: Güvenlik3 dk okuma

PwnEscape: Sanal makineden tek bir ağ paketiyle sunucuya kaçış, hata KVM'de değil Linux'un ağ kodunda

Bu neden önemli?

Bulutun temel vaadi, kiraladığın sanal makinenin altındaki sunucuya ve komşu müşterilere dokunamaması. Bu hata o sınırın sadece hipervizöre değil, sunucu çekirdeğinin misafirle konuştuğu her koda bağlı olduğunu gösteriyor. Ayrıca yamanın misafire değil sunucuya gitmesi gerektiğini hatırlatıyor.

Ne oldu?

Vercel 18 Ağustos 2026’da Sandbox ürünü için toplam 1 milyon dolarlık bir hackleme yarışması açtı. Vercel Sandbox’ta her iş yükü kendi çekirdeğiyle ayrı bir Firecracker mikro sanal makinesinde çalışıyor. pwn.ai’dan Paulos Yibelo yarışmanın üçüncü gününde bu sınırı aşan bir hata buldu. Vercel’in sonuç yazısında bu, 1.285 rapor içindeki tek kritik bulgu.

Hatanın adı PwnEscape, numarası CVE-2026-99999, puanı CVSS 9.3. pwn.ai’a göre araştırmayı insanlar yönetti, kaynak kod analizinde ana model olarak GPT-5.6 Sol kullanıldı ve API maliyeti 700 doların altında kaldı.

Hata nerede?

Sürpriz şu: Hata KVM’de ya da Firecracker’da değil, sunucunun Linux ağ kodunda. Sanal makine bir paket gönderdiğinde paket sanal ağ kartından (virtio-net) geçip sunucudaki bir TAP arayüzüne, oradan da sunucu çekirdeğinin IPv4 koduna giriyor. Yani misafirin ürettiği veri, sunucu çekirdeğinin içinde işleniyor.

İşin içinde checksum offload var. Paketlerin bir sağlama toplamı (checksum) olur ve bunu hesaplamak zaman alır. Linux’ta bir paket CHECKSUM_PARTIAL işaretiyle “toplamı sonra hesapla” diyebilir. Yanında toplamın hangi baytlar üzerinden hesaplanacağını ve sonucun nereye yazılacağını söyleyen iki değer gelir. Sanal makinede bu değerleri misafir belirliyor.

Sorun sıralamada. Sunucu paketin IPv4 başlığını kontrol ediyor ve geçerli buluyor. Paket bölünmesi (fragmentation) gerektiğinde, ip_do_fragment() ertelenmiş toplamı tam o anda hesaplayıp misafirin söylediği yere yazıyor. O yer IPv4 başlığının içiyse, kontrolden geçmiş başlık değişiyor. pwn.ai’ın örneğinde başlığın ilk baytı 0x45’ten 0x4f’ye dönüyor: Başlık 20 değil 60 bayt sanılıyor. Bölücü 60 bayt kopyalıyor ve aradaki 32 bayt sunucu belleği, IP seçenekleri gibi görünerek misafire geri dönüyor.

Vercel’e göre bellek sızıntısı gerçek Vercel sandbox’larında gösterildi. Sunucuyu çökertmek ve sunucuda kod çalıştırmak ise araştırmacının Vercel’e benzer kurduğu kendi KVM ve Firecracker makinelerinde. pwn.ai, sızıntıyı kontrollü yazmalara çevirip lab ortamında sunucuda root komut çalıştırdığını yazıyor. Bu zincirin ayrıntılarını ikinci bölüme bırakmışlar.

Neden herkes yeniden başlattı?

Düzeltme 14 Ekim’de ana Linux’a girdi, CVE 15 Ekim’de yayımlandı. CVE kaydına göre hata Linux 2.6.27’den, yani 2008’den beri var. Düzeltilmiş kararlı sürümler 5.10.272, 5.15.223, 6.1.190, 6.6.159, 6.12.113, 6.18.57 ve 7.2.11. Düzeltme, toplamı tamamlamadan önce yazılacak yerin başlığın gerisinde olduğunu kontrol ediyor. Commit bunu ek bir savunma katmanı olarak tanımlıyor; girişte daha kapsamlı doğrulama hâlâ hazırlanıyor.

Yama misafir makineye değil, sunucunun çekirdeğine gidiyor. Yeni çekirdeğin çalışması için de sunucunun genelde yeniden başlaması gerekiyor. Üstündeki bütün sanal makineler o sırada duruyor. Fly.io 16 Ekim’de “PwnEscape’e karşı önlem” diyerek bütün bölgelerde sunucularını parça parça yeniden başlattı; her sunucu 15–20 dakika kapalı kaldı. Videoya göre başka barındırma şirketleri de acil bakım duyurdu, yeniden başlatamayanlar için canlı yamalar (live patch) da çıktı.

AWS’ye göre EC2, Lambda ve Fargate etkilenmiyor. Ama virtio-net ve KVM ile kendi sanal makinelerini işletenler, Firecracker kullananlar dahil, etkileniyor. AWS geçici bir çözüm olmadığını, sunucu çekirdeğini güncelleyip yeniden başlatmak gerektiğini söylüyor.

Asıl ders

Konteyner yazısında mikro sanal makinelerin saldırı yüzeyini daralttığını anlatmıştık. Bu hâlâ doğru, ama yüzey sıfır değil. Misafirin gönderdiği her paket, her disk isteği sunucuda bir kod yolundan geçiyor. Sınır, o yolların en zayıfı kadar güçlü. pwn.ai yazısı da bir yapay zekâ ajanının test ortamından kaçtığı OpenAI ve Hugging Face olayını hatırlatarak başlıyor: Güvenilmeyen kodu, artık ajanların yazdığı kodu da, çalıştıran herkesin derdi bu.

VPS kiralıyorsan sağlayıcın büyük ihtimalle işi halletti. Kendi KVM sunucularında güvenmediğin sanal makineler çalıştırıyorsan çekirdeğinin düzeltmeyi içerdiğini kontrol et ve yeniden başlat.

Düşün

  • Sanal makinenin “duvarı” sadece hipervizör mü? Misafirin sunucuyla konuştuğu başka hangi yollar var?
  • Sunucularını yeniden başlatmak zorunda kalsan, üstündeki iş yüklerini kesintisiz nasıl taşırdın?

Videoyu izle

Tıklayınca video YouTube'dan yüklenir; o ana kadar bu sayfa YouTube'a hiçbir istek göndermez.
Kaynaklar (9, İngilizce)

Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.