jscrambler npm paketinin güvenliği ihlal edildi ve bunun 8.14.0 sürümünün yüklenmesi, makinenizde bir bilgi hırsızlığının çalıştırılmasına neden oluyor. 11 Temmuz 2026'da yayınlanan kötü amaçlı sürüm, her biri Windows, macOS ve Linux için birer derleme olan yerel bir ikili dosyayı bırakıp çalıştıran bir ön yükleme kancası taşır.
Soket sürümü işaretledi yayınlandıktan altı dakika sonra. Siz veya derleme sistemlerinizden biri bunu o pencereye çektiyse yük, yükleme işleminizin sahip olduğu erişimle zaten çalıştırılmıştır.
Bunların hiçbiri önceki sürüm olan 8.13.0'da mevcut değildir. Paket farkı dist/ altında iki yeni dosya gösterir: setup.js, küçük bir yükleyici ve intro.js. Adına rağmen intro.js, JavaScript değil, her biri Linux, Windows ve macOS için olmak üzere gzip ile sıkıştırılmış üç yerel ikili dosyayı paketleyen yaklaşık 7,8 MB'lık bir kapsayıcıdır.
Kurulum sırasında setup.js, ana bilgisayar işletim sistemi için ikili dosyayı seçer, bunu sistem temp dizinine rastgele bir adla yazar, yürütülebilir olarak işaretler ve çıktısı gizli olacak şekilde bağımsız olarak başlatır.
Eklenen dosyalar yayınlanan pakettedir ancak jscrambler'ın genel kaynağında hiçbir yerde yoktur.Adım Güvenliği and SafeDepher ikisi de sürümü çekti ve analiz etti ve her ikisi de GitHub deposunda 8.14.0 için eşleşen bir taahhüt, etiket veya çekme isteği bildirmedi.
En son etiketi hala 8.13.0'dır. Sürüm, projenin normal sürüm akışını atlayarak meşru bir bakımcı hesabı altında doğrudan npm'ye aktarıldı. Bu, güvenliği ihlal edilmiş bir npm hesabına veya derleme hattına işaret ediyor. İkisinden hangisi belirlenmedi.
Socket'in güncellenmiş analizine ve The Hacker News'e yapılan açıklamaya göre yük, üç platform için oluşturulmuş, geliştirici makinesindeki sırları tarayıp bunları TLS üzerinden bir bırakma sunucusuna gönderen bir Rust bilgi hırsızıdır.
Hedef listesi geniştir ve geliştiricileri hedef alır: CI çalıştırıcılarının kullandığı meta veri uç noktaları da dahil olmak üzere AWS, Azure ve Google Cloud'dan bulut kimlik bilgileri; MetaMask, Phantom ve Exodus'tan kripto para birimi cüzdanları ve tohum ifadeleri; Bitwarden şifre yöneticisi kasası; tarayıcıda saklanan şifreler ve çerezler; ve Discord, Slack, Telegram ve Steam oturumları.
Aynı zamanda daha yeni bir şeyin de peşindedir: Claude Desktop, Cursor, Windsurf, VS Code ve Zed gibi AI kodlama araçlarına yönelik, API anahtarlarının ve Model Bağlam Protokolü sunucusu kimlik bilgilerinin bulunduğu yapılandırma dosyaları.
İkili dosyalar çalmaktan fazlasını yapar. Linux'ta yük, çekirdeğin BPF kitaplığını bağlar ve bir eBPF programını doğrudan bellekten çekirdeğe yükleyebilir. Bu, hırsızın geri kalanının güvendiği kullanıcı alanı dosya erişimi değil, çekirdekteki bir dayanak noktasıdır. StepSecurity ve SafeDep bu özelliği işaretledi, ancak eBPF'nin yaptığı şey hâlâ çözülüyor.
Windows ve macOS sürümleri, hata ayıklamayı önleyici kontroller ekler ve hırsız, yeniden başlatma sonrasında hayatta kalabilmek için ısrarla bağlantı kurar: her dakika yeniden başlatılacak şekilde ayarlanmış gizli bir Windows zamanlanmış görevi ve oturum açıldığında yeniden yüklenen bir macOS LaunchAgent. Komuta ve kontrol ayrıntıları ikili dosyada şifrelenmiş halde kalır ve hiçbir zaman statik analizde ortaya çıkmaz.
StepSecurity'nin çalışma zamanı izlemesi, kampanya için yayınlanan ilk ağ göstergeleri olan, iki sabit kodlu IP adresine ve Tor altyapısına ulaşan düşen ikili dosyayı yakaladı.
jscrambler, geliştirme bağımlılığı olarak yüklenen veya CI'dan çalıştırılan bir oluşturma zamanı aracıdır. Bu ortamlar hırsızın topladığı şeyleri barındırır: bulut anahtarları, dağıtım belirteçleri ve bir yapı veya CI sürecinin ulaşabileceği kaynak kodu.
![]() |
| Kaynak: Adım Güvenliği |
Paket haftada yaklaşık 15.800 indirme görüyor ve güvenliği ihlal edilen sürümün kaç tanesini çektiği henüz bilinmiyor. Bu, geçen yılın büyük npm uzlaşmalarında ortaya çıkan ve aralarında haftada milyarlarca indirme çeken paketlerden çok daha küçük bir ayak izi.
Ancak makine yapmayı amaçlayan bir hırsız için ulaşmak hiçbir zaman önemli olmadı. Erişim şu şekildedir:
Shai-Hulud solucanı jetonları çalmak için bir kurulum kancasından kaçtı ve yüzlerce pakete yayıldı o Eylül. Yaygın olarak kullanılan tebeşir ve hata ayıklama paketler vardı Kimlik avı yapılan bir bakımcı hesabı aracılığıyla ele geçirildi ve kripto ödemelerini yeniden yönlendirmek için kullanılır.
Mart ayında ele geçirilen bir hesap, haftalık 83 milyondan fazla indirilen bir HTTP kitaplığı olanAxios'aplatformlar arası bir truva atı gönderdi. Buradaki zamanlamayı keskin kılan şey, npm'nin tam olarak bu rotaya karşı hareket etmiş olmasıdır: npm 128 Temmuz'da, bu sürümden üç gün önce gönderildi, bağımlılık yükleme komut dosyaları varsayılan olarak kapalı.
Npm 12'de bunun gibi bir ön yükleme kancası, birisi onaylamadıkça çalışmaz. Daha eski istemciler bunları hâlâ otomatik olarak çalıştırıyor.
Sürüm 8.15.0, o zamandan bu yana, aynı bakımcı hesabından yayınlanan ve 8.14.0'ın tetiklediği kötü amaçlı yazılım uyarılarının hiçbirini göstermeyen,npm'nin sürüm listesininen üstünde yer aldı: yükleme komut dosyası yok, paketlenmiş ikili dosya yok. Ancak 8.14.0 çekilmedi.
Hala npm'de olduğundan ona sabitlenen herhangi bir kilit dosyası veya komut, hırsızı yüklemeye devam ediyor. Yalnızca ana CLI paketi etkilendi; webpack, gulp, Metro ve homurdanan jscrambler eklentileri, kurulum kancaları olmadan temiz Haziran sürümlerinde kaldı.
Şimdi ne yapmalı
- 8.14.0'dan çıkın. Olaydan önceki sürüm için 8.15.0'a geçin veya 8.13.0'a sabitleyin ve jscrambler@8.14.0'ı kilit dosyalarından ve önbelleklerden temizleyin.
- 8.14.0'ı kurup kurmadığınızı öğrenin. 11 Temmuz'dan itibaren jscrambler@8.14.0 için kilit dosyalarını ve paket yöneticisi günlüklerini ve herhangi bir dist/setup.js çalıştırması için CI kayıtlarını kontrol edin. Yükleyici, yükünü temp dizinindeki rastgele bir adla bırakır, dolayısıyla grep için sabit bir ikili ad yoktur; kurulum zaman damgalarını Düğümün alt işlemlerine ve bunun yerine geçici dizin yürütmesine göre sıralayın. Windows'ta gizli görevler için Görev Zamanlayıcı'yı kontrol edin; macOS'ta, tanıdık olmayan listeler için ~/Library/LaunchAgents'ı inceleyin.
- Eğer 8.14.0 bir makinede çalışıyorsa, ulaşabildiği her sırrı ifşa edilmiş olarak değil, çalıntı olarak değerlendirin. Bulut anahtarlarını, npm ve GitHub belirteçlerini, AI aracını ve MCP API anahtarlarını döndürün; Discord, Slack, tarayıcı ve Bitwarden oturumlarını iptal etmek; ve herhangi bir kriptoyu o ana bilgisayardaki cüzdanlardan çıkarın. Aşağıda listelenen iki komut ve kontrol IP'sini engelleyin.
Temizleme işlemi hızlıydı ancak hırsız, kurulumdan birkaç saniye sonra işini yapıyor. Yükleme komut dosyalarını çalıştıran eski bir istemcide 8.14.0'a sabitlenmiş bir yapı, yükü hâlâ çalıştırıyor. Zaten onu çalıştıran herhangi bir makinede, 8.15.0 listenin başına gelmeden sırlar ortadan kaybolmuştu.
Tehlike göstergeleri
Kötü amaçlı paket: jscrambler@8.14.0. Eklenen dosyalar ve sıkıştırılmış yükleri için SHA-256 karmaları:
- dist/setup.js: a742de963f14a92d24ebcbc7b44ac867e23a20d31d1b0094a13a4f83287f4e60
- dist/intro.js: a41a523ef9517aab37ed6eea0ec881821bdcb7aefcb5c5f603adc7907f868c86
- Linux yük: fbbcf4d8f98168f78f5c0c47a9ae56d59ec8ac84a7c9ca6b797fedfb8d62d2bd
- Windows yük: b7ca95d1b23c8e67416a25cedf741de0917c2096bbc9d24649eea7853d054903
- macOS yük: c8fd47d36bdf7c825378593ab82ed8c24d1dc52e26b507812393e24e1d5201fd
StepSecurity ağ uç noktaları çalışma zamanında gözlemlendi. İki IP, doğrudan saldırganın uç noktalarıdır; ikili dosya ayrıca bağlantı veya yönlendirme için Tor altyapısına da ulaşır:
- C2 IP: 37.27.122[.]124
- C2 IP: 57.128.246[.]79
- Tor altyapısı: check.torproject[.]org, archive.torproject[.]org
Ana makinedeki yapılar: sistem temp dizininde rastgele adlandırılmış gizli bir dosya, Windows'ta .{random} veya .{random}.exe formunun yanı sıra kalıcılık için gizli bir Windows zamanlanmış görevi veya macOS LaunchAgent.
Güncelleme: Daha Fazla Kötü Amaçlı Sürüm ve Jscrambler Güvenliği Tehlikeye Girmiş Bir npm Kimlik Bilgisini Onayladı
Jscrambler bunun nedenini doğruladı: saldırgan, paketleri güvenliği ihlal edilmiş bir npm yayınlama kimlik bilgisi kullanarak yayınladı. Soket artık beş kötü amaçlı jscrambler sürümünü aynı aktöre bağlıyor, yaklaşık üç saat bekletiliyor ve tümü yukarıda açıklanan aynı platformlar arası bilgi hırsızını taşıyor.
Bunlar 8.14.0, 8.16.0, 8.17.0, 8.18.0 ve 8.20.0'dır. Jscrambler'ın tavsiye belgesinde bunlardan dördü listeleniyor ve 8.18.0'dan bahsedilmiyor; bu nedenle, iki hesap aynı fikirde olana kadar beşini de şüpheli olarak değerlendirin. İlk ikisi arasında yayınlanan 8.15.0 sürümü her iki listede de yok ve temiz görünüyor.
Teslimat yöntemi yarı yolda değişti. Socket, 8.14.0, 8.16.0 ve 8.17.0'ın kötü amaçlı yazılımı, ilk sürümle aynı rota olan bir ön yükleme kancasından çalıştırdığını bildiriyor. 8.18.0 ve 8.20.0'da damlalık, paketin ana koduna ve CLI'ye taşındı, böylece paket içe aktarıldığında veya çalıştırıldığında etkinleşir ve npm install --ignore-scripts bunu durdurmaz. Jscrambler'ın tavsiyesi yalnızca ön yükleme vektörünü açıklar.
Jscrambler, saldırının Code Integrity ürününe yönelik jscrambler paketiyle sınırlı olduğunu ve diğer ürünlere ulaşmadığını söyledi. Yayınlama kimlik bilgilerini ve sırlarını iptal etti ve döndürdü, yayınlama hattını güçlendirdi ve kötü amaçlı yayınları kullanımdan kaldırdı, ancak kullanımdan kaldırma onları hala tam sürüme göre kurulabilir halde bırakıyor.
Adli soruşturması sürüyor. Hem Jscrambler hem de Socket, taşınacak temiz sürüm olarak 8.22.0'ı işaret ediyor.
Etkilenen herhangi bir sürümü yüklediyseniz 8.22.0'a yükseltin ve onu çeken iş istasyonunu veya CI çalıştırıcısını denetleyin ve yukarıdaki adımlarda listelenen kimlik bilgilerini döndürün.
Jscrambler, npm'nin şu anda kötü amaçlı sürümlerin sıfır indirildiğini bildirdiğini ancak sayının saatlerce geciktiğini ve hala doğrulandığını, dolayısıyla hiçbir şeyin çalıştırılmadığının henüz kanıtı olmadığını belirtiyor.
Güncelleme: JFrog Yükü IronWorm'a Bağlıyor ve Kendi Kendine Yayılma Rutini Buldu
Kötü amaçlı yazılım yalnızca çalmakla kalmıyor. Kendini yaymak için inşa edilmiştir. JKurbağaAynı beş sürümü analiz eden , yükü şu şekilde tanımlar:Demir SolucanıBir ay önce belgelediği bir Rust bilgi hırsızı ve Shai-Hulud soyuna bağlı.
JFrog, veri yükünün ortam değişkenlerinde ve .npmrc gibi dosyalarda npm belirteçlerini aradığını, bunları kayıt defterine göre kontrol ettiğini, yüksek indirme sayısına sahip paketleri seçtiğini ve tarball'larına kötü amaçlı bir setup.mjs ön yükleme komut dosyası enjekte ettiğini ve virüslü sürümleri, npm istemcisini hiç çağırmadan ham bir HTTP PUT aracılığıyla doğrudan registry.npmjs.org'da yayınladığını söylüyor.
Koddaki rutini doğruladı. Solucanın çalıntı bir token aracılığıyla herhangi bir şey yayınlamayı başardığı söylenmiyor. Analizlerin örtüştüğü noktalarda aynı fikirdeler.
JFrog, 8.14.0, 8.16.0, 8.17.0, 8.18.0 ve 8.20.0 olmak üzere aynı beş sürümü listeler; buna Jscrambler'in tavsiyesinde dışarıda bırakılan 8.18.0 ve yük karmaları ile iki komuta ve kontrol IP'si daha önce yayınlanmış göstergelerle eşleşir.
Hedef listesi ilk raporlarda gösterilenden daha geniş. JFrog, hırsızın bulut anahtarları ve cüzdanların yanı sıra VPN yapılandırma dosyalarına, 1Password ve Bitwarden kasalarına, Tor gizli servis anahtarlarına ve özellikle Metasploit, Sliver ve Havoc gibi kırmızı takım çerçevelerinin kurulum klasörlerine ulaştığını söylüyor. Bu son hedef, güvenlik araştırmacılarına ve sızma testçilerine işaret ediyor.
Kötü amaçlı yazılım, önceki göstergelerdeki Tor adreslerini açıklayan komut kanalını taşımak için kendi Tor istemcisini çalıştırıyor. Ancak toplu hırsızlık için JFrog, çalınan verileri doğrudan halka açık bir dosya sunucusu olan temp.sh'ye, kurbanın gerçek IP'sini sızdıran doğrudan bir bağlantı üzerinden yüklediğini söylüyor.
İzlemeye değer göstergelere temp.sh ve yayılım komut dosyası setup.mjs'yi ekleyin. Etkilenen bir sürümü çalıştırdıysanız yukarıdaki adımlardaki npm belirteci rotasyonu, bu solucanın yaymak için ihtiyaç duyduğu kimlik bilgilerini de ortadan kaldırır.

