GitHub Package Firewall: npm Paketlerini Kurulmadan Önce Denetleyen Güvenlik Duvarı, Politikalar ve .npmrc Kurulumu

Alesta WEB

GitHub Package Firewall: npm Paketlerini Kurulmadan Önce Denetleyen Güvenlik Duvarı, Politikalar ve .npmrc Kurulumu

Kısa cevap: GitHub, 20 Ekim 2026'da package firewall (paket güvenlik duvarı) özelliğini herkese açık önizlemeye aldı. Hizmet, geliştirici makineleri, CI sunucuları ve kodlama ajanlarıyla npm kayıt deposu arasına giriyor ve paket indirilmeden önce denetim yapıyor. Varsayılan politika bilinen zararlı paketleri, kritik açıklı sürümleri, yeni eklenmiş postinstall gibi kurulum betiklerini ve SLSA kanıtı (attestation) düşürülmüş sürümleri engelliyor; ayrıca yayımlanalı en az 1 gün olmayan sürümleri bekletiyor. Şimdilik yalnız npm destekleniyor, yalnız GitHub Enterprise Cloud müşterilerine açık ve önizleme süresince ücretsiz.

Boru hattında süzülen paketleri temsil eden çizim (Illustration of packages filtered in a pipeline)
Güvenlik duvarı, paketleri geliştirici makinesine ve CI'a ulaşmadan önce politikaya göre süzüyor. Fotoğraf: Growtika / Unsplash

Neden paket güvenlik duvarı? (Why a package firewall)

Son iki yılın npm tedarik zinciri saldırılarının ortak noktası, zararlı kodun paketin kurulduğu anda çalışması. Ele geçirilen bir geliştirici hesabından yeni bir sürüm yayımlanıyor, sürüme bir postinstall betiği ekleniyor ve npm install çalıştıran her makine ilk dakikalarda etkileniyor. Shai-Hulud türü solucanlar bu yolla geliştirici jetonlarını çalıp kendini başka paketlere yaydı. Dependabot ya da kod taraması gibi araçlar sorunu paket projeye girdikten sonra görüyor; kurulum betiği o sırada çoktan çalışmış oluyor.

GitHub'ın package firewall'u bu boşluğu hedefliyor. Hizmet uç noktalar (geliştirici makinesi, CI ana makinesi, kodlama ajanı) ile üst kayıt deposu arasında vekil (proxy) gibi çalışıyor. Hem paket meta veri isteklerini hem de paket indirmelerini kurum politikasına göre değerlendiriyor ve uygun olmayanı daha makineye ulaşmadan durduruyor.

Politika seçenekleri (Policy controls)

Politika kurum (enterprise) düzeyinde Policies > Package firewall ekranından ayarlanıyor. GitHub belgelerindeki denetimler ve varsayılanlar şöyle:

DenetimNe yapar?Varsayılan
Bilinen zararlı yazılımı engelleGitHub Advisory Database'de etkin zararlı yazılım kaydı olan paketleri engellerAçık
Güvenlik açığı kayıtlarını engelleSeçilen önem düzeyindeki açıklardan etkilenen sürümleri engeller (yalnız kritik / yüksek ve üstü / orta ve üstü / tümü)Yalnız kritik
Kanıt düşürmeyi engelleÖnceki sürümlerinde SLSA kanıtı olan bir paketin kanıtsız yeni sürümünü engellerAçık
Yeni kurulum betiklerini engelleDaha önce olmayan preinstall/postinstall gibi kurulum betiği ekleyen sürümleri engellerAçık
En düşük paket yaşıYayımlanalı belirlenen süreyi doldurmamış sürümleri bekletir (1–365 gün, 0 kapatır)1 gün

Bu beş denetimden ikisi özellikle değerli. Kanıt düşürme denetimi, ele geçirilen hesapla elle yayımlanan sürümleri yakalıyor: normalde CI'dan kanıtlı yayımlanan bir paketin birden kanıtsız sürüm çıkarması güçlü bir alarm işareti. En düşük yaş (cooldown) ise zararlı sürümlerin çoğunun birkaç saat içinde fark edilip kaldırılmasından yararlanıyor. 1 günlük bekleme bile ilk dalgayı atlatmaya çoğu zaman yetiyor. Daha temkinli kurumlar bu süreyi 3–7 güne çıkarabilir.

Kurulum: .npmrc ayarı (Setup)

Politikayı ayarladıktan sonra npm'in paketleri doğrudan kayıt deposundan değil, güvenlik duvarından çekmesi gerekiyor. Adres biçimi şu (ENTERPRISE yerine kurumun kısa adı yazılır):

Metin
https://package-firewall.githubapp.com/npm/enterprises/ENTERPRISE

Kullanıcı düzeyindeki .npmrc dosyasına iki satır ekleniyor:

Metin
registry=https://package-firewall.githubapp.com/npm/enterprises/ENTERPRISE
//package-firewall.githubapp.com/npm/enterprises/ENTERPRISE/:_authToken=${GITHUB_TOKEN}

Aynı ayar komutla da yapılabilir:

Bash
npm config set registry \
  https://package-firewall.githubapp.com/npm/enterprises/ENTERPRISE
