Nx ve bazı destek eklentilerinin kötü amaçlı sürümleri dağıtıldı
(github.com/nrwl)- 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-repositorydeposunun 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
postinstallbetiğ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ı
postinstallbetiğ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
- Kendi Github hesabınızdaki depo listesinde
s1ngularity-repositoryoluşturulup oluşturulmadığını kontrol edin - İlgili depoda yer alan dosyaları indirip kayıt altına alın
- Depoyu Github'dan silin
security@nrwl.ioadresine e-posta göndererek sızan bilgilerin nasıl çözümleneceğine dair yönlendirme alın- 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
ghCLI 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 nxkomutuyla kontrol edin - Enfekte sürümse
npm uninstall nx && npm install nx@latestile güncelleyin npm cache clean --forceile ö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,.bashrcdosyaları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_targettetikleyicisi üzerinden yükseltilmiş yetkiler (GITHUB_TOKENvb.) 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
postinstallbetiği çalıştığında çeşitli metin dosyalarının konumları ve kimlik bilgileri toplanıyor - Veriler
s1ngularity-repositoryadlı 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 0komutunu 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@latestkurduğu içinpostinstall'ı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 nxkurulum 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.ymlbu 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
nrwlorganizasyonundaki 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.jsbetiğ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.