npm Paket Yayınlama Güvenlik Kuralları: Yeni Dönemin Tam Rehberi

npm, süresiz token’ları kaldırarak granular erişim, zorunlu 2FA ve trusted publishing sistemine geçiyor. Eski npm publish alışkanlıkları artık geçerli değil.

6 Kasım 2025 Perşembe 17:51
npm Paket Yayınlama Güvenlik Kuralları: Yeni Dönemin Tam Rehberi

Neden değişim gerekti?

npm, dünya çapında milyonlarca geliştiricinin kod dağıtımını yöneten en büyük ekosistem. Bu kadar geniş bir yapı, beraberinde büyük güvenlik riskleri de getiriyor. Geçmişte bazı popüler paketlerin hesapları ele geçirilerek zararlı sürümler yayınlandı — ve bu sürümler binlerce projeye otomatik olarak yüklendi.

Bu olaylar, “publish” sürecinin bir güvenlik eylemi haline gelmesi gerektiğini gösterdi. Artık sadece kod yazmak değil, yayın sürecini güvence altına almak da geliştiricinin sorumluluğunda.

Değişikliğin özeti

npm, klasik ve süresiz erişim token’larını devre dışı bırakıyor. Yerine:

  • Granular Access Token: Kısa ömürlü ve yalnızca belirli paketlere yetkili.

  • Trusted Publishing: CI/CD sistemleri kimliğini kanıtlayarak publish yapabiliyor.

  • Zorunlu 2FA: Hesabına erişim için ikinci faktör şart.

Bu adımların amacı, supply-chain saldırılarını minimize etmek — özellikle çalınan token’lar veya sızdırılmış CI anahtarları üzerinden yapılan kötü niyetli yayınları durdurmak.

Token modelleri nasıl değişti?

1. Classic / Legacy Token — Tarihe karışıyor

Bu token’lar süresizdi ve genellikle tüm paketlere erişim verebiliyordu. Güvenlik açısından en zayıf halka haline geldiler. Artık oluşturulamıyorlar; mevcut olanlar ise iptal ediliyor.

2. Granular Access Token — Yeni standart

Belirli paket(ler) için, sınırlı süreyle erişim tanımlayabiliyorsun.

  • Ömür: 7 gün (isteğe bağlı 90 güne kadar).

  • Yetki: Yalnızca ilgili paket ve eylemler (publish, read, vs).

  • Kullanım: Hem manuel publish hem de CI/CD senaryolarında.

Kısacası artık “tek anahtar = her şey” dönemi bitti.

3. Trusted Publishing — Yeni otomasyon çağı

GitHub Actions, GitLab CI ve benzeri platformlar artık kimliklerini OIDC (OpenID Connect) protokolüyle doğruluyor. Bu sayede repoda kalıcı token saklamadan publish yapılabiliyor.

Bu yöntem, “bir gün env’de unutulmuş token çalındı ve zararlı paket basıldı” riskini ortadan kaldırıyor.

2FA zorunluluğu ve kimlik doğrulama yöntemleri

Artık npm hesabına tek şifreyle girmek yetmiyor.
İki faktörlü kimlik doğrulama (2FA) zorunlu hale geldi ve aşamalar şu şekilde:

  1. WebAuthn / Passkey öncelikli.
    Fiziksel güvenlik anahtarı veya biometrik kimlik doğrulama en güvenli yöntem olarak belirlendi.

  2. TOTP uygulamaları (6 haneli kod)
    Bir süre daha çalışacak ama npm uzun vadede phishing’e dayanıklı passkey modeline tam geçiş planlıyor.

  3. npm login komutu
    Artık kalıcı token üretmiyor; oturum bazlı geçici yetki veriyor.
    Bu, “local’den login olup sonsuz token elde etme” alışkanlığını bitiriyor.

Sonuç: Her publish, her login artık güvenlik zincirinin bir halkası.

Bu değişiklikler neden önemli?

Eskiden çalıntı bir token, tüm paketlerini etkileyebilirdi.
Yeni sistemde ise:

  • Token ömrü çok kısa → saldırganın zaman penceresi dar.

  • Yetki kapsamı küçük → sadece tek paketi vurabilir.

  • 2FA zorunlu → hesap çalınsa bile publish yetkisi kullanılamaz.

