UNTRUSTEDCODE/etccredsnetSANDBOXno access outside

Korumalı alana alma

10 dk okumaGüvenlik

Korumalı alan oluşturma, tarayıcınızın herhangi bir siteden JavaScript çalıştırmasına, telefonunuzun herhangi bir geliştiricinin uygulamalarını çalıştırmasına ve dizüstü bilgisayarınızın e-posta eklerini açmasına olanak tanıyan bir güvenlik modelidir; üstelik bu programlar banka hesap dosyanızı okuyamadan. Güvenilmeyen kodu bir güvenlik açığından bir özelliğe dönüştüren teknoloji katmanıdır.

Makalenin tam metni aşağıda İngilizce olarak verilmektedir.

Korumalı Alan Oluşturma, kodun, sınırları dışındaki kaynaklara erişmesini önleyen, kısıtlı bir ortamda çalıştırma uygulamasıdır. Korumalı alan hangi dosyaları okuyabileceğini, hangi ağ bağlantılarını yapabileceğini, hangi diğer işlemlerle iletişim kurabileceğini ve hangi sistem çağrılarını çağırabileceğini sınırlar. Kodun kötü amaçlı veya hatalı olduğu ortaya çıkarsa hasar kontrol altına alınır.

Korumalı alan oluşturma neden önemlidir

Modern bilgi işlem, tamamen güvenmediğimiz kodun çalıştırılmasına bağlıdır:

  • Tarayıcınızın ziyaret ettiği herhangi bir web sitesinden JavaScript
  • Uygulama mağazalarındaki mobil uygulamalar (incelenmiş ancak resmi olarak değil)
  • Tarayıcı uzantıları, IDE eklentileri, kodunuzdaki bağımlılıklar
  • Belgelerdeki makrolar, e-postaya eklenen komut dosyaları
  • Bulut altyapısındaki kapsayıcı iş yükleri

Korumalı alan oluşturma olmasaydı, bunların her biri gerçekleşmeyi bekleyen bir kimlik bilgisi hırsızlığı saldırısı olurdu. Korumalı alan oluşturma, modelin çalışmasını sağlar.

Korumalı alanlar nasıl oluşturulur

Katmanlı uygulama teknikleri:

  • İşlem yalıtımı. Modern bir tarayıcıdaki her sekme, ayrı bir işletim sistemi işlemidir. Tarayıcı çekirdeği, işlemin ne yapmasına izin verildiğine karar verir. Linux'ta
  • seccomp-bpf — üzerinde sistemin bir işlemi çağırabileceği çekirdek tarafından uygulanan filtre. Korumalı alan ihtiyaç duyduğu sistem çağrılarını bildirir (okuma, yazma, mmap vb.) ve çekirdek diğer her şeyi reddeder.
  • Ad alanları ve yeteneklerLinux'ta — dosya sisteminin, süreçlerin, ağın vb. yalıtılmış görünümleri. Kapsayıcılar bu temel öğelerden oluşturulmuştur.
  • MacOS/iOS'te Uygulama Korumalı Alanı — bir uygulamanın hangi yeteneklere ihtiyaç duyduğunu (kamera erişimi, ağ, belirli yollar) açıklayan bildirim temelli yetkiler. Yetkileri olmayan uygulamalar bu özelliklere erişemez.
  • AppContainer / Windows Sandbox — Microsoft'un eşdeğer izolasyon modeli.
  • Chrome ve Firefox'ta Site Yalıtımı — kaynak başına ayrı işlemler, çekirdek düzeyinde bir istismar olsa bile bir sitenin JavaScript'inin başka bir sitenin belleğini okumasını engeller. Bulundu.

Ayrıntılı olarak tarayıcı sanal alanları

Tarayıcı, bilgi işlem alanında en genel, en çok saldırıya uğrayan sanal alandır. Tarayıcı çekirdeği güvenilir bir işlem olarak çalışır. Her bir oluşturucu işlemi (sekme başına bir veya daha fazla) minimum düzeyde yetenekle güvenilmeyen bir işlem olarak çalışır. Oluşturucu şunları yapabilir:

  • Bellek tahsis edebilir
  • Çok özel işlemler için IPC aracılığıyla tarayıcı çekirdeğiyle iletişim kurabilir
  • Grafik arabelleğine işleyebilir
  • JavaScript ve WebAssembly'yi çalıştırabilir

It yapamaz:

  • Dosyaları kendi korumalı alan dizininin dışında aç
  • Rastgele ağ hedefleriyle konuşun (tarayıcı çekirdeği bu bağlantıları yapar)
  • Diğer süreçleri oluşturur
  • Diğer süreçlerin belleğini okuyun

Tarayıcı satıcıları hata ödülleri olarak on milyonlarca dolar öder özellikle korumalı alandan kaçış güvenlik açıkları için. Chrome'daki en kazançlı tek ödül (200.000 ABD dolarının üzerinde), korumalı alandan kaçan tam zincir için geçerli.

Mobil uygulama korumalı alanı

iOS ve Android, korumalı alanı mantıksal uç noktasına taşıyor: her uygulama kendi UID'sinde çalışır, kendi dosya sistemi görünümünü görür ve diğer uygulamalarla yalnızca dar, işletim sistemi aracılı IPC kanalları (Intents on Android, URL şemaları ve iOS'ta Uygulama Uzantıları). İşletim sistemi, çalışma zamanında kullanıcıdan yetenek tarzı izinler (kamera, mikrofon, kişiler) ister. Sonuç: Telefondaki kötü amaçlı yazılım, masaüstündekinden çok daha sıkı bir şekilde kontrol altına alınır.

WebAssembly ve yeni sandbox

