İçeriğe geç
← Bloga dön
güvenlikhomebrewkurumsalgeliştirici-deneyimipolitika

Homebrew'u Engellemek Güvenlik Duruşunuzu Neden Zayıflatır?

Şirket cihazlarında Homebrew'u toptan engellemek anlaşılabilir bir içgüdü. Ancak bu yöntemin neden sürekli geri teptiğine ve asıl çözümün ne olduğuna yakından bakalım.

EnterpriseBrew Ekibi··9 dk okuma

Çoğu kurumsal BT organizasyonunun hayatında bir noktada şu karar alınır: "Homebrew'u engelliyoruz." Bunu tetikleyen sebep genelde değişmez; bir denetim bulgusu, bir güvenlik ihlali veya bir zafiyet raporu. Endişe son derece haklıdır: Geliştirici bilgisayarlarındaki denetimsiz yazılımlar gerçekten büyük bir risktir ve buna karşı bir şeyler yapma isteği kesinlikle doğru bir reflekstir.

Ancak asıl sorun hedefte değil, kullanılan yöntemdedir. Homebrew'u toptan engellemek, vadedilen o "sıkı denetimi" hiçbir zaman sağlayamaz. Pratikte yaptığı tek şey, görünür ve bir şekilde yönetilebilir olan riski, tamamen görünmez ve kesinlikle yönetilemeyen bir riske dönüştürmektir. Üstelik bu karar alınırken, yaratacağı gizli maliyetler ve kör noktalar genelde hiç hesaba katılmaz.

Geliştiricilerin Kaçış Yolları — Hem de Günler İçinde

Homebrew engellendiğinde geliştiriciler bilgisayarlarına yazılım kurmayı bırakmazlar. Sadece, BT ekiplerinin görebildiği bir kanaldan yazılım kurmayı bırakırlar.

Alternatifler çok ve ulaşılması son derece kolaydır. Yönetici (admin) izni gerektirmeyen, doğrudan kullanıcı alanında çalışan ve MDM (Cihaz Yönetimi) araçlarında hiçbir iz bırakmayan alternatif paket yöneticileri bulabilirler. Hiçbir merkezi paket yöneticisine, güvenlik politikasına veya log kaydına takılmadan; doğrudan açık kaynak depolardan çalıştırılabilir dosyaları (binary) çeken, dile özgü sürüm yöneticilerini kullanabilirler. Hatta kaynak koddan derleme yapabilirler: herkese açık bir depoyu (repo) klonlar, derleme komutunu çalıştırır ve oluşan dosyayı kendi klasörlerine taşırlar. Ortaya çıkan sonuç, paket yöneticisiyle kurulmuş bir yazılımla birebir aynıdır ama hiçbir yerde kayıt bırakmaz.

İşi bir adım daha ileri götürüp, geliştiricinin tüm çalışma ortamının tamamen izole bir konteyner (container) içinde çalıştığı, BT'nin içeriye dair hiçbir şey göremediği senaryolar yaratılabilir. En uç örnekte ise, şirket bilgisayarının yanına koydukları ve şirket ağından tamamen bağımsız çalışan kişisel bir bilgisayar kullanmaya başlarlar.

Geliştiricilerin bulduğu bu kaçış yollarının hiçbiri kötü niyetli değildir; bu sadece katı bir kısıtlamaya verilen son derece rasyonel bir tepkidir. Geliştiricilerin yapması gereken bir iş vardır ve bir şekilde o işi yapmanın yolunu bulurlar. Güvenlik açısından bakıldığında ise sonuç tam bir hezimettir: BT ekipleri, Homebrew'u engellemeden öncesine kıyasla artık geliştirici bilgisayarlarında neyin çalıştığına dair çok daha az şey görmektedir. Yönetilebilir ve denetlenebilir bir kanalın yerini, tamamen denetimsiz ve görünmez alternatifler almıştır.

Bu anlattıklarımız varsayımsal bir felaket senaryosu değildir. Homebrew'u engelleyen şirketlerde, kuralın uygulanmaya başlamasından itibaren genellikle ilk iki hafta içinde tam olarak bunlar yaşanır.

Güvenlik İllüzyonu

Homebrew'u engellemek aslında sadece bir "kontrol illüzyonu" yaratır. Güvenlik ekipleri bir sonraki denetimde bu kuralı gururla gösterebilir. MDM logları kuralın uygulandığını doğrular ve denetim bulgusu kapatılır.

