Korumalı Alan2 Açıklaması

Sandbox2 tasarımı iyi bilinen teknolojiler, bir politika çerçevesi ve iki süreç üzerine kuruludur: Korumalı Alan Yürütücü ve Korumalı Alan.

Kullanılan Teknolojiler

Aşağıdaki bölümlerde Sandbox2'nin temel katmanını oluşturan teknolojiler açıklanmaktadır.

Linux Ad Alanları

Linux ad alanları, işletim sistemi düzeyinde sanallaştırma sağlama girişimidir. Birden fazla kullanıcı alanı görünüşte birbirinden bağımsız olarak çalışır ancak tek bir çekirdek örneğini paylaşır. Sandbox2 aşağıdaki ad alanı türlerini kullanır:

  • IPC
  • Ağ (PolicyBuilder::AllowUnrestrictedNetworking() aramasıyla açıkça devre dışı bırakılmadığı sürece)
  • Ekle (dosya sistemi ağacının özel bir görünümünü kullanarak)
  • PID
  • Kullanıcı (PolicyBuilder::AllowUnsafeKeepCapabilities() çağrısı yapılarak açıkça devre dışı bırakılmadığı sürece)
  • UTS

Linux ad alanları hakkında daha fazla bilgiyi Wikipedia'da veya ilgili kılavuzda bulabilirsiniz.

IPC

Sandbox2, Korumalı Alan Yürütücüsü ve güvenilmeyen Korumalı Alan arasında rastgele veri alışverişine olanak tanır. Tür-Değer-Değeri (TLV) iletilerini, jetonlar ve tanıtıcılar üzerinden dosya tanımlayıcıları iletmeyi ve kimlik bilgisi değişimini destekler.

Seccomp-BPF

Sandbox2, syscall'ları filtrelemek için Berkeley Packet Filter (BPF) kurallarının kullanılmasına olanak tanıyan Güvenli Bilişim Modu'nun (seccomp) bir uzantısı olan seccomp-bpf'yi kullanır.

seccomp, bir işlemin sistem çağrılarını yalnızca exit, sigreturn, read ve write uygulamalarına izin verecek şekilde kısıtlayan bir Linux çekirdek tesisidir. Bir işlem başka bir syscall yürütmeye çalışırsa sonlandırılır. seccomp-bpf uzantısı, seccomp'a göre daha fazla esneklik sağlar. seccomp-bpf, sabit bir syscall grubuna izin vermek yerine, syscall verileri üzerinde bir BPF programı çalıştırır ve programın döndürdüğü değere bağlı olarak syscall'ı yürütebilir, syscall'ı atlayabilir ve sahte bir değer döndürebilir, işlemi sonlandırabilir, sinyal oluşturabilir veya izleyiciye bildirimde bulunabilir.

İz

İz (işlem izleme) sistem çağrısı, izleyici işleminin iz sürecinin yürütülmesini gözlemleyip kontrol etmesine olanak tanıyan işlevler sunar. Bağlandıktan sonra, izleyici işlemi üzerinde tam kontrole sahip olur. Wikipedia'dan veya ilgili kılavuz sayfasından ptrace hakkında daha fazla bilgi edinin.

Korumalı Alan Politikası

Korumalı Alan Politikası, korumalı alanın gerçekleştirebileceği ve yürütemeyeceği işlemleri belirttiği için korumalı alanın en önemli parçasıdır. Korumalı alan politikasının 2 bölümü vardır:

  • Syscall politikası
  • Ad alanı kurulumu

Varsayılan Syscall Politikası

Varsayılan politika, her zaman tehlikeli olan syscall'ları engeller ve kullanıcı tarafından sağlanan genişletilmiş politikaya göre önceliklidir.

Genişletilmiş Syscall Politikası

Genişletilmiş syscall politikasını PolicyBuilder sınıfımızı kullanarak oluşturabilirsiniz. Bu sınıfta, politikanızın okunabilirliğini iyileştirmek için kullanılabilecek bir dizi uygunluk kuralı (ör. AllowStaticStartup, AllowDynamicStartup, AllowOpen) tanımlanmıştır.

