iToverDose/Yazılım· 15 MAYIS 2026 · 20:01

TanStack npm tedarik zinciri saldırısı: CI’nin tehlikeli varsayımı nasıl istismar edildi?

11 Mayıs 2026’da gerçekleşen TanStack npm saldırısı, açık kaynak projelerindeki `pull_request_target` kullanımının ne kadar riskli olduğunu gözler önüne serdi. Saldırganlar sadece 6 dakika içinde 42 pakete 84 kötü niyetli sürüm yayınladı ve milyonlarca geliştiriciyi tehdit etti.

DEV Community4 dk okuma0 Yorumlar

11 Mayıs 2026 tarihinde, açık kaynak ekosisteminde büyük bir güvenlik ihlali yaşandı. TanStack paketlerinin npm deposuna yapılan saldırı, yalnızca 6 dakika içinde 42 farklı pakete ait 84 kötü niyetli sürümün yayınlanmasıyla sonuçlandı. Bu olay, CI/CD pipeline’larında sıkça kullanılan pull_request_target özelliğinin ne kadar tehlikeli olabileceğini bir kez daha gözler önüne serdi. Peki, saldırganlar bu karmaşık zinciri nasıl kurdu ve sistemler nasıl savunmasız kaldı?

Saldırının arkasındaki üç zayıflık zinciri

Saldırganlar, TanStack’in GitHub depolarındaki üç farklı güvenlik açığından yararlanarak bu saldırıyı gerçekleştirdi. İlk olarak, pull_request_target adlı GitHub Actions özelliği kullanıldı. Bu özellik, bir pull request’in taban depoya ait yetkilendirmeyle çalıştırılmasına olanak tanır. Ancak, TanStack’in deposunda ilk katkıcı onayı gerektirmeyen bir yapılandırmaya sahipti.

İkinci olarak, saldırganlar paket önbellek sistemini hedef aldı. TanStack’in CI pipeline’ında kullanılan pnpm önbelleği, saldırganın kötü niyetli kodunu barındıran bir depo olarak kullanıldı. Üçüncü olarak, saldırganlar, CI runner’larının belleğinden kısa ömürlü yayınlama token’larını çıkarmayı başardı. Bu token’lar, saldırganın saldırgan paketleri yayınlamasını sağladı.

name: bundle-size.yml
on:
  pull_request_target:
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.merge_commit_sha }}
      - run: pnpm nx run @benchmarks/bundle-size:build

Bu üç zayıflık zincirinin birleşmesiyle saldırganlar, saldırgan paketleri doğrudan npm deposuna yayınlayabildi. Üstelik, bu saldırı sırasında hiçbir geliştiriciye ait token çalınmadı ya da kimse phishing saldırısına maruz kalmadı.

Kötü niyetli paketler nasıl çalışıyor?

Saldırganlar, npm install komutunu çalıştıran tüm geliştiricileri hedef aldı. npm install, pnpm install veya yarn install komutları, saldırganın eklediği optionalDependencies dizisini takip ediyor. Bu dizi, saldırganın kötü niyetli paketine yönlendiriliyor ve router_init.js adlı bir komut dosyasını çalıştırıyor.

Bu komut dosyası aşağıdaki işlemleri gerçekleştiriyor:

  • Tüm kimlik bilgilerini çalıyor: Geliştiricilerin yerel makinelerinde ve CI runner’larında bulunan tüm kimlik bilgilerini topluyor. Bunlar arasında ~/.npmrc dosyası, GitHub token’ları, SSH özel anahtarları ve bulut platformu kimlik bilgileri bulunuyor.
  • Çalınan bilgileri gizlice dışarı aktarıyor: Session Messenger adlı şifrelenmiş bir mesajlaşma uygulaması üzerinden çalınan bilgileri dışarı aktarıyor. Bu işlem, ağ izleme araçları tarafından tespit edilemiyor, çünkü trafik Session Messenger’a ait normal bir trafik gibi görünüyor.
  • Yayılmaya çalışıyor: Bu saldırı, bir solucan gibi çalışıyor. Bir geliştiricinin makinesi saldırıya uğradığında, saldırganın paketleri diğer geliştiricilere de bulaşıyor. Bu zincirleme saldırı, milyonlarca geliştiriciyi tehdit ediyor.

Hangi paketler etkilendi ve kimler risk altında?

Saldırı sırasında yayınlanan 84 kötü niyetli sürüm, 42 farklı TanStack paketine ait. Saldırının gerçekleştiği tarih olan 11 Mayıs 2026’da, bu paketlerden herhangi birini kuran tüm geliştiriciler risk altında. TanStack ekibi, saldırıya uğrayan paketleri aşağıdaki gibi sınıflandırdı:

  • Etkilenen paketler: @tanstack/router, @tanstack/query, @tanstack/table, @tanstack/form, @tanstack/virtual, @tanstack/store ve @tanstack/start meta paketi.
  • Etkilenmeyen paketler: @tanstack/start-* ailesine ait paketler.

