Blog

Axios ve NPM Güvenliği: Tedarik Zinciri Tehlikesi

Alper Kocan 03 April 2026 12 görüntülenme

Merhaba Arkadaşlar, Ben Alper Koçan

Bugün yazılım dünyasının en korkulu rüyalarından biri olan, ancak üzerine çokça konuşmamız gereken bir konuyu masaya yatırıyoruz: Tedarik Zinciri Saldırıları (Supply Chain Attacks). Özellikle JavaScript ekosisteminde hemen hemen her projede kullandığımız Axios kütüphanesi üzerinden yaşanan bazı güvenlik ihlalleri, bize modern yazılım geliştirme süreçlerinin ne kadar kırılgan olabileceğini bir kez daha hatırlattı. Gelin, bu "Post Mortem" (olay sonrası analiz) yazısında neler yaşandığını ve bizim ne dersler çıkarmamız gerektiğini samimi bir dille inceleyelim.

Nedir Bu Tedarik Zinciri Saldırısı?

Öncelikle kavramları netleştirelim. Bir yazılım geliştirirken her şeyi sıfırdan yazmıyoruz; başkalarının yazdığı paketleri, yani bağımlılıkları (dependencies) kullanıyoruz. Tedarik zinciri saldırısı, sizin doğrudan kodunuza değil, kullandığınız bu güvenilir araçlara veya kütüphanelere sızılmasıdır. Düşünün ki, çok güvendiğiniz bir marketten ekmek alıyorsunuz ama birileri fırındaki un çuvalına gizlice zehir katmış. İşte NPM (Node Package Manager) ekosisteminde yaşanan tam olarak budur.

Axios Olayının Anatomisi: Ne Yaşandı?

Axios, haftalık milyonlarca indirmeye sahip devasa bir kütüphane. Saldırganlar genellikle iki yöntem izliyor. Birincisi, yazım hatası suistimali (typosquatting). Yani "axios" yerine "axois" veya "axios-helper" gibi isimlerle, orijinaline çok benzeyen ama içinde zararlı kod (malicious code) barındıran paketler yayınlıyorlar. İkincisi ise, doğrudan orijinal paketin bakımını yapan kişilerin hesaplarını ele geçirerek paketin yeni sürümüne gizlice kod enjekte etmek.

Axios özelindeki bazı vakalarda, saldırganların hazırladığı sahte paketlerin içine postinstall scriptleri yerleştirdiği görüldü. Bu scriptler, siz paketi npm install komutuyla indirdiğiniz anda çalışıyor ve bilgisayarınızdaki çevre değişkenlerini (environment variables), özellikle de .env dosyalarındaki API anahtarlarını ve şifreleri uzak bir sunucuya gönderiyor.

Zararlı Kod Kendini Nasıl Gizliyor?

Saldırganlar aptal değil; yazdıkları zararlı kodları genellikle anlaşılması zorlaştırılmış (obfuscated) bir şekilde sunuyorlar. Kodun içinde anlamsız karakter dizileri görüyorsunuz ama bu kod çalıştığında aslında sizin sisteminizden veri sızdırıyor (data exfiltration). Axios gibi popüler bir paketin taklidini kullandığınızda, ağ isteklerini yöneten bir kütüphane olduğu için, dışarıya giden şüpheli trafik bazen gözden kaçabiliyor. Sonuçta işi bu, değil mi? Dışarıya istek atmak!

Neden Bu Kadar Kolay Kandırılıyoruz?

Bunun temel sebebi "güven". Bir paketin indirilme sayısı yüksekse veya ismi tanıdık geliyorsa, kodunu satır satır incelemeden projemize dahil ediyoruz. Ancak NPM ekosistemi o kadar büyük ki, her gün binlerce yeni paket veya sürüm çıkıyor. Bu devasa denizde, kötü niyetli kişilerin araya sızması maalesef çok zor değil. Özellikle bağımlılık karmaşası (dependency confusion) denilen yöntemle, şirket içi özel paketlerinizle aynı isimde ama daha yüksek sürüm numaralı sahte paketler NPM'e yüklendiğinde, sistem otomatik olarak zararlı olanı çekebiliyor.

Peki, Kendimizi Nasıl Koruyacağız?

Hemen panik yapmaya gerek yok ama tedbiri de elden bırakmamalıyız. İşte projelerinizde uygulamanız gereken altın kurallar:

  • Kilitleme Dosyalarını (Lock Files) Önemseyin: package-lock.json veya yarn.lock dosyaları, bağımlılıklarınızın tam olarak hangi sürümde kalacağını belirler. Bu dosyaları mutlaka versiyon kontrol sisteminize (Git) ekleyin.
  • npm audit Komutunu Kullanın: Projenizdeki bilinen güvenlik açıklarını (vulnerabilities) taramak için düzenli olarak npm audit komutunu çalıştırın.
  • Otomatik Tarama Araçları: Snyk veya Socket gibi araçlar, projenize yeni bir paket eklerken onun güvenilirliğini ve içinde gizli scriptler olup olmadığını otomatik olarak denetler.
  • Minimum Bağımlılık Prensibi: Sırf bir string'i ters çevirmek için devasa bir kütüphane eklemeyin. İhtiyacınız olmayan her paket, potansiyel bir saldırı kapısıdır.
  • CI/CD Süreçlerinde Güvenlik: Kodunuzu canlıya almadan önce (deployment), pipeline aşamasında güvenlik taramalarından geçtiğinden emin olun.

Sonuç: Uyanık Kalmak Zorundayız

Axios ve benzeri paketler üzerinden yaşanan bu durum, açık kaynak dünyasının hem gücünü hem de zayıflığını gösteriyor. Topluluk bu hataları hızlıca fark edip paketleri yayından kaldırsa da, o kısa sürede binlerce sistem etkilenmiş olabiliyor. Bir yazılım geliştirici olarak sadece kod yazmak yetmiyor; artık kullandığımız araçların güvenliğini de bir dedektif gibi sorgulamalıyız.

Umarım bu yazı, projelerinizde daha güvenli adımlar atmanıza yardımcı olur. Unutmayın, en büyük güvenlik açığı genellikle dikkatsizlikten kaynaklanır. Bir sonraki teknik yazımda görüşmek üzere, güvenle kalın!

Yorumlar (0)
Yorum Yap