WebAssembly, birinci sınıf bir özellik olarak sandboxing ile baştan tasarlandı. Bir WASM modülünün kendine ait sistem çağrıları yoktur; her şeyin ana bilgisayar ortamı tarafından sağlanması gerekir (sistem çağrısı tarzı API'ler için WASI, tarayıcılardaki web API'leri). Bu, WASM'yi güvenilir uygulamalar içinde güvenilmeyen eklentileri çalıştırmak için güçlü bir aday haline getiriyor; bu, daha önce yoğun süreç izolasyonu gerektiren bir kullanım durumuydu. Wasmtime ve wasmer gibi araçlar bu modeli kullanır.

Sandbox'lar başarısız olduğunda

Sandbox kaçış güvenlik açıkları gerçektir ve değerlidir. Tekrarlanan arıza modları:

  • Çekirdek yüzeyindeki hatalar. Seccomp ile kısıtlanmış işlemler bile bazen izin verilen sistem çağrıları yoluyla ulaşılabilen çekirdek hatalarından yararlanabilir.
  • IPC hataları. Korumalı alanın aracı işlemiyle konuşmak için kullandığı arayüzlerin kendileri saldırı yüzeyidir.
  • Yan kanallar. Spectre ve Meltdown, CPU optimizasyonlarının süreç sınırlarının ötesine veri sızdırabileceğini gösterdi. Modern sanal alanlar bu durumu hafifletir, ancak altta yatan sorun donanım düzeyinde bir sorun olmaya devam etmektedir.
  • Sandbox profil hataları. Operatörler bazen yazılımın çalışmasını sağlamak için sandbox profillerini gevşetir ve kazara delikler açar.

Sandboxing olasılıklı bir savunmadır; istismar için çıtayı yükseltir, ortadan kaldırmaz. Derinlemesine savunma, korumalı alan oluşturmayı diğer önlemlerle (bellek açısından güvenli diller, temizleyiciler, saldırı yüzeyi azaltma) birleştirir.

Korumalı alanın sizin için anlamı nedir

Son kullanıcılar için korumalı alan oluşturma çoğunlukla görünmezdir. Pratik sonuç: Sandbox kaçışları en yüksek öncelikli güvenlik düzeltmeleri olduğundan tarayıcıları ve işletim sistemlerini güncel tutun. Sonuçlarını anlamadığınız sürece korumalı alan özelliklerini devre dışı bırakmaktan kaçının (bazı Linux kullanıcıları seccomp profillerini kapatır, bazı uzman kullanıcılar Chrome'un korumalı alan bayraklarını devre dışı bırakır). Tarayıcılar varsayılan olarak güçlendirilmiş olarak gönderilir; varsayılan neredeyse tüm kullanıcılar için doğrudur.

Sık sorulan sorular

Korumalı alan oluşturma sanallaştırma ile aynı mıdır?
Üst üste biniyorlar ama aynı değiller. Sanallaştırma, tüm işletim sistemini bir öykünücünün içinde çalıştırır; yalıtım donanım sanallaştırma düzeyindedir. Korumalı alan oluşturma genellikle aynı işletim sistemi içindeki işlemleri çekirdek tarafından uygulanan kısıtlamalarla çalıştırır. Sanallaştırma daha ağırdır ancak daha güçlü izolasyon sağlar; modern tasarımlar genellikle her ikisini de birleştirir (sunucusuz için Firecracker VM'leri, konteynerler için gVisor).
Korumalı alan oluşturma işleri yavaşlatır mı?
Mütevazı ek yük - sistem çağrısı filtreleme için genellikle tek haneli yüzde, süreç izolasyonu için biraz daha fazla. Performans maliyeti, donanım desteği (Intel CET, ARM PAC) aracılığıyla etkin bir şekilde azaltılmıştır, böylece modern sanal alanlar çoğu iş yükü için esasen ücretsizdir.
Bir VPN sanal alanından kaçabilir mi?
VPN istemci yazılımı genellikle korumalı alan uygulamalarına göre daha fazla ayrıcalığa ihtiyaç duyar; yönlendirmeyi ve ağ arayüzlerini yapılandırırlar. MacOS ve iOS'ta bunu güvenli bir şekilde yapmak için belirli API'leri (NetworkExtension çerçevesi) kullanırlar. VPN istemcisinin kendisi ayrıcalıklıdır; içinden akan veriler diğer uygulamalar için opaktır.
Docker kapsayıcısında kod çalıştırmak korumalı alan oluşturmayla aynı mıdır?
Docker kapsayıcıları, izolasyon için bir korumalı alan oluşturma biçimi olan Linux ad alanlarını ve seccomp'u kullanır. Yalıtım, sanallaştırma tabanlı sanal alanlardan daha zayıftır (kapsayıcılar ana makine çekirdeğini paylaşır) ve çoğu sistem çağrısını yasaklayan (kapsayıcılar çoğuna izin verir) kullanıcı alanı sanal alanlarından daha zayıftır. Güvenilmeyen iş yükleri için gVisor veya Kata Containers gibi projeler, Docker UX'in çevresini daha güçlü bir izolasyonla sarar.
Chrome neden bu kadar çok bellek kullanıyor?
Saha İzolasyonu. Her kaynak kendi sürecinde çalışır; farklı sitelerden oluşan 50 sekme, her birinin kendi bellek yükü olan 50 işlem anlamına gelir. Maliyet RAM'dir; Bunun faydası, bir sekmenin istismarının başka bir sekmenin verilerini (şifreler, oturumlar) okuyamaması. Modern Chrome, etkiyi azaltmak için bellek paylaşımı optimizasyonlarına daha fazla çaba harcıyor, ancak mimari doğası gereği güvenlik için belleği değiştiriyor.
Korumalı Alanın Açıklaması: Tarayıcılar ve İşletim Sistemleri Nasıl Güvenilmeyen Kod İçerir?