Sistem çağrılarını daha da kısıtlamak veya daha karmaşık kurallar uygulamak isterseniz AddPolicyOnSyscall ve AddPolicyOnSyscalls ile ham BPF makroları belirtebilirsiniz. crc4 örneği; read, write ve close sistem çağrılarına ilişkin bağımsız değişkenleri kısıtlamak için bu mekanizmayı kullanır.

Genel olarak, Korumalı Alan Politikası ne kadar sıkı olursa o kadar iyidir. Çünkü kodda bulunan güvenlik açığından yararlanma faaliyetleri politika ile sınırlı olacaktır. Programın normal çalışması için tam olarak hangi sistem çağrılarının ve bağımsız değişkenlerin gerekli olduğunu belirtebilirseniz kod yürütme güvenlik açığından yararlanan saldırganlar da aynı sınırlarla sınırlandırılır.

Çok sıkı bir Korumalı Alan Politikası, standart giriş ve çıkış dosyası tanımlayıcılarındaki okuma ve yazma işlemleri hariç tüm syscall'ları reddedebilir. Bu korumalı alanda, bir program girişi alabilir, işleyebilir ve sonucu döndürebilir. Ancak süreç başka bir sistem çağrısı yapmaya çalışırsa politika ihlali nedeniyle sonlandırılır. Dolayısıyla, sürecin güvenliği ihlal edilirse (kötü amaçlı bir kullanıcı tarafından kod yürütme) kötü bir sonuç üretmekten daha kötü bir şey yapamaz (yürütmenin ve diğerlerinin düzgün şekilde işlemesi gerekir).

Ad Alanı Kurulumu

PolicyBuilder nesnesi, bir Sandboxee'nin dosya sistemine ait bağımsız görünümünü ayarlamak için de kullanılır. Tek dosyalar (AddFile / AddFileAt), tüm dizinler (AddDirectory / AddDirectoryAt) ve geçici depolama alanı (AddTmpfs) Sandboxee'nin ortamıyla eşlenebilir. Ayrıca AddLibrariesForBinary, belirtilen dinamik olarak bağlantılı yürütülebilir dosyanın ihtiyaç duyduğu tüm kitaplıkları otomatik olarak eşlemek için kullanılabilir.

Komut Satırı İşaretleri

Herhangi bir Sandbox2 politikası, aşağıdaki komut satırı işaretlerinden biri belirtilerek devre dışı bırakılabilir. Bu işaretler test amaçlıdır (ör. Genişletilmiş Syscall Politikası'nı hassaslaştırırken).

  • --sandbox2_danger_danger_permit_all
  • --sandbox2_danger_danger_permit_all_and_log

Korumalı Alan Yürütücü

Korumalı Alan Yürütücü, kendisi korumalı alana alınmayan bir süreçtir. Bu, Sandboxee'ye bağlanan iz izleme işlemidir (ptrace tracee işlemi). Korumalı Alan Yürütücü ayrıca, Sandboxee'yi izleyen ve durum bilgilerini sağlayan bir Monitor örneği oluşturup çalıştırır.

Sandbox2 üç yürütme moduna izin verir: bağımsız, Sandbox2 Forkserver ve Custom Forkserver. Çatal sunucusu kullanırsanız Korumalı Alan, Korumalı Alan Yürütücüsü'nün alt işlemi olarak oluşturulur. Bu modlar burada ayrıntılı olarak açıklanmaktadır.

Korumalı alan

Korumalı Alan, Korumalı Alan Politikası tarafından tanımlanan kısıtlanmış, korumalı alana alınmış ortamda çalışan süreçtir. Korumalı Alan Yürütücü, politikayı IPC aracılığıyla Sandboxee'ye gönderir. Sandboxee daha sonra politikayı uygular. Politikanın ihlal edilmesi, aksi yapılandırılmadığı sürece sürecin sonlandırılmasına neden olur (Korumalı Alan Politikası'na bakın).