npm bu yaklaşımla “saldırı yüzeyini” azaltıyor.
Ayrıca şirketler ve open source maintainer’lar için güven artışı sağlıyor.
Artık her yayın işlemi, dijital bir imza gibi doğrulanabiliyor.

Geliştiriciler için geçiş rehberi

Bu değişim sürecini sorunsuz atlatmak için uygulayabileceğin adımlar:

1- 2FA’yı hemen aktif et

  • npm profilinde güvenlik sekmesine gir.

  • Passkey veya donanım anahtarı ekle.

  • TOTP kodları yedeğini güvenli bir yerde sakla.

2- Eski token’ları temizle

  • npmjs.com → Access Tokens sayfasını kontrol et.

  • “Sınırsız erişimli token” görürsen iptal et.

  • Yeni oluşturacağın token’larda scope ve expiry tanımla.

3- Granular token kullan

  • Her paket için ayrı token oluştur.

  • Kullanım bittikten sonra manuel olarak kaldır.

  • Token’ı CI/CD’ye entegre edeceksen geçerlilik süresini minimumda tut.

4- Trusted publishing’e geç

  • GitHub Actions kullanıyorsan, OIDC kimlik doğrulamasını aç.

  • id-token: write iznini aktif et.

  • Böylece kalıcı NPM_TOKEN saklamadan publish yapabilirsin.

  • Diğer CI araçları da yakında aynı mekanizmayı destekleyecek.

5- Dokümantasyonunu güncelle

  • README’ye “Bu paket trusted publishing ile yayınlanmaktadır” notu ekle.

  • Katkı yapacak geliştiricilere 2FA gereksinimini belirt.

Bu adımlar, hem kendi projeni hem de kullanıcılarını korur.

Organizasyonlar ve takımlar için ek notlar

Kurumsal takımlar ve çok geliştiricili open source projeler için:

  • Tüm maintainer’lar için 2FA zorunlu hale gelecek.

  • Token yetkileri roller bazında tanımlanacak.

  • Hangi üye hangi pakete publish edebiliyor bilgisi açık görünecek.

  • Denetim (log) kayıtları ile her yayın geri izlenebilir olacak.

Bu düzen sayesinde, kurumsal paketlerde yetki karmaşası ve hesap paylaşımı problemi sona erecek.

Ekosistem ve gelecek vizyonu

Bu adımlar npm’in geleceğini daha kurumsal ve güvenli bir zemine taşıyor.
Bir bakıma “npm publish” artık sıradan bir komut değil; resmî bir imza işlemi.

Kullanıcılar, geliştiricilere ve markalara daha fazla güven duyabilecek.
Paket indiren herkes şunu bilecek:

Bu yayın, gerçekten sahibi tarafından doğrulandı.

npm böylece ekosistem bazında bir “güven sertifikası” modeline doğru ilerliyor.

Son düşünceler

Kısa vadede bazı geliştiriciler için ekstra adımlar gibi görünebilir ama uzun vadede açık kaynak ekosisteminin sağlamlaşması anlamına geliyor.

Artık hiçbir CI hatası, hiçbir unutulmuş token veya şifre sızıntısı toplu felakete neden olmayacak.

Yeni dönemin özeti:

  • Kısa ömürlü ve kısıtlı yetkili token’lar

  • Zorunlu ve phishing’e dayanıklı 2FA

  • OIDC tabanlı kimlik doğrulama

  • Geliştirici ve kurumlar için tam izlenebilirlik

Bu kurallar artık sadece “güvenlik önerisi” değil, npm ekosisteminin temel standartları.

Sonuç olarak:
npm publish = güvenlik olayıdır.
Ve bu bilinci benimseyen her geliştirici, ekosistemin daha güvenli bir geleceğine katkı sağlıyor.

Kategoriler
Etiketler
Erhan AKKAYA

Erhan AKKAYA

FrontEnd Architect | UI&UX Specialist

Hazır mısın? Birlikte harika şeyler yapalım!

İletişime Geç!

Dumanla haberleşmede iyiyiz ama sorularını yanıtlamanın daha basit yolları da var.

İletişim