npm'e 2fa zorunluluğu ve aşamalı yayınlama özelliği geldi
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:
- saldırgan bir maintainer’ın tokenını çalıyor
- zararlı kod ekleyip yeni versiyon yayınlıyor
- binlerce proje otomatik güncelliyor
- herkes ağlıyor
yeni sistemde:
- saldırgan token çalsa bile paket “staging” alanına düşüyor
- gerçek maintainer 2fa ile onaylamadıkça paket public olmuyor
- maintainer zararlı kodu fark ediyor
- 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ı Tipi | Durum |
|---|---|
| npm paket maintainer’ları | ✅ kullanmalı |
| organizasyonlar | ✅ kesinlikle kullanmalı |
| open source projeleri | ✅ şiddetle tavsiye |
| bireysel developerlar | ✅ önerilir |
nasıl aktif edersiniz
staged publishing için:
- npm hesabınıza girin
- paket ayarlarına gidin
- “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.
