İçe aktarılan modüller neden bütün yetkilerinizi devralsın?
Koschei Lang, açıkça verilen yetki değerleri üzerine kurulu bağımsız bir programlama dilidir. Koschei kodunda disk erişimi, ağ bağlantısı, ortam değişkenlerini okuma veya işlem başlatma gibi etkiler için uygun yetkinin fonksiyona verilmesi gerekir.
Birçok yazılımda bağımlılıklar, ana sürecin geniş işletim sistemi izinlerinden dolaylı olarak yararlanabilir. Koschei, kendi derleyicisinin desteklediği kod için daha açık bir sınır tanımlar: Bir işlem için gereken yetki, kodun erişebildiği kapsamda bulunmalı; bulunmuyorsa derleme sırasında hata verilebilir.
Bu sayfa canlı bir tarayıcı derleyicisi değil, statik teknik açıklamadır. Aşağıdaki komutlar lisanslı ZIP dosyasındaki örneklerden alınmıştır. Beklenen sonuçlar depodaki test örnekleriyle desteklenir.
1. Yetkisiz içe aktarma örneğini reddedin
Paketteki examples/supply_chain/analytics.ks modülü, disk yetkisi almadan dosya okumaya çalışacak şekilde tasarlanmıştır. Yerel terminalde:
$ ks check examples/supply_chain/main.ks KOSCHEI ERROR: KS2401 Required capability is unavailable in this scope. # Beklenen çıkış kodu: 1
KS2401 burada çalışma sırasındaki bir güvenlik duvarı değildir. Derleyici, yetkisiz disk işlemini yürütmeden önce reddeder. Bu örneğin kontrolü gizli dosyayı okumaz.
2. Programın erişebileceği yetkileri görün
ks caps, içe aktarılan Koschei modülleri dahil bir programın erişebildiği yetki alanlarını gösterir. CI için ağ yetkisini reddetme örneği:
$ ks caps examples/apps/secretscan/main.ks $ ks caps --deny net examples/apps/secretscan/main.ks # Beklenen: yasak ağ erişimi yok, çıkış kodu 0
--deny seçeneği, gelecekteki bir değişiklik yasak yetki alanını eklerse CI kontrolünü başarısız yapabilir. Bu yalnızca Koschei programının yetki modeline ilişkin denetlenebilir bir özelliktir; bütün işletim sistemi programları için güvenlik garantisi değildir.
3. Daraltılmış yetkiyle kod yazın
Aşağıdaki fonksiyon, kendisine verilen daraltılmış ağ yetkisiyle belirlenen kaynağa erişebilir. Disk veya diğer ağ kaynaklarına otomatik yetki kazanmaz:
fn fetch_data(net: NetCaps, url: String) -> String or Error {
let response = net.get(url) or return Error("request failed")
return response.text()
}
fn main(caps: SystemCaps) {
let api_net = caps.net.allow("https://api.example.com")
let response = fetch_data(api_net, "https://api.example.com/v1")
println(response)
}
Buradaki alan adı örnek amaçlıdır; canlı hizmet vaadi değildir. Dil, tipli değerler, Option<T>, Result<T,E> ve Koschei kaynak koduyla geliştirilmiş Core Library modülleri içerir.
ks check · ks caps · ks run · ks build · ks fmt · ks explain
Kurulum için Python 3.12+ ve Unix benzeri kabuk; mevcut native derleme yolu için Go 1.24+.
4. Güvenlik kapsamının sınırları
Koschei Lang 0.10.0 1.0 öncesi bir üründür. Yetki denetimleri, Koschei dilinin ve araç zincirinin desteklediği kapsama uygulanır. Rastgele üçüncü taraf yürütülebilir dosyaları güvenli hâle getirdiği, ele geçirilmiş cihazları veya çalınan kimlik bilgilerini koruduğu, cüzdan imzalama kötüye kullanımını önlediği ya da banka sistemleri için bağımsız sertifikalı olduğu iddia edilmez. Mevcut native derleme yolu Go tabanlı bir adaptör kullanır.
5. Ürünü deneyin
Individual ticari lisans, araç zinciri ZIP'i, Core Library, güvenlik örnekleri, Türkçe/İngilizce belgeler ve sonraki 12 ayın sürümlerini kapsar. Adına lisanslanan bir geliştirici, satın aldığı sürümleri ticari projelerde süresiz kullanabilir.
$ ./install.sh $ ks version $ ks run examples/hello.ks $ ks check examples/supply_chain/main.ks
Fiyat: 49 USD, tek seferlik. Ödeme ve ZIP teslimi Polar üzerinden yapılır. Ticari olmayan kişisel kullanım lisans koşullarına göre ücretsizdir; kuruluşlar için 30 günlük değerlendirme hakkı tanımlıdır.
Koschei Lang Individual · 49 USD ↗