TL;DR
31 Mart 2026'da, haftalık 83 milyon indirme sayısıyla en popüler JavaScript HTTP istemcisi olan Axios'un ana sürüm yöneticisinin npm hesabı saldırganlar tarafından ele geçirildi. Saldırganlar, geliştirici makinelerinden kimlik bilgilerini, SSH anahtarlarını ve bulut tokenlerini çalan platformlar arası bir RAT (Uzaktan Erişim Truvası) içeren kötü niyetli sürümler (1.14.1 ve 0.30.4) yayınladı. Derhal Axios 1.14.0 sürümüne düşürün, tüm gizli bilgilerinizi değiştirin ve sisteminizde ihlal göstergeleri olup olmadığını tarayın.
Giriş
Axios, diğer tüm JavaScript kütüphanelerinden daha fazla HTTP isteği işler. Son beş yılda bir API istemcisi oluşturduysanız, uç noktaları test ettiyseniz veya bir ön ucu bir arka uca bağladıysanız, muhtemelen onu kullandınız.
31 Mart 2026'da, UTC 00:21'de, bir tehdit aktörü ele geçirilmiş bir sürüm yöneticisi hesabı aracılığıyla Axios sürüm 1.14.1'i yayınladı. Paket, yasal sürüme tıpatıp benziyordu. Fark cerrahiydi: 86 dosya arasında sadece package.json değişmişti. Ancak bu tek dosya, npm install çalıştıran her makineye bir uzaktan erişim truva atı dağıtan plain-crypto-js adlı hayalet bir bağımlılık enjekte etti.
Kötü niyetli sürümler, npm onları kaldırmadan önce yaklaşık iki ila üç saat boyunca aktif kaldı. Haftalık 83 milyon indirme arasında iki ila üç saat.
Bu makale, saldırının nasıl işlediğini, sistemlerinizin güvenliğinin ihlal edilip edilmediğini nasıl tespit edeceğinizi ve API ekiplerinin gelecekteki bağımlılık yönetimleri hakkında neler değiştirmesi gerektiğini ayrıntılarıyla ele almaktadır.
Axios tedarik zinciri saldırısı nasıl gelişti
Zaman çizelgesi
Saldırgan bu operasyonu 18 saatlik bir pencerede hassasiyetle gerçekleştirdi:
- 30 Mart, UTC 05:57: Temiz bir yem paketi olan
plain-crypto-js@4.2.0npm'de yayınlandı. Önce "temiz" bir sürüm yayınlamak, pakete kayıt defterinde kısa bir geçmiş kazandırarak daha az şüpheli görünmesini sağladı. - 30 Mart, UTC 23:59: Kötü niyetli sürüm
plain-crypto-js@4.2.1yayınlandı ve içerdiği bırakıcıyı (dropper) çalıştıran birpostinstallkancası eklendi. - 31 Mart, UTC 00:21:
axios@1.14.1, ele geçirilmişjasonsaaymanhesabı kullanılarak yayınlandı. - 31 Mart, UTC 01:00: 39 dakika sonra
axios@0.30.4yayınlandı ve 0.x dalına sabitlenmiş projeleri hedef aldı. - 31 Mart, ~UTC 03:15: npm, topluluk raporlarından sonra her iki Axios sürümünü de yayından kaldırdı.
- 31 Mart, UTC 04:26: npm, yeniden yayınlanmayı önlemek için
plain-crypto-jsiçin bir güvenlik tutucu taslağı yayınladı.
Hesap nasıl ele geçirildi
Saldırgan, birincil Axios sürüm yöneticisi olan jasonsaayman npm hesabını ele geçirdi. Kayıtlı e-postayı ifstap@proton.me olarak değiştirdiler. Ana adli kanıtlar:
- Meşru Axios sürümleri, npm'in OIDC Güvenilir Yayıncı mekanizmasıyla GitHub Actions kullanır. Kötü niyetli sürümler OIDC bağlamasına tamamen sahip değildi.
- Ele geçirilmiş sürümlerde
gitHeadalanı görünmedi, bu da karşılık gelen GitHub commit'lerinin mevcut olmadığı anlamına geliyordu. - Saldırgan, CI/CD üzerinden gitmek yerine, manuel olarak yayınlamak için çalınan uzun ömürlü npm erişim belirteçlerini kullandı.
Bu ayrım önemlidir. Kuruluşunuz npm paketleri yayınlıyorsa, bir sürümde OIDC bağlamasının ve CI/CD kaynağının olmaması, otomatik kontroller için dikkat edilmesi gereken bir kırmızı bayraktır.
Bağımlılık enjeksiyon tekniği
Bu saldırıyı bu kadar incelikli yapan şey buydu. Saldırgan Axios kaynak kodunu değiştirmedi. Sadece package.json dosyasındaki tek bir satırı değiştirerek plain-crypto-js@^4.2.1'i çalışma zamanı bağımlılığı olarak ekledi. Bu paket, Axios kod tabanında hiçbir yerde içe aktarılmadı. Sadece npm install sırasında postinstall kancasını tetiklemek için vardı.
İkili analiz, cerrahi hassasiyeti doğruladı: paketteki 86 dosyanın tamamında, temiz 1.14.0 sürümü ile tehlikeye atılmış 1.14.1 sürümü arasında yalnızca package.json farklıydı.
Kötü niyetli yük ne yapıyor
Bırakıcı mekanizması
plain-crypto-js içindeki postinstall kancası, setup.js adlı 4.2 KB'lık gizlenmiş bir dosyayı çalıştırdı. İki katmanlı gizleme kullandı:
- Katman 1:
"OrDeR_7077"dizesinden türetilen bir anahtar kullanan XOR şifresi - Katman 2: Karakter ters çevirme ile Base64 kodlaması
Çözümlendiğinde, bırakıcı ana bilgisayar işletim sistemini tanımladı ve platforma özel yükleri çalıştırdı.
Platforma özel saldırı yolları
macOS:
AppleScript'i /tmp/6202033 dizinine yazar
osascript aracılığıyla yürütür
Yükü /Library/Caches/com.apple.act.mond dizinine indirir
Windows:
PowerShell'i %PROGRAMDATA%\wt.exe adresine kopyalar (kalıcılık yapıtı)
cscript aracılığıyla VBScript bırakıcısını yürütür
Linux:
Python RAT'ını /tmp/ld.py adresine indirir
nohup python3 aracılığıyla yürütür
Her üç dal da komuta-kontrol sunucusuyla platforma özel POST gövdeleriyle iletişime geçti:
- macOS:
packages.npm.org/product0 - Windows:
packages.npm.org/product1 - Linux:
packages.npm.org/product2
RAT yetenekleri
Dağıtılan uzaktan erişim truva atı şunları destekler:
- Keyfi kabuk komut yürütme
- Dosya sistemi numaralandırma ve dışa aktarma
- İşlem listeleme ve enjeksiyon
- Bellek içi ikili enjeksiyon (dosyasız yürütme)
- C2 altyapısına 60 saniyelik işaret aralıkları
Basitçe söylemek gerekirse: saldırgan, geliştirme makinenizin tam uzaktan kontrolünü ele geçirir. .env dosyalarınızı okuyabilir, API anahtarlarınızı çalabilir, SSH anahtarlarınızı kopyalayabilir ve bulut sağlayıcı belirteçlerini toplayabilir.
Adli tıp karşıtı: kendi kendini temizleyen yük
Yürütüldükten sonra, bırakıcı üç temizleme adımı gerçekleştirdi:
setup.jsdosyasının kendisini sildi- Kötü niyetli
package.jsondosyasını sildi - Önceden hazırlanmış bir
package.md(sürüm 4.2.0 bildiren) dosyasınıpackage.jsonolarak yeniden adlandırdı
Bu, npm list'in yükü yürüten 4.2.1 sürümü yerine 4.2.0 sürümünü bildirdiği bir yanıltma katmanı oluşturdu. Bir geliştirici, daha sonra bağımlılıklarını kontrol ettiğinde yanlış bir şey görmeyecekti.
Bu saldırının arkasında kim var?
Google Tehdit İstihbarat Grubu, Axios saldırısını şüpheli bir Kuzey Kore tehdit aktörü olan UNC1069'a atfetti. macOS kötü amaçlı yazılımı, Mandiant'ın Şubat 2026'da takip ettiği WAVESHAPER adlı bir C++ arka kapı ile "önemli ölçüde örtüşüyor".
Kuzey Kore devlet destekli grupların tedarik zinciri saldırıları konusunda derin deneyimleri var. Geçmişte, kripto para çalmak için ele geçirilmiş geliştirici araçlarını kullandılar ve bu operasyon da aynı yolu izliyor: binlerce kuruluştaki kimlik bilgilerine ve bulut altyapısına erişim sağlamak için yaygın olarak kullanılan bir geliştirici aracını ele geçirmek.
Saldırının karmaşıklık düzeyi dikkat çekicidir. İki aşamalı bağımlılık enjeksiyonu, çok platformlu RAT dağıtımı ve adli tıp karşıtı temizleme, tümü iyi kaynaklara sahip bir operasyona işaret ediyor. Bu, bir kripto madencisi düşüren bir script kiddie değil. Geliştirici iş istasyonlarını hedef alan bir istihbarat operasyonu.
Etkilenip etkilenmediğinizi nasıl kontrol edersiniz?
Adım 1: Axios sürümünüzü kontrol edin
Axios kullanan her projede şunu çalıştırın:
npm list axios 2>/dev/null | grep -E "1\.14\.1|0\.30\.4"
Bu, sonuç döndürürse, projeniz tehlikeye atılmış bir sürüm yüklemiştir.
Adım 2: Kötü niyetli bağımlılığı kontrol edin
ls node_modules/plain-crypto-js 2>/dev/null && echo "POTANSİYEL OLARAK ETKİLENMİŞ"
Bırakıcı kendini temizlediyse bile, dizinin varlığı yükün çalıştığını doğrular.
Adım 3: Sisteminizde RAT yapılarını kontrol edin
macOS:
ls -la /Library/Caches/com.apple.act.mond 2>/dev/null
Linux:
ls -la /tmp/ld.py 2>/dev/null
Windows (PowerShell):
Test-Path "$env:PROGRAMDATA\wt.exe"
Adım 4: Ağ göstergelerini kontrol edin
Şu bağlantıları engelleyin ve tarayın:
- C2 alanı:
sfrclak.com - C2 IP'si:
142.11.206.73 - C2 URL'si:
http://sfrclak.com:8000/6202033
Adım 5: CI/CD derleme günlüklerini kontrol edin
31 Mart UTC 00:21 ile UTC 03:15 arasındaki tüm CI/CD işlem hattı çalışmalarını inceleyin. Bu pencere sırasında Axios'u çözen herhangi bir npm install veya npm ci çalıştırması, derleme ortamınızda bırakıcıyı çalıştırmış olabilir.
Acil iyileştirme adımları
Herhangi bir ihlal göstergesi bulursanız, etkilenen sistemi tamamen ele geçirilmiş olarak kabul edin. İşte öncelik listesi:
1. Axios'u hemen düşürün
npm install axios@1.14.0
Veya 0.x dalı için:
npm install axios@0.30.3
2. package.json dosyanıza sürüm geçersiz kılmaları ekleyin
Kötü niyetli sürümlere geçişli çözümü engelleyin:
{
"overrides": {
"axios": "1.14.0"
}
}
Yarn için:
{
"resolutions": {
"axios": "1.14.0"
}
}
3. Kötü niyetli paketi kaldırın
rm -rf node_modules/plain-crypto-js
4. Tüm kimlik bilgilerini değiştirin
Bırakıcı makinenizde çalıştıysa, aşağıdakilerin ele geçirilmiş olduğunu varsayın:
- npm belirteçleri
- AWS/GCP/Azure kimlik bilgileri
- SSH anahtarları
- GitHub belirteçleri
.envdosyalarındaki API anahtarları- Veritabanı kimlik bilgileri
- Ortam değişkenlerinde depolanan tüm gizli bilgiler
Her şeyi değiştirin. RAT'ın aktif penceresi sırasında neyi dışarı sızdırdığını bilmek mümkün değil.
5. Ağa seviyesinde C2'yi engelleyin
Ana bilgisayar dosyanıza veya güvenlik duvarı kurallarınıza ekleyin:
echo "0.0.0.0 sfrclak.com" | sudo tee -a /etc/hosts
6. Yapıtlar bulunursa, makineyi yeniden oluşturun
Kabuk yürütme ve dosya sistemi erişimine sahip bir RAT her şeyi değiştirebilir. Adım 3'ten yapıtlar bulduysanız, sisteme güvenmeyin. Bilinen iyi bir durumdan yeniden oluşturun.
API geliştirme ekipleri için uzun vadeli savunmalar
Kilit dosyaları kullanın ve kesin sürümleri sabitleyin
Axios saldırısı, ^ semver aralıklarını istismar etti. Eğer package.json dosyanız "axios": "^1.14.0" diyorsa, npm, saldırı penceresi sırasında en son uyumlu sürüm olan 1.14.1'i çözdü.
{
"dependencies": {
"axios": "1.14.0"
}
}
Kesin sürümleri sabitleyin. Her zaman package-lock.json veya yarn.lock dosyanızı commit'leyin. Kilit dosyası çözümünü zorlamak için CI/CD'de npm install yerine npm ci çalıştırın.
CI/CD'de postinstall betiklerini devre dışı bırakın
Saldırının tamamı, npm install sırasında postinstall kancalarının yürütülmesine bağlıydı. Bunu devre dışı bırakabilirsiniz:
npm ci --ignore-scripts
Bu, yerel derleme gerektiren bazı paketleri bozar. Önce yapılarınızı test edin, ardından .npmrc kullanarak bunlara ihtiyaç duyan paketler için betikleri seçerek izin verin:
ignore-scripts=true
Bağımlılıkları düzenli olarak denetleyin
npm audit
npx socket-security/cli audit
Bunları CI/CD'de bir engel olarak çalıştırın. Herhangi bir kritik veya yüksek güvenlik açığı derlemeyi engellemelidir.
HTTP istemci bağımlılık yüzeyinizi azaltın
Bu saldırının ortaya koyduğu daha derin soru şudur: API test iş akışınız neden ele geçirilebilecek üçüncü taraf bir HTTP kütüphanesine bağımlı?
Apidog, API testi, hata ayıklama ve dokümantasyon için yerleşik bir HTTP istemcisi sağlar. Test yığınızda Axios, node-fetch veya got'a ihtiyacınız yoktur. HTTP istemcisi, tehlikeye atılacak üçüncü taraf bağımlılıkları olmayan platformun bir parçasıdır.
Özellikle API testi için, HTTP isteklerinizi Apidog'a taşımak tüm saldırı yüzeyini ortadan kaldırır:
- API testi: Axios tabanlı test betikleri yazmak yerine Apidog'un görsel test oluşturucusunu kullanın
- API hata ayıklaması: Özel HTTP istemci kodu yerine Apidog'un yerleşik istek inceleyicisini kullanın
- Sahte sunucular: Express + Axios ile sahte uç noktalar oluşturmak yerine Apidog'un akıllı sahte sunucusunu kullanın
- CI/CD entegrasyonu: npm HTTP bağımlılıkları olmadan otomatik API testleri için Apidog CLI'yı kullanın
API iş akışınızdan HTTP kütüphanesi bağımlılıklarını kaldırmanın tedarik zinciri riskinizi nasıl azalttığını görmek için Apidog'u ücretsiz deneyin.
Paket kaynağını doğrulayın
npm artık Sigstore aracılığıyla paket kaynağını destekliyor. Bağımlı olduğunuz paketlerin bunu kullanıp kullanmadığını kontrol edin:
npm audit signatures
Kötü niyetli Axios sürümleri OIDC kaynağına sahip değildi. CI/CD işlem hatlarından gelen meşru sürümler, derleme kaynaklarının kriptografik tasdikini içerir. Eğer yeni bir sürüm kaynak belirtmeden ortaya çıkarsa, şüpheyle yaklaşın.
Bu, JavaScript ekosistemi için ne anlama geliyor?
Güven modeli bozuldu
npm'in güven modeli, sürüm yöneticisi hesap güvenliğine bağlıdır. Tek bir ele geçirilmiş kimlik bilgisi, bir saldırgana her hafta 83 milyon projenin yüklediği bir paket üzerinde kontrol sağlar. İki faktörlü kimlik doğrulama yardımcı olur, ancak uzun ömürlü erişim belirteçleri ele geçirilmiş geliştirme ortamlarından hala çalınabilir.
Topluluk, çeşitli yapısal değişiklikleri tartışıyor:
- Zorunlu OIDC yayıncılığı: İndirme eşiğinin üzerindeki tüm paketlerin, uzun ömürlü kimlik bilgileri yerine OIDC belirteçleriyle CI/CD tabanlı yayıncılığı kullanmasını gerektirmek.
- İki kişilik sürüm onayı: Kritik paketler için sürümleri onaylamak üzere ikinci bir sürüm yöneticisinin olmasını gerektirmek.
- Çalışma zamanı izin kapsamlandırma: Deno'nun izin modeline benzer şekilde,
postinstallbetiklerinin erişebileceği şeyleri sınırlamak.
Tedarik zinciri saldırıları yavaşlamıyor
Bu saldırı, RubyGems kırılma olayı ve devam eden PyPI bağımlılık endişelerinin olduğu günlerde gerçekleşti. Her dil ekosistemindeki paket kayıtları sürekli saldırı altında. API geliştiricilerinin bağımlılık ağaçlarını bir kolaylık olarak değil, bir saldırı yüzeyi olarak düşünmeleri gerekiyor.
Reddit tartışması duyguyu iyi yakaladı: "NPM bugün internetin en büyük zayıflığıdır ve yine de devasa bir felakete yol açacaktır." Aşırı abartılı olup olmadığına katılmasanız da, Axios saldırısı etki alanının gerçek olduğunu gösteriyor.
Karşılaştırma: HTTP istemci bağımlılık yaklaşımları
| Yaklaşım | Tedarik zinciri riski | Bakım yükü | Test yeteneği |
|---|---|---|---|
| Axios + özel betikler | Yüksek (üçüncü taraf bağımlılığı) | Yüksek (sürüm yönetimi) | Manuel kurulum gerekli |
| Node.js yerel fetch | Düşük (çalışma zamanına yerleşik) | Düşük | Sınırlı test özellikleri |
| Apidog yerleşik istemci | Yok (npm bağımlılığı yok) | Yok (platform tarafından yönetilir) | Tam test, sahteleme, dokümanlar |
| curl/httpie betikleri | Düşük (sistem düzeyinde araç) | Orta | Sınırlı otomasyon |
Sıkça Sorulan Sorular
Axios'u şimdi kullanmak güvenli mi?
Evet. Sürümler 1.14.0 ve 0.30.3 temizdir. Ele geçirilmiş sürümler (1.14.1 ve 0.30.4) yaklaşık üç saat içinde yayından kaldırıldı. Yüklü sürümünüzü npm list axios ile doğrulayın ve güvenli bir sürümde olduğunuzu onaylamak için kilit dosyanızı kontrol edin.
RAT'ın makinemde çalıştığını nasıl anlarım?
Platforma özel yapıları kontrol edin: macOS'ta /Library/Caches/com.apple.act.mond, Linux'ta /tmp/ld.py veya Windows'ta %PROGRAMDATA%\wt.exe. Ayrıca projelerinizden herhangi birinde node_modules/plain-crypto-js olup olmadığını kontrol edin. Bırakıcı kendini temizlediği için, tehlikeye atılmış sürümü yüklediyseniz, yapıların olmaması güvende olduğunuzu garanti etmez.
Axios'u tamamen kullanmayı bırakmalı mıyım?
Şart değil. Axios, güçlü bir geçmişe sahip, iyi bakımı yapılan bir kütüphane olmaya devam ediyor. Ancak bu saldırı, üçüncü taraf bir HTTP istemcisine gerçekten ihtiyacınız olup olmadığını değerlendirmeniz için sizi teşvik etmeli. Node.js 18+ yerel fetch içerir. API testi için Apidog gibi platformlar, bu bağımlılığı ortadan kaldıran yerleşik HTTP istemcileri sağlar.
Projelerimde tedarik zinciri saldırılarını nasıl önleyebilirim?
Kesin bağımlılık sürümlerini sabitleyin, kilit dosyalarını commit'leyin, CI/CD'de npm ci --ignore-scripts çalıştırın, bağımlılıkları düzenli olarak denetleyin, npm audit signatures ile paket kaynağını doğrulayın ve bağımlılık ağacınızı minimize edin. API test iş akışlarını, HTTP iletişimi için npm paketlerine güvenmeyen entegre platformlara taşımayı düşünün.
Bu saldırı Claude Code kaynak sızıntısıyla ilgili miydi?
Her iki olay da aynı gün (31 Mart 2026) meydana geldi, ancak birbirleriyle ilişkili değiller. Axios saldırısı, devlet destekli bir tehdit aktörü tarafından kasıtlı bir tedarik zinciri ihlaliydi. Claude Code sızıntısı, Bun derleme aracındaki üretimde kaynak haritalarını gönderen bir hatadan kaynaklandı. Zamanlamanın rastlantısallığı, genel olarak npm kayıt güvenliği hakkındaki tartışmaları körükledi.
Axios saldırısının arkasında kim vardı?
Google Tehdit İstihbarat Grubu, saldırıyı şüpheli bir Kuzey Kore tehdit aktörü olan UNC1069'a atfetti. macOS kötü amaçlı yazılımı, Mandiant tarafından takip edilen bir arka kapı olan WAVESHAPER ile önemli ölçüde örtüşüyor. Kuzey Koreli gruplar, genellikle geliştirici kimlik bilgilerini ve kripto para birimi altyapısını hedef alan tedarik zinciri saldırıları konusunda kapsamlı deneyime sahiptir.
Kaç geliştirici etkilendi?
Kötü niyetli sürümler yaklaşık iki ila üç saat boyunca aktifti. Haftalık 83 milyon indirme ile potansiyel maruziyet önemli. npm resmi etki sayılarını yayınlamadı. StepSecurity'nin çalışma zamanı tespiti, bırakıcının npm install başladığı andan itibaren 1.1 saniye içinde C2 ile iletişime geçtiğini, bağımlılık çözümlemesi tamamlanmadan önce doğruladı.
Apidog tedarik zinciri saldırılarını önlemeye yardımcı olabilir mi?
Apidog, API testi, hata ayıklaması ve dokümantasyonu için yerleşik bir HTTP istemcisi sağlayarak büyük bir saldırı vektörünü ortadan kaldırır. Test iş akışınızda Axios, node-fetch veya diğer HTTP kütüphanelerini yüklemenize gerek yoktur. Bu, npm bağımlılık yüzeyinizi azaltır ve API geliştirme sürecinizi etkileyen tehlikeye atılmış HTTP istemci paketlerinin riskini ortadan kaldırır.
Temel Çıkarımlar
- Axios tedarik zinciri saldırısı, çalınan tek bir sürüm yöneticisi hesabı aracılığıyla haftalık 83 milyondan fazla indirmeyi tehlikeye attı
- RAT, tüm platformları (macOS, Windows, Linux) hedef alır ve kimlik bilgilerini, SSH anahtarlarını ve bulut belirteçlerini çalar
- Yukarıdaki tespit adımlarını kullanarak sistemlerinizi hemen kontrol edin
- Kesin bağımlılık sürümlerini sabitleyin ve CI/CD'de postinstall betiklerini devre dışı bırakın
- API testi için Apidog gibi yerleşik araçları kullanarak HTTP istemci bağımlılık yüzeyinizi azaltın
- Paket kayıt güvenliği, npm, PyPI ve RubyGems'i etkileyen sistemik bir sorundur
Axios saldırısı bir uyandırma çağrısıdır. node_modules'daki her bağımlılık bir güven kararıdır. Bu kararları varsayılan olarak değil, bilinçli olarak verdiğinizden emin olun.
