David Chisnall’a göre yazılım yalıtımındaki en zor sorun, iki iş yükünü birbirinden tamamen ayırmak değil, iletişim kurması ve veri paylaşması gereken bileşenleri yalıtmaktır. InfoQ üzerinden yayımlanan bir sunumda Chisnall, CHERI mimarisinin güvenlik yetenekleri kavramlarını genişletilmiş işaretçilerle nasıl birleştirerek işaretçiler için donanım koruması sağladığını ve aynı adres alanı içinde bellek güvenliği ile hassas yalıtımı desteklediğini açıklıyor.
Chisnall, SCI Semiconductor’ın kurucu ortağı ve sistem mühendisliği direktörüdür; ayrıca Cambridge Üniversitesi’nde misafir araştırmacı olarak görev yapmaktadır. Sunum, CHERI araştırma çalışmalarına ve bunların CheriBSD ile ARM Morello uzantılarından mikrodenetleyicilere yönelik CHERIoT’ye kadar uzanan yazılım ve donanım uygulamalarına dayanıyor. Buna ek olarak, çalışmanın birleştirilmesiyle ilgili sürecin son aşamalarında olduğunu söylediği RVY adlı RISC-V tabanını da ele alıyor.
İşaretçi, donanım tarafından korunan bir varlığa dönüşüyor
CHERI, geleneksel anlamda bağımsız bir komut kümesi sunmuyor; bunun yerine, SIMD kavramlarının birden fazla uzantı kapsamında uygulanmasına benzer şekilde, farklı mimarilere uyarlanabilecek bir dizi fikir sunuyor. Bu yaklaşıma göre işaretçi artık bellekteki bir adresi temsil eden basit bir sayı değil; adresi, nesne sınırlarını ve bir dizi izni taşıyan, ayrıca değerin geçerli bir işaretçi olup olmadığını belirleyen donanım etiketi bulunan bir yetenek hâline geliyor.
Bu yetenekler tek yönlü özellikler uygular: sınırlar daraltılabilir veya izinler kaldırılabilir, ancak bunlar genişletilemez ya da aynı işaretçiden geri getirilemez. Donanım ayrıca yükleme, depolama veya dallanma işlemlerinde kullanılmadan önce işaretçinin geçerli ve etiketli olduğunu doğrular. Bir program veri olarak ele alınmış veya adres üretmek üzere değiştirilmiş bir değeri kullanmaya çalışırsa işlem, değeri otomatik olarak kullanılabilir bir işaretçiye dönüştürmek yerine başarısız olur.
Sunuma göre bu tasarım, saldırganın kontrol ettiği bir değerle işaretçinin üzerine yazmak gibi bellek istismar saldırılarında yaygın olan bazı aşamalara karşı doğrudan koruma sağlar. Ayrıca işaretçilerin konumlarının önceden bilinmesine gerek kalmadan memcpy gibi genel kopyalama işlemlerine izin verir; çünkü işaretçinin etiketi değerle birlikte taşınır veya yetenek alanının bir bölümü üzerine yazıldığında silinir.
Daraltılabilir sınırlar ve izinler
CHERI yetenekleri okuma ve yazma izinlerinin yanı sıra verilerin içinde bulunan işaretçilerle çalışmaya yönelik ayrı izinler içerir. Chisnall, bu hassasiyetin, örneğin bir programa karmaşık bir yapı içindeki verileri okuma izni verilirken yapıya yeni işaretçiler depolama yeteneğinin verilmeyebilmesini sağladığını açıklıyor. Böylece tek bir nesneyi yüzeysel biçimde korumak yerine, bütün bir veri ağacına yayılan salt okunur bir görünüm sağlanabilir.
sealing mekanizması ayrıca, opak ve güvenli işaretçilerin tanıtıcılar veya dosya tanımlayıcılarına benzer şekilde oluşturulmasına olanak tanır; ancak bunun için mutlaka çekirdek tarafından yönetilen bir dönüştürme tablosu gerekmez. Yetenek bir tür kodu kullanılarak mühürlenir; mühürlü durumdayken değiştirilemez, başvurusu çözülemez ve dallanma, yükleme veya depolama amacıyla kullanılamaz. Sahip olan tarafa geri verildiğinde, mühür yalnızca tür kodu eşleşirse açılabilir.
Bellek için uzamsal ve zamansal güvenlik
Sınır aşımı hatalarında CHERI, C dilindeki tanımsız davranışı belirlenimli bir donanım durdurmasına dönüştürebilir. Chisnall, 14 elemanlı bir dizinin 14 numaralı elemanına erişilen bir örnek sunuyor. Geleneksel bir sistemde bu erişim dönüş adresinin üzerine yazılmasına yol açabilirken CHERI sisteminde işaretçi dizi sınırlarıyla kısıtlandığı için işlem kesilir.
Yaklaşım yalnızca uzamsal güvenlikle sınırlı değildir. CHERIoT’de işaretçi etiketleri ve her tahsis birimi için bir bit içeren gölge bellek kullanılır; böylece serbest bırakılmış belleğe bağlı işaretçiler geçersiz kılınabilir. Bir yetenek bir yazmaç içine yüklendiğinde yükleme filtresi bloğun durumunu doğrulayabilir ve bellek serbest bırakılmışsa etiketi silebilir. Donanım tabanlı düzenli bir mekanizma da belleği tarayarak artık canlı olmayan nesnelere işaret eden işaretçilerin etiketlerini kaldırır; bu da geçersiz kılma döngüsü tamamlandıktan sonra belleğin yeniden kullanılmasına olanak tanır.
Bellek güvenliğinden hassas izolasyona
Chisnall’ın aktardığı üzere CHERI projesinin ilk hedefi, geleneksel süreç yalıtımının ötesine geçen hassas bir yalıtım oluşturmaktı. Her bileşeni ayrı bir süreçte yalıtmak; sayfa tabloları, RPC mekanizmaları, veri serileştirme ve veri kopyalama ile ilgili maliyetler doğurur. Bu, onlarca yalıtılmış alan için kabul edilebilir olabilir; ancak tarayıcıların görüntü ve ses kod çözme veya JavaScript JIT çalıştırma gibi bileşenler için binlerce ya da on binlerce korumalı alan çalıştırması gerektiğinde daha az uygun hâle gelir.
CHERI modeli, erişilebilen yeteneklerden başlayarak ulaşılabilen bellek kümesinin bir koruma alanı olarak değerlendirilmesine olanak tanır. Aynı adres alanı içindeki iki alan, diğer bölümler yalıtılmış kalırken bazı verileri paylaşabilir; çünkü paylaşım belirli yeteneklerden başlar ve karmaşık veri yapılarına ve bunlardan erişilebilen her şeye uzanabilir.
Daha büyük sistemlerde sunum, yeni bir adres alanı oluşturmadan yeni bir süreç oluşturan ve ardından yeni sürecin erişebileceği kaynakları belirleyen kök yetenekler kümesini sabitleyen coexecve çağrısı üzerinden kademeli bir yolu açıklıyor. CHERIoT ise gerçek zamanlı bir işletim sistemi içinde izinlerin katı biçimde ayrılmasını benimser. Bağlam değiştirme ve bölmeler arasındaki çağrılardan sorumlu bir geçiş bileşeni bulunur ve sunuma göre bu bileşenin boyutu yaklaşık 350 komuttur.
Chisnall’ın vardığı sonuç, bellek koruması ve yalıtımın kod kurallarının tamamen yeniden yazılmasına veya her bileşenin ayrı bir süreçte çalıştırılmasına bağlı olmaması gerektiğidir. C modelini alışılmış hâline yakın tutarken işaretçileri ve erişim yeteneklerini donanım tarafından anlaşılır ve denetlenir hâle getirmek, bellek hatalarını azaltmak ve denetlenebilirliği daha yüksek bir paylaşım oluşturmak için kademeli bir yol sağlayabilir. Büyük sistemler ile mikrodenetleyiciler arasında uygulama ayrıntıları farklı olmaya devam eder. Ayrıca sunum, CHERI’deki doğrudan deneyimini ve konuşmacısının görüşünü yansıtır; tüm güvenlik sorunlarının otomatik olarak ortadan kaldırılacağını garanti eden genel bir standart değildir.