JavaScript ekosisteminde çok yaygın kullanılan HTTP istemcisi
Axios, ciddi bir supply chain saldırısının hedefi oldu. Saldırganlar, paketin npm tarafındaki dağıtım zincirine sızarak kötü amaçlı kod içeren sürümleri yayına aldı.
Olayda yayımlanan zararlı sürümler
axios@1.14.1 ve
axios@0.30.4 oldu. Bu sürümler, projenin normal yayın akışının dışında doğrudan npm’e yüklendi ve hem güncel 1.x kullanan projeleri hem de eski 0.x kolunda kalan sistemleri etkileyebilecek şekilde seçildi.
Hesap Nasıl Ele Geçirildi ve Neler Yüklendi?
Olay, Axios'un baş maintainer'ı olan Jason Saayman'ın npm hesabının ele geçirilmesiyle başladı. Saldırganlar, hesaba bağlı olan meşru e-posta adresini bir ProtonMail adresiyle değiştirerek asıl sahibinin sisteme erişimini tamamen kesti.
https://www.sevydevy.com/blogs/axios-supply-chain-attack-2026-explained-protection-guide
Hesabın kontrolünü sağladıktan sonra, projenin GitHub üzerindeki standart ve güvenli yayın (release) süreçlerini tamamen by-pass ettiler. Kötü amaçlı kod içeren iki yeni sürümü,
latest etiketiyle
axios@1.14.1 ve
legacy projeleri vurmak için
axios@0.30.4 doğrudan npm ağına manuel olarak pompaladılar. Bu stratejik hamle sayesinde, hem en güncel projeler hem de eski kütüphane sürümlerine kilitlenmiş sistemler aynı anda hedef alınmış oldu.
"Hayalet" Bağımlılık ve İşletim Sistemine Özel Payload'lar
Saldırının mühendislik açısından en çarpıcı yanı, saldırganların Axios'un kendi kaynak koduna tek bir satır bile dokunmamış olmasıydı. Bunun yerine
package.json dosyasına, daha önce hiç duyulmamış
plain-crypto-js@4.2.1 adında sahte bir dependency eklediler. Güvenlik tarayıcılarının şüphesini çekmemek için, bu paketin zararsız bir
4.2.0 sürümü saldırıdan kısa bir süre önce npm'e yüklenerek yapay bir geçmiş oluşturulmuştu.
Bir geliştirici veya CI pipeline'ı
npm install komutunu çalıştırdığında, bu hayalet bağımlılık otomatik olarak indiriliyor ve içindeki
postinstall hook'u sayesinde
setup.js betiği devreye giriyordu. Bu betik kurbanın işletim sistemini tespit edip duruma özel payload'lar çekiyordu:
- macOS:
/Library/Caches/com.apple.act.mond dizini içine gizlenen Mach-O formatında bir RAT (Remote Access Trojan) dosyası indiriliyordu.
- Windows: Gizli bir VBScript ve PowerShell zinciri kullanılarak, asıl kimliğini gizlemek için yeniden adlandırılmış bir çalıştırılabilir dosya (
%PROGRAMDATA%\wt.exe ) üzerinden sisteme sızılıyordu.
- Linux: Doğrudan
/tmp/ld.py olarak kaydedilen Python tabanlı bir arka kapı betiği çalıştırılıyordu.
İz bırakmama (anti-forensics) mekanizması ise kusursuza yakındı. Zararlı yazılım kurulum bittikten sonra kendi kendini siliyor,
package.json içindeki şüpheli hook'ları temizliyor ve geride zararsız görünen dosyalar bırakıyordu. Bu sayede, kurulumdan hemen sonra çalıştırılan standart bir
npm audit taraması hiçbir anormallik bulamıyordu.
Saldırının npm'de kalma süresi sadece birkaç saat olsa da, bu süre yüzlerce cihazın ağa düşmesi için yeterli oldu.Güvenlik uzmanları,
1.14.1 veya
0.30.4 sürümleriyle temas etmiş herhangi bir sistemin tamamen "compromised" kabul edilmesi gerektiğini, ortamdaki tüm token'ların (GitHub, AWS, npm) ve SSH anahtarlarının derhal rotate edilmesinin şart olduğunu vurguluyor.