Fakat bir güvenlik politikasının asıl amacı "Bakın böyle bir kuralımız var" demek değildir. Asıl soru şudur: "Riski gerçekten azalttık mı?" Ne yazık ki bu durumda cevap genellikle "hayır"dır; hatta durum eskisinden daha da kötüye gitmiş olabilir.

Burada sorulması gereken doğru soru "Bu vektörü kapattık mı?" değil, "Bu vektör üzerinde görünürlüğe sahip miyiz?" olmalıdır. Riski yönetilebilir kılan şey görünürlüktür. Görünürlük olmadan; tehlikeli bir uygulamanın kurulduğunu tespit edemez, sisteminizdeki paketleri etkileyen yeni bir güvenlik zafiyetine (CVE) karşı hızlı aksiyon alamaz ve bir denetçinin er ya da geç isteyeceği o güncel yazılım envanterini asla çıkaramazsınız.

Yönetilen ve denetlenebilen bir kanal üzerinden Homebrew kullanan bir geliştirici ekibi, denetimsiz alternatif yollar kullanan bir ekipten her zaman çok daha güvenlidir. İlk senaryoda şirket kimin ne kurduğunu bilir, ikinci senaryoda ise tamamen karanlıktadır. Oysa bir riski ortadan kaldırmanın ilk şartı, o riskin varlığından haberdar olmaktır.

Aynı mantık başka alanlar için de geçerlidir. Örneğin oltalama (phishing) saldırılarını engellemek için şirket e-postalarını tamamen dışa kapatırsanız, şirketinizi daha güvenli hale getirmiş olmazsınız. Çalışanlar işlerini kişisel e-posta hesapları üzerinden halletmeye başlar ve BT ekipleri ağda ne olup bittiğini görme yeteneğini tamamen kaybeder. Tehdit yüzeyi küçülmemiştir, sadece yer değiştirmiştir.

Verimlilik Maliyeti

Homebrew'u engellemenin maliyetleri soyut değildir, ancak yanlış hesaplanması çok kolaydır.

Bir geliştirici engeli aşmanın yolunu (workaround) bir kez bulduğunda, günlük iş akışındaki zaman kaybı görece azdır. Asıl büyük maliyet günlük yavaşlamalarda değil, göründüğünden çok daha sık tekrarlanan o "tek seferlik" kurulum aşamalarındadır. Ekibe yeni bir geliştirici katılır: Normalde bir öğleden sonra sürmesi gereken araç kurulumları, iki-üç günlük bir işkenceye dönüşür. Bir mühendis, daha önce kullanmadığı yeni bir araca ihtiyaç duyduğu bir projeye geçer: Kurulum için alternatif yollar aramak, destek (help-desk) bileti açmak veya BT'nin onayını beklemek için saatler harcanır. Bir macOS güncellemesi, kurulan o alternatif yapıları bozar: Asıl işle hiçbir ilgisi olmayan, tamamen geliştirme ortamını onarmaya yönelik bir saatlik hata ayıklama (debugging) seansı daha başlar.

Bu olaylar tek bir mühendis özelinde nadir yaşanıyor gibi görünebilir. Ancak 50 kişilik bir ekipte, her hafta bunların en az birkaçı mutlaka yaşanır. Harcanan bu süreler üst üste bindiğinde devasa bir maliyet oluşturur. Fakat işin kötüsü, bu maliyetin hiçbir kısmı, bu kuralı koyan güvenlik kararının bütçe tablosunda görünmez.

Bazı pozisyonlar bu kuralın bedelini çok daha ağır öder. Güvenlik araştırmacıları, veri mühendisleri ve makine öğrenimi mühendisleri, günlük iş akışlarının doğası gereği sürekli yeni araçlara ihtiyaç duyarlar: Yeni bir analiz iskeleti, bir protokol inceleyici veya tek bir işi çok iyi yapan ufak bir komut satırı (CLI) aracı... Bu roller için ihtiyaç duyulan her yeni araç, bürokratik bir satın alma krizine dönüşür. Bu durum şirketi anında batırmaz ama rutin işlerde kolay kolay rastlanmayan türden, son derece yıpratıcı ve moral bozucu bir sürtünme yaratır.

