Kuruluşunuzdaki Tehlikeli Homebrew Paketlerini Nasıl Engellersiniz
BT ve güvenlik ekipleri için yüksek riskli Homebrew paketlerini belirleme ve macOS ve Linux geliştirici filolarında iş akışlarını kesintiye uğratmadan engelleme politikaları uygulama konusunda pratik bir rehber.
Bir geliştirici kurumsal bir MacBook'ta brew install nmap çalıştırdığında aynı anda üç şey gerçekleşir: kurulum saniyeler içinde başarıyla tamamlanır, hiçbir yere kaydedilmez ve güvenlik ekibinin bundan haberi olmaz. Çoğu kuruluş için bu varsayımsal bir durum değildir — kurumsal makinelerde yönetilmeyen Homebrew'un varsayılan durumudur.
Bu rehber, hangi Homebrew paketlerinin risk oluşturduğunu nasıl belirleyeceğinizi, bunlar etrafında nasıl savunulabilir bir politika oluşturacağınızı ve bu politikayı filonuzda sürtünmesiz bir şekilde nasıl uygulayacağınızı kapsar.
Homebrew Paket Kontrolü Neden Önemlidir?
Homebrew, yazılımı doğrudan kullanıcı alanına yükler; yükseltme (elevation) yoktur, onay iş akışı yoktur ve merkezi bir log bulunmaz. Bireysel geliştiriciler için bu bir özelliktir. Yüzlerce macOS ve Linux makinesini yöneten BT ve güvenlik ekipleri için ise bu bir kör noktadır.
Pratik riskler üç kategoriye ayrılır:
Ağ keşif araçları. nmap, masscan ve arp-scan gibi paketler, bir geliştiriciye dahili ağ topolojisinin haritasını çıkarma yeteneği verir. Bunların meşru kullanımları vardır (güvenlik mühendisleri, ağ ekipleri) — ancak tüm geliştirici makinelerinde kısıtlamasız olarak bulunması gereksiz bir maruziyet yaratır. Bir geliştirici hesabını ele geçiren bir saldırgan da aynı araçlara sahip olur.
Veri sızdırma vektörleri. netcat (nc), socat ve belirli bayraklarla birlikte curl gibi araçlar, minimum sürtünmeyle bir ağdan dışarı veri aktarabilir. Bunların çoğunun meşru kullanımları vardır; asıl soru, her kullanımın her makinede mi yoksa yalnızca belgelenmiş bir nedeni olan makinelerde mi bulunması gerektiğidir.
Parola ve kimlik bilgisi araçları. john (John the Ripper), hashcat ve benzeri paketler, standart bir geliştirici iş istasyonunda bulunmaması gereken uzman araçlarıdır. Bir makinede bulunmaları bile araştırılmaya değer bir anomalidir.
Amaç, geliştiricilerin ihtiyaç duydukları araçlara erişimini engellemek değildir. Yüksek riskli araçların açık onay gerektirmesini ve bu onayın izlenmesini sağlamaktır.
Hangi Paketlerin Engelleneceğini Belirleme
Kategori tabanlı bir çerçeve ile başlayın, ardından kuruluşunuzun gerçek risk profiliyle geliştirin.
Aşama 1: Varsayılan olarak engelle, güvenlik onayı gerektir
Bu paketlerin rutin bir geliştirici kullanımı yoktur ve önemli ölçüde kötüye kullanım potansiyeline sahiptirler:
| Formül | Risk |
|---|---|
nmap |
Ağ bağlantı noktası taraması ve işletim sistemi parmak izi çıkarma |
masscan |
Yüksek hızlı ağ tarayıcısı (nmap'ten daha hızlı) |
netcat / ncat |
Ham TCP/UDP bağlantıları; reverse shell'lerde yaygındır |
socat |
Çok amaçlı röle; istismar sonrası aşamada (post-exploitation) kullanılır |
john |
Parola karması (hash) kırma |
hashcat |
GPU hızlandırmalı parola kırma |
hydra |
Kaba kuvvet (brute-force) giriş aracı |
aircrack-ng |
Wi-Fi ağı kırma paketi |
metasploit |
Sızma testi (penetration testing) çerçevesi |
sqlmap |
Otomatik SQL enjeksiyon aracı |
Aşama 2: Gerekçeyle izin ver, kullanımı logla
Bunlar, meşru geliştirici uygulamaları olan ancak yüksek risk taşıyan çift kullanımlı araçlardır:
| Formül | Meşru kullanım | Risk |
|---|---|---|
wireshark |
Ağ hata ayıklama | Kurumsal ağlarda tam paket yakalama |
tcpdump |
Düşük seviyeli ağ incelemesi | Aynı |
telnet |
Eski sistem erişimi | İletim sırasında şifrelenmemiş kimlik bilgileri |
rclone |
Bulut depolama senkronizasyonu | Kişisel buluta veri sızdırma |
restic |
Yedekleme araçları | Yedekleme kanalı üzerinden veri sızdırma |
proxychains-ng |
Ağ proxy zincirleme | Kurumsal web proxy'sini atlatır |
Aşama 3: Genel olarak onayla, sürümleri izle
Bunlar, izin verilmesi güvenli olan ancak yine de CVE amaçları için izlenmesi gereken standart geliştirici araçlarıdır:
jq, wget, curl, git, ripgrep, fd, bat, fzf, htop, tmux, vim, neovim, python@3.x, node, go, rust
Sürümleri izlemek burada önemlidir: örneğin curl 8.0.1, CVE-2023-38545 (CVSS 9.8) güvenlik açığından etkilenir. Hangi makinelerde hangi sürümün yüklü olduğunu bilmeden bu bilgiye dayanarak harekete geçemezsiniz.
Politikayı Oluşturma
İletilmeyen bir engelleme politikası, yalnızca destek talepleri (ticket) üreten bir politikadır. Uygulamadan önce üç şeyi belgeleyin:
-
Neyin neden engellendiği.
enterprisebrew install nmapkomutunu çalıştıran ve genel bir "politika tarafından engellendi" mesajı alan bir geliştirici ya kafa karışıklığı içinde bir destek talebi oluşturur ya da bir geçici çözüm bulur. "nmap, SEC-04 politikası (ağ keşif araçları) tarafından engellenmiştir. Buna yetkili güvenlik testleri için ihtiyacınız varsa, security@yourcompany.com adresinden bir istisna talep edin" yazan bir mesaj eyleme geçirilebilirdir. -
İstisna süreci. İstisnaları kimin onaylayabileceğini, bunu yapmak için SLA'yı (hizmet seviyesi anlaşması) ve onayların nasıl kaydedileceğini tanımlayın. İki hafta süren bir istisna süreci, geliştiricilere politikanın etrafından dolaşmayı öğretir. İki saat süren bir istisna süreci ise onlara bunu kullanmayı öğretir.
-
Ekip veya departmana göre kapsam. Güvenlik mühendislerinin
nmap'e ihtiyacı vardır. Ağ mühendislerininwireshark'a ihtiyacı vardır. Aracı, makinede her makinede bulunmaması gerektiği için meşru olarak kullanan kişilerden engellemek hem verimsiz hem de adaletsizdir. Departman kapsamlı politikalar, güvenlik ekibinin makineleri için açık bir izin listesini (allowlist) korurkennmap'i varsayılan olarak engellemenize olanak tanır.
Politikayı Uygulama
Merkezi bir proxy olmadan, Homebrew seviyesinde politika uygulaması mümkün değildir. Homebrew'un merkezi bir otoritenin neyin kurulup kurulamayacağını tanımlaması için bir mekanizması yoktur. Uygulama, kurulum isteğini araya girip yakalayan bir katmanda gerçekleşmelidir.
Bunu çalıştıran mimari şudur:
Geliştirici makinesi
└─ enterprisebrew install nmap
└─ POST /install {nmap}
└─ politika kontrolü: nmap → engellendi (SEC-04)
└─ engelleme nedeni ile birlikte 403 yanıtı
Geliştirici hiçbir zaman bir paket (bottle) indirmez. Engelleme anında gerçekleşir, neden görünürdür ve deneme loglanır.
Yönetici portalı üzerinden engellemeleri yapılandırma
EnterpriseBrew'da engelleme politikaları yönetici panosundan Policy → Block List altında yönetilir. Her kayıtta şunlar bulunur:
- Formula name (Formül adı) — Homebrew formül adına tam eşleşme
- Reason (Neden) — kurulum engellendiğinde geliştiriciye gösterilir
- Scope (Kapsam) — global veya belirli departmanlarla sınırlı
- Active (Aktif) — kuralı silmeden etkinleştirmek veya devre dışı bırakmak için geçiş düğmesi
nmap'i engelleme listesine eklemek için:
- Policy → Block List → Add Rule (Politika → Engelleme Listesi → Kural Ekle) bölümüne gidin
- Formül adı olarak
nmapgirin - Nedeni belirleyin:
Ağ tarama aracı — güvenlik ekibinin onayı gerekir (security@yourcompany.com adresinden talep gönderin) - Kapsamı Global olarak ayarlayın veya belirli departmanlarla sınırlayın
- Kaydedin
Kural, bağlanan tüm geliştirici makinelerinde anında yürürlüğe girer. Yeniden başlatma, MDM bildirimi (push) veya makine başına yapılandırma değişikliği gerekmez.
API üzerinden (IaC / GitOps iş akışları için)
Altyapıyı kod olarak (IaC) yönetiyorsanız, politika kuralları REST API üzerinden oluşturulabilir:
curl -X POST https://brew.yourcompany.internal/api/v1/policy/block \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"formula": "nmap",
"reason": "Ağ tarama aracı — güvenlik ekibinin onayı gerekir",
"scope": "global"
}'
Bu, engelleme listenizi bir yapılandırma dosyasında tanımlamanızı, git'te sürümlemenizi ve herhangi bir diğer altyapı değişikliği için kullanılan aynı iş akışı olan bir CI/CD boru hattı (pipeline) aracılığıyla uygulamanızı sağlar.
Bir Engelleme Tetiklendiğinde Ne Olur?
Geliştirici deneyimi önemlidir. Bir engelleme tetiklendiğinde, CLI şu çıktıyı verir:
$ enterprisebrew install nmap
✗ nmap kuruluşunuzun politikası tarafından izin verilmiyor.
Neden: Ağ tarama aracı — güvenlik ekibinin onayı gerekir.
İstisna talep etmek için iletişime geçin: security@yourcompany.com
Politika: SEC-04 | Uygulayan: IT Security
Kurulum sıfır olmayan bir durum koduyla (non-zero status code) çıkar, böylece yanlışlıkla engellenen paketleri kurmaya çalışan CI boru hatları da net bir şekilde başarısız olur.
Denetim logunda, olay status: blocked, formül, geliştiricinin kullanıcı adı, makine ana makine adı (hostname) ve zaman damgası ile kaydedilir. Uyarılar yapılandırılmışsa, bir Aşama 1 formülü denendiğinde bir Slack veya PagerDuty bildirimi gönderilebilir — ki bu başlı başına faydalı bir sinyaldir: standart bir geliştirici makinesindeki biri parola kırıcı kurmaya çalıştı.
Meşru İstisnaları Ele Alma
EnterpriseBrew'daki istisna akışı departman düzeyinde çalışır:
- Geliştirici, dahili destek talebi sisteminiz üzerinden erişim talep eder
- Güvenlik ekibi inceler ve onaylar
- Yönetici, formülü talepte bulunan geliştiricinin departman izin listesine (allowlist) ekler (veya kullanım durumu için yeni bir departman kapsamı oluşturur — örn. "Güvenlik Mühendisliği")
- Geliştirici formülü kurabilir; kurulum, diğer herhangi bir kurulumla aynı denetim detayıyla loglanır
Genel bir izin listesinden (blanket allowlist) temel fark, istisnanın kapsamlı olmasıdır: güvenlik ekibi için nmap'i onaylamak, onu her geliştirici için onaylamaz. Ve onay kaydedilir — bir denetçi "kimin nmap yüklü ve neden" diye sorarsa, cevap politika logundadır.
Etkiyi Ölçme
Engelleme politikalarını etkinleştirdikten iki hafta sonra, denetim logunu çekin ve şunlara bakın:
- Formüle göre engelleme oranı — hangi paketler en sık deneniyor ve engelleniyor? Bir Aşama 1 formülündeki (örneğin
netcat) yüksek hacim, geliştiricilerin bunu meşru bir şey için kullandığını ve istisna sürecinin kolaylaştırılması gerektiğini gösterebilir. - İstisna talepleri — onaylar, geliştiricilerin politikanın etrafından dolaşmayacağı kadar hızlı mı?
- CVE maruziyeti — Aşama 3 paketleri (onaylı ancak izlenen) için, bilinen CVE'leri olan paketlere sahip kaç cihaz var? Denetçiler için önemli olan metrik budur.
Amaç sıfır engelleme denemesi oranı değildir. Engellemeler beklenen ve sağlıklı bir durumdur — politikanın işlediğini gösterir. İzlenmesi gereken metrik, meşru kullanım durumlarının istisna süreci aracılığıyla mı (iyi) yoksa proxy'yi atlatan doğrudan brew install komutları gibi geçici çözümler aracılığıyla mı (kötü ve denetim logu boşlukları aracılığıyla tespit edilebilir) ele alındığıdır.
Sonuç
Tehlikeli Homebrew paketlerini engellemek, geliştiricilerin işlerini yapmalarını engellemekle ilgili değildir. Yüksek riskli araçların açık bir gerekçe gerektirmesini, bu gerekçenin kaydedilmesini ve kuruluşun bir denetçinin "kimde ağ tarama yazılımı yüklü ve neden?" sorusunu iki haftalık bir araştırma yapmadan yanıtlayabilmesini sağlamakla ilgilidir.
Politika tanımlandıktan sonra teknik uygulama basittir: her kurulum isteğini bir engelleme listesine göre kontrol eden, her sonucu loglayan ve engellenen denemeleri güvenlik ekibine sunan merkezi bir proxy. Daha zor olan iş, aşamaları tanımlamak, net engelleme nedenleri yazmak ve geliştiricilerin kullanacağı kadar hızlı bir istisna süreci tasarlamaktır.
Süreci doğru kurgulayın, araçlar takip edecektir. Araçları doğru kurgulayın ve süreç geliştiriciler için görünmez hale gelecektir — ki tam olarak olması gereken yer burasıdır.