3 puan yazan GN⁺ 2025-08-29 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Nx paketi ve eklentilerinin kötü amaçlı sürümleri npm'e dağıtıldı; bunlar dosya sistemini tarayıp kimlik bilgilerini topladıktan sonra kullanıcının Github hesap deposuna gönderiyor
  • Etkilenip etkilenmediğinizi doğrulamak için Github hesabınızda s1ngularity-repository deposunun oluşturulup oluşturulmadığını kontrol etmeniz gerekiyor
  • Enfekte olduysanız token ve parolaları değiştirmek, kötü amaçlı depoyu silmek ve kabuk yapılandırma dosyalarını incelemek mutlaka gerekli
  • Kötü amaçlı sürümler sisteme postinstall betiği ile etki ediyor; özellikle VSCode Nx Console eklentisi kullanılırken farkında olmadan çalıştırılma riski artıyor
  • Nx ekibi yeniden yaşanmayı önleyici ve ek güvenlik önlemlerini devreye aldı; ilgili sürümler npm'den kaldırıldı

Genel bakış ve özet

  • Bu güvenlik duyurusu, Nx paketi ve bazı ilişkili eklentilere yönelik ciddi bir tedarik zinciri saldırısıyla ilgili; kötü amaçlı kod npm üzerinden dağıtıldı
  • Söz konusu kötü amaçlı sürümler, kullanıcının dosya sistemini tarayarak kimlik bilgileri, yollar ve benzeri verileri topluyor ve bunları Github deposuna (s1ngularity-repository) yüklüyor
  • Kötü amaçlı postinstall betiği ayrıca kullanıcının kabuk yapılandırma dosyalarını (.zshrc, .bashrc) değiştirerek sistem kapatma komutu ekliyor
  • Saldırı vektörü, saldırının ilerleyişi, etkilenen sürümler, kullanıcıların alması gereken acil önlemler ve tekrarını önleme adımları ayrıntılı biçimde özetleniyor

Acil müdahale yöntemi

Herkesin kontrol etmesi gerekenler

  1. Kendi Github hesabınızdaki depo listesinde s1ngularity-repository oluşturulup oluşturulmadığını kontrol edin
  2. İlgili depoda yer alan dosyaları indirip kayıt altına alın
  3. Depoyu Github'dan silin
  4. security@nrwl.io adresine e-posta göndererek sızan bilgilerin nasıl çözümleneceğine dair yönlendirme alın
  5. Tüm hesapların kimlik bilgilerini ve token'larını derhal değiştirin

Github token'ı nasıl değiştirilir

  • https://github.com/settings/connections/… adresini ziyaret edin
  • Bağlı uygulamanın erişim izinlerini kaldırarak mevcut token'ı geçersiz kılın
  • gh CLI kullanıyorsanız yeniden kimlik doğrulaması yaparak yeni token oluşturun
  • Önlem alınmazsa mevcut token kötüye kullanılma riski taşır

Kötü amaçlı Nx sürümünü kullanmayı durdurma ve temizleme

  • Şu anda kullandığınız Nx sürümünün kötü amaçlı sürüm olup olmadığını npm ls nx komutuyla kontrol edin
  • Enfekte sürümse npm uninstall nx && npm install nx@latest ile güncelleyin
  • npm cache clean --force ile önbelleği temizleyin

Zaten enfekte olmuş kullanıcılar

  • npm ve Github token'larını değiştirin
  • Github ve ilişkili hizmetlerdeki tüm parolaları ve kimlik bilgilerini sıfırlayın
  • .zshrc, .bashrc dosyalarında yabancı komutlar eklenip eklenmediğini kontrol edip silin

Kurum içi paket deposu yöneticileri için

  • Kurum içi proxy kayıt defterinden kötü amaçlı sürümleri derhal silerek ek yayılımı engellemek gerekiyor

Etkilenen sürümler

Nx paketi

  • 21.5.0, 20.9.0, 20.10.0, 21.6.0, 20.11.0, 21.7.0, 21.8.0, 20.12.0
  • 10:44 PM EDT itibarıyla npm'den kaldırıldı

@nx/devkit, @nx/js, @nx/workspace, @nx/node, @nx/eslint, @nx/key, @nx/enterprise-cloud

  • 10:44 PM ve 6:20 AM EDT itibarıyla npm'den kaldırıldı

Saldırı vektörünün ayrıntıları

Zafiyetli workflow'nun nedeni

  • Github Actions workflow'suna rastgele kod çalıştırmaya izin veren bir zafiyet eklendi
  • PR başlığına belirli bir bash kodu eklenince workflow içinde sistem komutlarının çalışmasına yol açan bir zafiyet vardı (Bash Injection)
  • pull_request_target tetikleyicisi üzerinden yükseltilmiş yetkiler (GITHUB_TOKEN vb.) edinildiği için kötüye kullanıldı
  • Silinmeden önce ana dal dışındaki eski bir dalda zafiyetli workflow korunuyordu; saldırgan bu sayede kötü amaçlı bir PR ile workflow'yu çalıştırıp secret'ları çalmayı başardı