Yetenek Kaybı ve İtibar Boyutu

Mühendisler konuşur. Glassdoor yorumlarında, özel Slack gruplarında, konferans aralarındaki sohbetlerde şirketlerin sunduğu geliştirici ortamları sıkça tartışılır. "Onların BT'si her şeyi engelliyor" söylemi, bir adayın iş teklifini değerlendirirken göz ardı edeceği önemsiz bir detay değildir. Bu, şirketin kültürü ve yönetim felsefesi hakkında çok güçlü bir sinyal verir ve kabul edilen veya reddedilen tekliflerde doğrudan rol oynar.

İşten ayrılan kıdemli (senior) bir mühendisin yerini doldurmanın maliyeti, genellikle o mühendisin 6 ile 12 aylık maaşına eşdeğerdir (işe alım masrafları, mülakatlara harcanan efor, yeni kişinin adaptasyon süresi ve tam verime ulaşana kadarki üretkenlik kaybı). Katı kuralların yarattığı araç hayal kırıklığı nedeniyle yılda sadece iki kıdemli mühendisini kaybeden bir şirket (ki bu 50 kişilik kısıtlayıcı bir ortam için oldukça iyimser bir tahmindir), az önce bahsettiğimiz verimlilik kayıplarına ek olarak yılda 300.000 ile 600.000 dolar arası bir bedel ödemektedir.

Amacımız, güvenlik politikalarının geliştiricilerin keyfine göre şekillenmesi gerektiğini savunmak değil. Anlatmak istediğimiz asıl konu; Homebrew'u engelleme kararının bedelsiz, masrafsız bir aksiyon olmadığıdır. Bu kararın, elde edilecek güvenlik kazanımlarıyla kıyaslanması gereken çok ciddi maliyetleri vardır. Çoğu senaryoda bu maliyetler dürüstçe hesaplanıp, elde edilen "gerçek" risk düşüşüyle (ki yukarıda anlattığımız üzere genelde risk düşmez, artar) karşılaştırıldığında, tablodan bu kararı destekleyen bir sonuç çıkmaz.

"Yönetilen" Ortam Ne Demektir ve "Engellenmiş" Ortamdan Neden Farklıdır?

Homebrew'u engellemenin alternatifi, ortamı tamamen denetimsiz bırakıp herkesin istediğini kurmasına izin vermek değildir. Bu zaten çözülmeye çalışılan mevcut durumdur ve kesinlikle yetersizdir. Asıl alternatif Yönetilen Homebrew (Managed Homebrew) yaklaşımıdır: Yani kurulumların; gerçek zamanlı görünürlük, güvenlik açığı (CVE) denetimi, politika yönetimi ve denetim logları sağlayan merkezi bir kanal üzerinden yapılmasıdır.

Yönetilen bir ortamda her brew install komutu, arkadaki hafif bir proxy mimarisi sayesinde tam çalıştırıldığı anda yakalanır: Hangi paket, hangi versiyon, hangi makinede, hangi kullanıcı tarafından, saat kaçta kurulmak isteniyor? Kurulum tamamlanmadan önce, talep edilen paketin o versiyonu bilinen güvenlik açıklarına karşı taranır. Kritik zafiyet barındıran paketler anında, daha indirilme aşamasında engellenebilir. Burada aracı toptan engellemek yerine, sadece gerçek bir risk oluşturan spesifik paketler engellenir. Şirket içi kurallar ekibe veya role göre özelleştirilebilir: Örneğin taşeron çalışanlar için daha sıkı kontroller uygulanırken, belirli ağ araçlarına işi gereği ihtiyaç duyan güvenlik araştırmacılarına daha esnek izinler verilebilir. Geliştiricilerin ihtiyaç duyduğu istisnai paket talepleri; günlerce bekleyen yardım masası biletleri (help-desk) veya ikili ilişkilerle çözülen gayriresmi süreçler yerine, her adımı loglanan son derece hızlı ve akıcı bir onay mekanizması üzerinden yürütülür.

