Yazılım tedarik zinciri güvenliği bir kez daha sarsıldı. OX Security, SafeDep, Socket ve StepSecurity ekiplerinin ortak araştırması, @asyncapi ad alanındaki dört npm paketinin çok aşamalı bir botnet yükleyicisi dağıttığını ortaya çıkardı. Etkilenen paketler arasında @asyncapi/generator-helpers (sürüm 1.1.1), @asyncapi/generator-components (0.7.1), @asyncapi/generator (3.3.1) ve @asyncapi/specs (6.11.2 ve 6.11.2-alpha.1) bulunuyor. Bu paketler, AsyncAPI belgeleri oluşturmak için yaygın olarak kullanıldığından, saldırının etkisi geniş bir kitleyi ilgilendiriyor.
Saldırı, ilk aşamada gizlenmiş bir JavaScript implantı içeriyor. Her bir zehirli paket, ikinci aşama yükleyiciyi çözen bir kaynak dosya barındırıyor. Önceki saldırılardan farklı olarak, kötü amaçlı kod, modül Node.js tarafından yüklendiğinde çalışıyor; yani npm install sırasında değil, modül require() ile çağrıldığında tetikleniyor. Bu durum, geliştiricilerin normal iş akışında veya CI/CD süreçlerinde farkında olmadan zararlı yazılımı çalıştırmasına yol açıyor.
İkinci aşama yük, IPFS'den indirilen şifrelenmiş bir JavaScript yükleyicisi olan 'sync.js'. Bu dosya, işletim sistemine özgü yollara yazılıp çalıştırılıyor. Yükleyici URL'si 'ipfs.io/ipfs/QmQobZSp1wRPrpSEQ56qnyq7ecZh5Bg5k1fnjt4SUwwHb9' olarak tespit edildi. Yükleyici iki bileşen içeriyor: Miasma görev çerçevesine dönüşen şifrelenmiş son JavaScript yükü ve spawn-chain framework için kullanılan büyük bir şifrelenmiş blob.
Önemli Gelişmeler
Miasma çerçevesi, 744 modül barındıran bir komut çerçevesi olarak inşa edilmiş ve altı farklı komuta kontrol (C2) kanalını destekliyor: HTTP, Nostr relay, IPFS, BitTorrent DHT, libp2p GossipSub P2P mesh ve Ethereum akıllı sözleşmesi. Bu çok kanallı yapı, saldırganlara esneklik ve gizlilik sağlıyor. Ayrıca kimlik bilgileri çalma, AI araç zehirleme, yerel ağda yanal hareket ve npm, PyPI, Cargo kayıtlarında solucan benzeri yayılma yeteneklerine sahip. Kalıcılık mekanizması olarak systemd, crontab, macOS launchd ve Windows Registry otomatik başlatma anahtarlarını kullanıyor.
İlginç bir detay ise ölü adam düğmesi (dead man's switch) mekanizması. Bu mekanizma, çalınan bir tokenın iptal edilmesi durumunda dizin silme işlemini tetikliyor. Ayrıca, sandbox veya sanal ortam olarak tespit edilen sistemlerden kaçınıyor; Rusça dil ayarına sahip sistemler ve CrowdStrike, SentinelOne, Microsoft Defender, CarbonBlack, Cylance, Osquery, Tanium, Qualys gibi güvenlik araçlarının yüklü olduğu sistemleri de atlıyor. Bu, hedef seçiminde akıllıca bir yaklaşım olduğunu gösteriyor.
Uzmanların Görüşleri
StepSecurity ekibine göre, saldırgan, depolara push erişimi elde etmiş ve projenin kendi GitHub Actions sürüm iş akışını kullanarak geçerli OIDC kimlik kanıtlarıyla paketleri yayınlamış. Bu, tipik bir npm token hırsızlığı değil, CI/CD boru hattı ihlali. Saldırgan, yer tutucu bir git kimliği kullanarak commit yapmış ve her deponun gerçek sürüm iş akışının, npm'in GitHub OIDC güvenilir yayıncı entegrasyonu aracılığıyla yayın yapmasını sağlamış. Sonuçta ortaya çıkan paketler, meşru SLSA kaynak kanıtları taşıyor; ancak bu, yalnızca projenin yetkili iş akışının ürettiğini gösteriyor, tetikleyici commit'lerin meşru olduğunu değil. Bu durum, kaynak kanıtlarının push kimlik bilgisi ihlaline karşı koruma sağlamadığını açıkça gösteriyor.
Tüm kötü amaçlı sürümler npm kaydından kaldırıldı. Ancak, etkilenen paket sürümlerini içe aktaran veya çalıştıran herhangi bir uç noktanın potansiyel olarak tehlikeye atıldığı kabul edilmeli. Önemli bir nokta, maruziyetin enfekte modülün bir derleme veya geliştirici iş akışının parçası olarak yüklenip yüklenmediğine bağlı olması. Şu ana kadar bu saldırının genel boyutu net değil, ancak kullanıcıların etkilenen sürümleri kullanıp kullanmadıklarını kontrol etmeleri ve güncellemeleri takip etmeleri öneriliyor.
Kaynak: thehackernews.com