Güvenlik
Bu sayfada hem koruduklarımız hem koruyamadıklarımız yazılı. İkincisini yazmayan bir güvenlik anlatısı, okuyanı listeyi güvence sanmaya iter.
Çıkış noktası
Bir paket yayınlamak, onu kuran her mühendisin makinesinde kod çalıştırmak demektir. Bu üründeki bütün güvenlik kararları önce şu soruyla tartıldı: bu değişiklik, yetkisiz yayını kolaylaştırıyor mu?
Paketler imzalanır (ECDSA P-256)
İmza dosyası paketin içinde taşınır. İmzalanan şey çıplak arşiv özeti değil; dosya özetlerini, paket kimliğini ve sürümünü içeren bildirim dosyasıdır.
Yalnızca özet imzalansaydı, geçerli imzalı eski bir arşiv yeni bir sürüm numarasıyla katalogda gösterilebilirdi: imza doğrulanır, kullanıcı bilinen açığı olan eski aracı “güncelleme” diye kurardı.
Özel anahtar sunucuda YOKTUR
Sunucu imzayı yalnızca doğrular. İmzalama, yayıncının kendi makinesinde ayrı bir araçla yapılır.
Anahtar sunucuda dursaydı, sunucuyu ele geçiren biri paketi değiştirip yeniden imzalayabilirdi — yani imzalamak tamamen anlamsız olurdu.
İstemci de doğrular
Mühendisin makinesindeki eklenti imzayı bağımsız olarak denetler ve kullandığı güvenilen anahtar listesi sunucudan gelmez.
İmzanın varlık sebebi, sunucunun sözüne güvenilemeyeceği varsayımıdır. Güven listesini sunucudan almak, o varsayımı sessizce iptal ederdi.
Silinemez denetim kaydı
Her yayın, her yetki değişikliği ve her kanal kararı kalıcı olarak yazılır. Güncelleme ya da silme yolu bilerek yoktur ve saklama temizliği bu kayda dokunmaz.
“Bu araç buraya nasıl geldi” sorusu çoğu zaman aylar sonra sorulur. O gün silinebilir bir kayıt, hiç olmayan bir kayıttır.
İsteğe bağlı dört göz kuralı
Bir sürümü daha geniş bir kanala çıkarmak ikinci bir yöneticinin onayını isteyebilir ve isteyen kendi isteğini onaylayamaz. Geri alma asla onay istemez.
Başlangıçta kapalıdır. Üç kişilik bir ekipte bu denetim birkaç hafta içinde bakılmadan onaylanan bir mesaja dönebilir; korumadığı hâlde korunduğu sanılan bir denetim, hiç olmayan bir denetimden daha kötüdür.
Arşiv açma işlemi de bir saldırı yüzeyidir
Yüklenen arşivler dizin kaçışına (zip-slip) ve sıkıştırma bombasına karşı denetlenir; açılmış boyut için üst sınır vardır.
Bir arşivi açmak masum bir işlem gibi görünür. Oysa hazırlanmış bir arşiv, klasörün dışına dosya yazabilir ya da sunucunun diskini doldurabilir.
Parolasız giriş
Giriş, e-posta adresine gönderilen tek kullanımlık kodla yapılır. Oturum kısa ömürlü bir jetonla sürer; yenileme jetonu tarayıcı koduna hiç görünmez.
Yönetilecek bir parola havuzu olmayınca, sızacak bir parola veritabanı da olmaz. İptal edilmiş bir yenileme jetonunun tekrar kullanılması ise çalınma işareti sayılır ve oturum düşürülür.
Ne kurulduğu yazılı
Kurulum klasöründe makine tarafından okunabilir bir malzeme listesi (CycloneDX SBOM) ve her iki veritabanı için geçiş betikleri gelir.
BT ekibiniz sunucuya neyin girdiğini kurulumdan önce görebilmeli. Bir bağımlılıkta açık duyurulduğunda “bizde var mı” sorusu bir dosya aramasıdır.
Koruyamadıklarımız
Aşağıdakiler eksik değil, sınır. Yapı gereği böyleler ve başka türlü olduklarını söylemek yanlış olurdu.
- Anlaşan iki yönetici. Dört göz kuralı tek kişiyi durdurur, ikisini değil.
- Sunucunun sistem yöneticisi. Veritabanına ve dosya sistemine erişen biri için uygulama düzeyindeki hiçbir denetim engel değildir.
- İmzalama anahtarının durduğu iş istasyonu. Anahtar sunucuda değil ama bir yerde; o makine ele geçerse imza da ele geçer.
- Kararlılıkla gizlenmiş kötü niyetli davranış. Paket taramamız sezgiseldir ve gizlenmeye çalışan bir kodu yakalayacağını iddia etmiyoruz.
- Veri sızdırma. Kurulu bir araç, mühendisin kendi yetkisiyle çalışır ve o yetkiyle erişebildiği her şeyi okuyabilir. Bunu ürün değil, işletim sistemi ve ağ denetimleri sınırlar.
- Yedeğinizin korunması. Veritabanı yedeği sizin elinizde ve orada duran her şey, canlı sistemdeki kadar değerlidir.
Güvenlik açığı bildirimi
Bir açık bulduysanız bize yazın. Bildirimleri ciddiye alıyor, bulan kişiyi sürecin dışında bırakmıyoruz ve düzeltmenin ne zaman yayınlandığını bildiriyoruz.