npm token'ının ele geçirilme süreci

  • Zafiyetli workflow üzerinden publish.yml çalıştırıldı
  • publish.yml, npm token'ını Github Secrets'ta saklıyordu; bu süreçte token harici bir webhook'a gönderildi
  • Sonuçta saldırgan bu token ile Nx ve destek paketlerinin kötü amaçlı sürümlerini npm'e yükledi

Kötü amaçlı paketin davranışı

Kimlik bilgileri dahil bilgilerin toplanması ve Github deposunda yayımlanması

  • Enfekte Nx paketinin postinstall betiği çalıştığında çeşitli metin dosyalarının konumları ve kimlik bilgileri toplanıyor
  • Veriler s1ngularity-repository adlı Github deposuna base64 ile kodlanarak yükleniyor
  • Gerçek depo silinmiş olsa bile daha önce herkese açık durumdaydı; bu yüzden bilgi sızıntısı ihtimali göz önünde bulundurulmalı

Kabuk profillerinin (.zshrc, .bashrc) tahrif edilmesi

  • postinstall, sudo shutdown -h 0 komutunu ekleyerek terminal çalıştığında sistemin kapanmasına yol açabiliyor ve parola ifşasına neden olabiliyor

postinstall'ın çalışabildiği çeşitli senaryolar

  • Açıkça npm install / yarn / pnpm install çalıştırmanın dışında, geçişli bağımlılıklar, editör eklentileri ve betik çalıştırmaları gibi çeşitli durumlarda da devreye girebilir

  • Özellikle VSCode için Nx Console eklentisinin 18.6.30 ~ 18.65.1 sürümleri, editör açılırken otomatik olarak nx@latest kurduğu için postinstall'ın çalışmasına neden olabilir

  • Temelde, niyet edilmemiş olsa bile birçok yerde NPM modülü kurulumu gerçekleşebileceğine dikkat etmek gerekiyor

  • Nx Console 18.66.0 sürümünden itibaren latest nx kurulum süreci kaldırıldı

Saldırı ve müdahale zaman çizelgesi

21 Ağustos

  • 4:31 PM: Bash injection zafiyetini içeren PR birleştirildi
  • 10:48 PM: Zafiyete işaret eden paylaşım X'te (eski adıyla Twitter) yayımlandı

22 Ağustos

  • Öğleden sonra: İç inceleme yapıldı, zafiyetli workflow geri alındı (eksik biçimde)
  • CodeQL devreye alınarak gelecekteki PR'lerde benzer zafiyetlerin tespit edilmesi sağlandı

24 Ağustos

  • Saldırganın fork'unda npm token sızıntısına işaret eden bir commit oluştu
  • Kötü amaçlı PR oluşturulup silindi, publish.yml bu PR tarafından çalıştırıldı

26 ~ 27 Ağustos (kötü amaçlı sürümlerin dağıtılması ve müdahale)

  • Çok sayıda kötü amaçlı Nx ve eklenti sürümü sırasıyla npm'e dağıtıldı
  • Github/NPM topluluğuna issue bildirildi
  • 10:44 PM: NPM tarafı ilgili sürümlerin tamamını kaldırma dahil işlemleri gerçekleştirdi
  • 11:57 PM: Tüm Nx ile ilişkili paketlerin yayımlanmasında kullanılan token'lar geçersiz kılındı
  • 27 Ağustos: Nx Console yaması, 2FA, Trusted Publisher yöntemine geçiş gibi ek önlemler alındı

Önleyici tedbirler ve sonraki müdahaleler

  • nrwl organizasyonundaki tüm maintainer'lar için 2FA zorunlu hale getirildi
  • Trusted Publisher mekanizması uygulandı. npm token tabanlı dağıtım yasaklandı
  • Bundan sonraki paketler yalnızca 2FA ve güvene dayalı doğrulamadan sonra yayımlanacak
  • Ek risk tespiti, PR onayı ve dal koruması gibi katmanlı önlemler uygulanacak

Çıkarılan dersler ve ileriye dönük plan

  • Tedarik zinciri ve CI/CD hattı güvenliği ile workflow yetkilerinin en aza indirilmesinin önemi yeniden görüldü
  • Ekip içinde tekrar değerlendirme yapıldıktan sonra öğrenilenler toplulukla paylaşılacak

İletişim

  • security@nrwl.io üzerinden iletişime geçilebilir

Referanslar ve ekler

  • Github üzerindeki başlıca issue'lar, zaman çizelgesi ve ilgili paylaşımlar
  • Enfekte paket içindeki telemetry.js betiğine örnek veriliyor
  • Bu betik, dosya sistemindeki önemli metin dosyalarının yollarını envanter oluşturma amacıyla topluyor

Sonuç özeti

  • Nx ve ilişkili eklentiler için en güncel güncellemelerin ve yamaların uygulanması önemli
  • npm, Github ve benzeri temel kimlik doğrulama bilgilerinin derhal değiştirilmesi öneriliyor
  • Bu olay, tedarik zinciri güvenliği ve workflow yetki yönetimindeki eksikliklerin büyük çaplı bir olaya yol açabileceğini bir kez daha gösterdi

Henüz yorum yok.

Henüz yorum yok.