Eğer 11 Mayıs 2026 tarihinde bu paketlerden herhangi birini yüklediyseniz, sisteminizi saldırıya karşı taramanız ve tüm kimlik bilgilerinizi yenilemeniz gerekiyor.

Derin bir bakış: CI’nız da aynı risk altında mı?

Bu saldırı, yalnızca TanStack’e özgü bir risk değil. Aynı mantık, birçok açık kaynak projesinde ve ticari projede de kullanılabilen pull_request_target özelliğine dayanıyor. Eğer CI pipeline’ınızda pull_request_target kullanıyorsanız ve bu workflow’lar, fork’lardan gelen kodları çalıştırıyorsa, sisteminiz benzer bir saldırıya karşı savunmasız olabilir.

Güvenlik uzmanları, pull_request_target kullanımının kötü bir uygulama olduğunu uzun süredir vurguluyor. Bu özelliğin yerine, daha güvenli alternatifler kullanılması öneriliyor. Örneğin, pull_request eventi yerine pull_request_target kullanmak yerine, ilk katkıcı onayı gerektiren bir yapılandırma kullanılabilir.

Ne yapmalısınız? Adım adım kurtarma rehberi

Eğer saldırıdan etkilendiyseniz, aşağıdaki adımları izleyerek sisteminizi korumaya alabilirsiniz:

  1. Lockfile’ınızı kontrol edin: Eğer package-lock.json, pnpm-lock.yaml veya yarn.lock dosyanızda 11 Mayıs 2026 tarihine ait @tanstack/* paketleri varsa, sisteminiz saldırıya uğramış olabilir. Bu paketlerin optionalDependencies dizisinde, saldırganın kötü niyetli paketine yönlendiren bir giriş bulunabilir.
  1. Tüm kimlik bilgilerinizi yenileyin: AWS, GCP, Kubernetes, Vault, GitHub, npm ve SSH kimlik bilgilerinizi yenileyin. Saldırganın çalmış olabileceği tüm kimlik bilgilerini değiştirin.
  1. Bilinen güvenli sürümlere geçin: TanStack ekibi, saldırıya uğrayan tüm 84 sürümü kullanımdan kaldırdı. npm depo yöneticileri de bu paketlerin tarball’larını kaldırdı. Bu nedenle, bilinen güvenli bir sürüme geçmeniz gerekiyor.
  1. CI pipeline’ınızı denetleyin: Eğer pull_request_target kullanıyorsanız, bu workflow’ların fork’lardan gelen kodları çalıştırıp çalıştırmadığını denetleyin. Eğer çalıştırıyorsa, sisteminiz benzer bir saldırıya karşı savunmasız olabilir.
  1. Güvenlik araçlarını kullanın: zizmor gibi güvenlik araçlarını kullanarak, CI pipeline’larınızı ve workflow’larınızı denetleyin. Bu araçlar, olası güvenlik açıklarını tespit etmenize yardımcı olacaktır.

Gelecekteki saldırılardan korunmak için ne yapılmalı?

Bu saldırı, açık kaynak ekosistemindeki güvenlik açıklarının ne kadar ciddi olabileceğini bir kez daha gösterdi. Gelecekte benzer saldırılardan korunmak için aşağıdaki adımları izleyebilirsiniz:

  • CI pipeline’larınızı gözden geçirin: pull_request_target kullanımından mümkün olduğunca kaçının. Eğer kullanmanız gerekiyorsa, ilk katkıcı onayı gerektiren bir yapılandırma kullanın.
  • Kimlik bilgilerinizi yönetin: Yerel makinelerinizde ve CI runner’larınızda bulunan tüm kimlik bilgilerini yönetin. Bu kimlik bilgilerini mümkün olduğunca az kullanın ve mümkün olan en kısa sürede yenileyin.
  • Güvenlik araçlarını kullanın: CI pipeline’larınızı ve workflow’larınızı denetlemek için güvenlik araçlarını kullanın. Bu araçlar, olası güvenlik açıklarını tespit etmenize yardımcı olacaktır.
  • Açık kaynak projelerini destekleyin: Açık kaynak projelerinin güvenliğini artırmak için zaman ve kaynak ayırın. Bu projeler, milyonlarca geliştiriciye hizmet veriyor ve onların güvenliği için çalışıyor.

Yapay zeka özeti

11 Mayıs 2026’daki TanStack npm saldırısı, `pull_request_target` kullanımının ne kadar riskli olduğunu gösterdi. CI pipeline’larınızı nasıl koruyacağınızı ve kurtarma adımlarını öğrenin.

Yorumlar

00
YORUM BIRAK
ID #X77F6T

0 / 1200 KARAKTER

İnsan doğrulaması

4 + 7 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.