Böyle bir ortamda geliştirici deneyimi, standart ve denetimsiz bir Homebrew kullanımından farksızdır. Komutlar aynıdır, iş akışı aynıdır; kurulumların çok büyük bir kısmı hiçbir engele takılmadan saniyeler içinde gerçekleşir. Geliştiricilerin sistemin etrafından dolanmak için hiçbir sebebi kalmaz; çünkü karşılaştıkları kısıtlamalar (eğer karşılaşırlarsa) son derece nokta atışıdır, mantıklı bir açıklaması vardır ve eğer kuralın yanlış uygulandığı bir durum varsa, saniyeler içinde çözülebilen, sürtünmesiz bir istisna (exception) talep etme yoluna sahiptir.

BT ve güvenlik ekiplerinin dünyası ise tamamen değişir. Şirket artık tüm bilgisayarlarda hangi yazılımların kurulu olduğunu anlık ve gerçek zamanlı olarak bilir. Çıkan yeni bir CVE alarmı, şirket ağında hangi makinelerin risk altında olduğuna ve o açıklı paketi kimin kurduğuna dair doğrudan harekete geçilebilir veriler üretir. Denetçilerden gelen "yazılım envanteri ve log" talepleri, haftalar süren manuel incelemelerle değil, saniyeler içinde sistemden alınan raporlarla yanıtlanır.

Denetim Argümanına Tersten Bakmak

Homebrew'u engellemenin en yaygın gerekçesi denetimlerdir. Denetçi gelir ve "Geliştirici bilgisayarlarına yazılım yüklenmesini nasıl kontrol ediyorsunuz?" diye sorar; "Homebrew'u tamamen engelledik" cevabı o an için bir çözüm gibi görünür. Fakat bu cevap sanıldığından çok daha zayıftır.

Özellikle SOC 2, ISO 27001 veya PCI DSS gibi standartlar etrafında çalışan denetçiler, geliştirici dünyasının dinamiklerine artık çok daha hakimler. Kurulumları yeraltına ve görünmez yollara iten toptan bir engelleme politikası, denetimin asıl gereksinimini karşılayan bir kontrol mekanizması değil; sadece problemi halının altına süpüren bir göz boyamadır. Bu ekosistemi anlayan denetçiler şu zor soruları sormaya başlayacaktır: "Peki şu an bilgisayarlarda gerçekten neyin kurulu olduğunu nereden biliyorsunuz? Geliştiriciler alternatif bir yöntem kullandığında ne oluyor? Yeni çıkan bir CVE'yi yamadığınıza dair kanıtınız nerede?"

İşte güçlü bir cevap tam olarak şöyle görünmelidir: "Son 90 gün boyunca tüm şirkette kurulan her bir paketin, hangi kullanıcı tarafından kurulduğunun ve kurulum anındaki CVE durumunun gerçek zamanlı loguna sahibiz. İşte sadece kritik zafiyetleri filtrelediğimiz rapor. Bu da hangi paketlerin engellendiğini, istisna onay süreçlerini ve geçmiş onayları barındıran politika dokümanımız." Bu cevabı alan denetçiler, şirketin "kontrol ediyormuş gibi yapmadığını", riskler üzerinde gerçekten ve tam bir görünürlüğe sahip olduğunu net bir şekilde anlar.

Sonuç

Geliştirici ortamlarının güvenliğini doğru şekilde kurgulayan şirketlerin ortak bir özelliği vardır: Bakış açılarını değiştirmişlerdir. Artık "Geliştiricilerin Homebrew kullanmasını nasıl engelleriz?" diye sormayı bırakıp, "Homebrew kullanımını nasıl denetleyebileceğimiz, risklerini anında görüp anında müdahale edebileceğimiz şeffaf bir sürece dönüştürebiliriz?" diye sormaya başlamışlardır.

Bu ikisi aynı soru değildir ve doğal olarak aynı cevaba götürmezler. İlk sorunun cevabı çok basittir: "Engelle". Ancak bu basit cevap, çözdüğünden çok daha fazla sorun yaratır. İkinci soru ise teknik bir altyapı yatırımı gerektirir; fakat ilk yöntemin asla sağlayamayacağı o paha biçilmez değeri sunar: Geliştirici bilgisayarlarında gerçekten neyin çalıştığına dair net bir görünürlük ve kritik anlarda bu görünürlüğü eyleme dökme gücü.

Özetle; Homebrew'u engellemek sadece bir kontrol illüzyonudur. Yönetilen Homebrew (Managed Homebrew) ise, o engelleme kararıyla aslında en başından beri ulaşılmak istenen gerçek güvenliğin ta kendisidir.

İlgili yazılar