← Radar

Konu: Güvenlik3 dk okuma

Konteyner hâlâ bir güvenlik sınırı mı? Namespace'ler, çekirdek açıkları ve mikro sanal makineler

Bu neden önemli?

Bugün başkasının kodunu, hatta bir yapay zekâ ajanının yazdığı kodu sunucularda çalıştırıyoruz. Bu kodu neyin içine koyduğun, bir hatanın tek bir kutuda mı kalacağını yoksa bütün makineye mi yayılacağını belirliyor.

Konteyner aslında nedir?

docker run ubuntu dediğinde karşına yeni bir bilgisayar gibi duran bir kabuk çıkar. Kendi dosya sistemi var, kendini root sanıyor, kendi ağı var. Ama ortada ikinci bir işletim sistemi yok. Olan şey, Linux çekirdeğinin bir süreci namespace denen bölmelere koyması.

Bunun temeli clone sistem çağrısı. fork gibi yeni bir süreç açıyor ama neyi paylaşıp neyi ayıracağını tek tek seçmene izin veriyor. Yeni bir dosya sistemi görünümü (mount namespace), yeni süreç numaraları (PID namespace), ayrı bir ağ (network namespace) ve sahte kullanıcı kimlikleri (user namespace) istiyorsun. İçeride id yazınca root görünürsün, dışarıdan bakınca sıradan bir kullanıcısındır.

Kritik nokta şu: Bütün konteynerler aynı çekirdekle konuşuyor. Dosya açmak, bellek istemek, soket kurmak gibi her iş sistem çağrısıyla çekirdeğe gidiyor. Çekirdekte bir hata varsa, konteynerin içindeki kod da ona ulaşabiliyor.

Sorun: Çekirdek açıkları çoğalıyor

Yetki yükseltme (LPE, local privilege escalation) açıkları yeni değil. 2016’daki Dirty COW gibi büyük olanlar eskiden birkaç yılda bir çıkardı. Bu yıl sıklık değişti. Copy Fail, sıradan bir kullanıcının sistemdeki programların bellekteki kopyasını değiştirip root olmasına izin veriyordu. Konteynerin içinden sunucuya kaçmak için de kullanılabiliyordu.

Güvenlik şirketi depthfirst’ten Zhenpeng Lin’in Eylül yazısına göre 2026’nın ilk 8,5 ayında yaklaşık 6.000 çekirdek CVE’si yayımlandı. Sadece Ağustos’ta 1.650 tane. Yazar bir açığı (AF_UNIX soketlerinde bir use-after-free) kendi yapay zekâ modeliyle bulduğunu, aynı hatayı OpenAI’ın da bildirdiğini anlatıyor. Varsayımı şu: Yapay zekâ açık bulmayı ve istismar yazmayı ucuzlattı, o yüzden saldırganın konteynerden çıkabileceğini baştan kabul et.

Burada bir not düşmek lazım. Çekirdek ekibi 2024’ten beri kendi CVE numaralarını veriyor ve kendi belgesine göre bulduğu hemen her hata düzeltmesine “temkinli olmak için” numara atıyor. Yani sayının bir kısmı süreçten geliyor, her CVE istismar edilebilir bir açık değil. Yine de yön belli. Ayrıca yazı, mikro sanal makine çözümlerine dayanan bir güvenlik şirketinden geliyor.

Alternatif: Mikro sanal makineler

Konteyner bir sanal makine değil. Mikro sanal makine (microVM) ise gerçekten öyle. İşlemcinin donanım sanallaştırması kullanılıyor. Linux’ta bunu KVM sağlıyor. Üstünde bir sanal makine yöneticisi (VMM) çalışıyor. Her iş yükü kendi küçük çekirdeğini alıyor. Bir iş yükü kendi çekirdeğini ele geçirse bile sunucuya ulaşmak için hipervizörde ayrıca bir açık bulması gerekiyor.

Bunun bilinen örnekleri AWS Lambda’nın altında çalışan Firecracker ve konteyner arayüzünü koruyup her pod’u ayrı bir sanal makineye koyan Kata Containers. Milisaniyeler içinde açılıyorlar, bu yüzden “sanal makine ağırdır” itirazı eskisi kadar güçlü değil.

KVM’de de açık çıkıyor. Google’ın kvmCTF programı, tam bir sanal makine kaçışı için 250.000 dolara kadar ödül veriyor ve videoya göre bu ödülü alan araştırmacılar oldu. Ama saldırı yüzeyi çok daha küçük. Çekirdeğin yüzlerce sistem çağrısı yerine dar bir sanal donanım arayüzü var. Yüzeyin sıfır olmadığını, hipervizörü değil sunucunun ağ kodunu kullanan bir kaçışla PwnEscape yazısında anlattık.

Konteynerden de hafif bir yalıtım olan V8 isolate’lerini Cloudflare Dynamic Workers yazısında anlattık.

Sen ne yapmalısın?

Kendi yazdığın ve güvendiğin servisleri konteynerde çalıştırmak hâlâ gayet makul. Soru şu: Güvenmediğin kodu çalıştırıyor musun? Kullanıcıların yüklediği kod, yapay zekâ ajanlarının ürettiği komutlar, birden çok müşterinin aynı makinedeki iş yükleri bu gruba girer. Bunlar için tek savunma “çekirdeği güncel tutmak” olmamalı, araya ayrı bir çekirdek koymak gerekir. Hafiften ağıra izolasyon seçeneklerini kod izolasyonu yazımızda anlattık.

Düşün

  • Sunucunda çalışan kodun ne kadarını sen yazdın, ne kadarı dışarıdan geliyor?
  • Bir çekirdek açığı yayımlandığında yamayı kaç günde uygulayabiliyorsun?

Videoyu izle

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

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