npm'e 2fa zorunluluğu ve aşamalı yayınlama özelliği geldi

Posted on 24 May 2026

arkadaşlar, github npm için ciddi güvenlik özellikleri eklemiş. artık paket yayınlamadan önce 2fa ile onay zorunlu olacak ve paketler aşamalı olarak yayınlanacak. supply chain saldırılarına karşı güzel bir hamle olmuş.

ne var ne yok

github, npm için “staged publishing” denen bir özellik getirmiş. yani şöyle ki, bir paket yayınlamak istediğinizde direkt npm registry’e düşmüyor. önce bir onay aşamasından geçiyor ve insan bir maintainer 2fa challenge’ını geçmeden paket herkese açılmıyor.

spoiler: bu özellik artık genel kullanıma açık, yani herkes kullanabilir.

mantık şu: otomatik sistemler paketi hazırlasın, ama son onayı insan versin. böylece ci/cd pipeline’ınız hacklendiğinde bile zararlı paket direkt npm’e düşmüyor. bir de 2fa zorunluluğu var, yani token çalınsa bile işe yaramaz.

neden önemli bu

supply chain saldırıları son yıllarda iyice arttı. saldırganlar popüler paketleri ele geçirip zararlı kod enjekte ediyor, sonra milyonlarca proje bu paketleri kuruyor. işte bu özellik tam da bunu engellemek için.

klasik senaryo şöyle:

  1. saldırgan bir maintainer’ın tokenını çalıyor
  2. zararlı kod ekleyip yeni versiyon yayınlıyor
  3. binlerce proje otomatik güncelliyor
  4. herkes ağlıyor

yeni sistemde:

  1. saldırgan token çalsa bile paket “staging” alanına düşüyor
  2. gerçek maintainer 2fa ile onaylamadıkça paket public olmuyor
  3. maintainer zararlı kodu fark ediyor
  4. kimse ağlamıyor

özellikler

staged publishing (aşamalı yayınlama):

  • paket önce staging alanına düşüyor
  • maintainer 2fa ile onaylıyor
  • ondan sonra npm registry’e geçiyor
  • otomatik sistemler hazırlasın, insan onaylasın mantığı

2fa zorunluluğu:

  • sadece token yetmiyor artık
  • publish için 2fa challenge geçmek zorundasınız
  • token çalınsa bile işe yaramaz

paket kurulum kontrolleri:

  • hangi paketlerin kurulabileceğini kontrol edebiliyorsunuz
  • organizasyon seviyesinde politikalar koyabiliyorsunuz
  • zararlı veya onaylanmamış paketleri engelleyebiliyorsunuz

kimler için bu özellik

Kullanıcı TipiDurum
npm paket maintainer’ları✅ kullanmalı
organizasyonlar✅ kesinlikle kullanmalı
open source projeleri✅ şiddetle tavsiye
bireysel developerlar✅ önerilir

nasıl aktif edersiniz

staged publishing için:

  1. npm hesabınıza girin
  2. paket ayarlarına gidin
  3. “staged publishing” seçeneğini aktif edin
# veya npm cli ile
npm access staged-publish enable <paket-adı>

# durumu kontrol edin
npm access staged-publish status <paket-adı>

2fa aktif etmek için:

# 2fa'yı aktif edin (zaten aktifse atlayın)
npm profile enable-2fa auth-and-writes

# durumu kontrol edin
npm profile get

paket yayınlama süreci artık şöyle:

# paketi hazırlayın (ci/cd'de olabilir)
npm publish

# bu paket staging'e düşer
# npm size bir link verir, oraya gidin

# web arayüzünde 2fa ile onaylayın
# ondan sonra paket public olur

organizasyonlar için ek kontroller

npm artık organizasyon seviyesinde paket kurulum politikaları tanımlamanıza izin veriyor. yani hangi paketlerin kurulabileceğini, hangi registry’lerin kullanılabileceğini kontrol edebiliyorsunuz.

# organizasyon politikalarını görüntüleyin
npm org ls-policies <org-adı>

# yeni politika ekleyin
npm org set-policy <org-adı> --policy-file=policy.json

örnek politika dosyası:

{
  "allowed_registries": ["https://registry.npmjs.org"],
  "blocked_packages": ["paket-adı"],
  "require_2fa": true,
  "staged_publishing": true
}

tavsiyeler

maintainer’lar için:

  • hemen staged publishing’i aktif edin, ciddi ciddi
  • 2fa’yı açın, sadece auth için değil writes için de
  • ci/cd pipeline’ınızı bu yeni akışa göre güncelleyin
  • token’larınızı rotate edin düzenli olarak

organizasyonlar için:

  • paket kurulum politikaları tanımlayın
  • hangi registry’lerin kullanılacağını belirleyin
  • tüm maintainer’ların 2fa kullanmasını zorunlu kılın
  • staging sürecini dokümante edin

developer’lar için:

  • bağımlılıklarınızı düzenli kontrol edin
  • lock file’ları commit edin (package-lock.json)
  • npm audit çalıştırın düzenli olarak
  • şüpheli paket güncellemelerini inceleyin
# bağımlılıkları kontrol edin
npm audit

# detaylı rapor için
npm audit --json

# otomatik düzeltme (dikkatli kullanın)
npm audit fix

dikkat edilmesi gerekenler

önemli: staged publishing ci/cd pipeline’ınızı etkileyecektir. otomatik deployment yapıyorsanız, sürecinize manuel onay adımı eklemeniz gerekir.

edit: bu özellik sadece yeni paketler için değil, mevcut paketler için de aktif edilebilir. ama bir kere aktif ettikten sonra geri alamazsınız (en azından kolayca).

dikkat: 2fa’yı kaybederseniz hesabınıza erişemezsiniz. recovery kodlarınızı güvenli bir yerde saklayın.

test etmek için

önce test paketinizle deneyin, sonra production paketlerinize geçin:

# test paketi oluşturun
mkdir test-staged-publish
cd test-staged-publish
npm init -y

# staged publishing'i aktif edin
npm access staged-publish enable test-staged-publish

# paketi yayınlayın
npm publish

# staging linkine gidin ve onaylayın

kaynaklar


sonuç olarak github npm için güzel bir güvenlik hamlesi yapmış. supply chain saldırıları gerçekten ciddi bir sorun ve bu tür önlemler şart. biraz ekstra iş çıkaracak ama güvenlik için değer.

maintainer’sanız hemen aktif edin bu özellikleri. organizasyonsanız politikalarınızı tanımlayın. developer’sanız bağımlılıklarınızı kontrol edin.

bu arada: bu özellikler ücretsiz, npm hesabı olan herkes kullanabilir.

şimdilik bu kadar, sorularınız varsa npm dokümantasyonuna bakın veya github support’a yazın.

Bu içerik yapay zeka tarafından oluşturulmuştur.