npm config set \
  '//package-firewall.githubapp.com/npm/enterprises/ENTERPRISE/:_authToken=${GITHUB_TOKEN}'

Her istek, kurum üyesi bir kullanıcıya ya da bot hesabına ait bir jetonla yapılmalı. Jetonun yalnız herkese açık depolara salt okuma yetkisi olması yeterli. Jeton GITHUB_TOKEN ortam değişkeninde tutulmalı; CI'da gizli değer olarak saklanmalı, depoya asla yazılmamalı. Artifactory kullanan kurumlar için deneysel destek var; bu durumda Artifactory'deki doğrudan npm'e giden uzak depoların kapatılması gerekiyor, yoksa güvenlik duvarı atlanmış olur.

Engellenen paket için istisna (Exception requests)

Bir paket yanlışlıkla engellenirse npm çıktısında ya da CI günlüğünde bir istisna isteği bağlantısı çıkıyor. Geliştirici bağlantıyı açıp depo, paket adı, sürüm ve gerekçeyi içeren önceden doldurulmuş formu gönderiyor. Kurum yöneticileri ve güvenlik yöneticileri istekleri Security and quality > Package firewall bypass ekranında inceliyor. Onaylarken sürümü * yaparak paketin tüm sürümlerine izin verebiliyorlar. Onaylanan istisnalar Policies > Package firewall > Overrides altında listeleniyor ve oradan kaldırılabiliyor. Politikayı düzenleme yetkisi özel bir rolle bir ekibe de devredilebiliyor.

Sınırlar ve ücret (Limitations and pricing)

  • Yalnız npm: PyPI, Maven, Composer ya da NuGet desteği şimdilik yok.
  • Yalnız Enterprise Cloud: veri yerleşimli (data residency) Enterprise Cloud dahil. Bireysel, Team ve GitHub Enterprise Server kullanıcıları yararlanamıyor.
  • Koruma yalnız yönlendirilen trafik için: .npmrc ayarı yapılmamış bir makine ya da CI işi doğrudan kayıt deposuna gider ve korunmaz.
  • Ücret: önizleme süresince ücretsiz. Genel kullanıma geçince Actions'a benzer biçimde kullanım bazlı ücretlendirilecek.
  • Önizleme: özellikler ve ekranlar değişebilir.

Enterprise olmayanlar ne yapabilir? (Alternatives)

Package firewall'un yaptığı denetimlerin bir kısmı her ekip için ücretsiz olarak uygulanabiliyor:

  • Kurulum betiklerini kapatın: CI'da npm ci --ignore-scripts ile kurup yalnız güvendiğiniz paketlerin betiklerini ayrıca çalıştırın.
  • Kilit dosyasını zorunlu tutun: CI'da npm install yerine npm ci kullanın; package-lock.json dışında sürüm çekilmesin.
  • Bekleme süresi: pnpm'deki minimumReleaseAge ayarını, Dependabot'ta ise cooldown seçeneğini kullanarak yeni sürümleri birkaç gün bekletin.
  • Jetonları daraltın: npm yayın jetonlarını kısa ömürlü tutun, mümkünse güvenilir yayımlama (trusted publishing) ile CI'dan kanıtlı yayımlayın.

Alesta WEB olarak JavaScript projelerinde bağımlılık güncellemelerinin kilit dosyasıyla sabitlenmesini ve tek tek gözden geçirilmesini öneriyoruz; GitHub'ın yeni özelliği bu elle yapılan işin bir kısmını kurum düzeyinde otomatiğe bağlıyor. Aynı haftada duyurulan Actions kilit dosyası ile birlikte düşünüldüğünde GitHub'ın tedarik zinciri güvenliğini kurulum öncesine taşıdığı görülüyor.

Sık sorulan sorular

Package firewall ücretsiz mi?

Önizleme süresince ücretsiz. Genel kullanıma geçtiğinde kullanım bazlı ücretlendirilecek.

Python (pip) ya da PHP (Composer) paketlerini de koruyor mu?

Hayır, şimdilik yalnız npm destekleniyor. GitHub başka ekosistemler için bir tarih açıklamadı.

1 günlük bekleme acil güvenlik yamasını da geciktirir mi?

Evet, en düşük yaş kuralı tüm yeni sürümlere uygulanıyor. Acil bir yama için istisna isteği açılabilir ya da yönetici süreyi geçici olarak değiştirebilir.

Kodlama ajanlarını da kapsıyor mu?

GitHub, kodlama ajanlarını ve CI ana makinelerini korunacak uç noktalar arasında sayıyor. Ajanın çalıştığı ortamdaki npm ayarının güvenlik duvarını göstermesi yeterli.

İlgili yazılar: GitHub Actions kilit dosyası · npm Shai-Hulud solucanı · GitHub AI Scan · Web yazılım hizmetleri · İletişim

Kapak fotoğrafı: FlyD / Unsplash

Hazır mısınız?

Projenizi birlikte planlayalım

Haber sitesi, adisyon, QR menü ya da kurumsal web sitesi — ihtiyacınızı dinleyelim, demo hesabı açalım ve yazılı teklifimizi iletelim. Görüşme ücretsizdir.

WhatsAppAra