Gerçekten Büyük Bir Tehdidi Atlattık
(xeiaso.net)- Yakın zamanda NPM paket ekosisteminde yaşanan tedarik zinciri saldırısı, aslında çok daha büyük zararlara yol açabilirdi
- Saldırgan, popüler kütüphaneleri kötüye kullanarak zararlı kodu yalnızca kripto para cüzdan adreslerini değiştirme yönünde kullandı
- Bu saldırı, geliştiricilerin iki aşamalı kimlik doğrulama bilgilerini çalmak için sofistike phishing e-postaları üzerinden gerçekleştirildi
- Eğer daha ölümcül bir biçimde kullanılsaydı (ör. API anahtarlarının çalınması gibi), çok büyük çaplı zarar ihtimali vardı
- Tüm bağımlılıkların potansiyel olarak riskli olduğu gerçeği ve bağımlılık ağacının tamamını anlamanın önemi vurgulanıyor
Saldırıya genel bakış ve endişeler
- Yakın zamanda en büyük paket ekosistemlerinden biri olan NPM içinde popüler paketler saldırıya maruz kaldı
- Örnek işlevler: terminal renk işleme, renk adı-RGB eşlemesi, fonksiyon hata ayıklama dekoratörleri, dizi benzeri değerleri tespit eden yardımcı araçlar vb.
- Bu tür genel amaçlı bağımlılıklar çok geniş biçimde kullanılıyor ve koda sızdığında doğrudan production ortamına dağıtılma ihtimali yüksek
- Eğer içine kötü amaçlı proxy, API anahtarı hırsızlığı ya da başka ciddi saldırılar eklenmiş olsaydı, sonuçlar çok daha ağır olabilirdi
- Gerçekte ise bu zararlı kod, çevrim içi cüzdanlarda (ör. MetaMask) yalnızca kripto para ödeme adreslerini değiştirme yöntemiyle çalışıyordu
Phishing saldırısının sofistikeliği
- Saldırının başlangıç noktası çok iyi hazırlanmış bir phishing e-postasıydı
- NPM kullanıcı adını kullanarak kişiselleştirilmiş bir izlenim veriyordu
- "Güvenlik için parolanızı ve iki aşamalı kimlik doğrulama bilgilerinizi değiştirin" mesajıyla güven oluşturmaya çalışıyordu
- NPM'in kendine özgü işleyişiyle birleşince, sıradan bir kullanıcının kolayca kanabileceği bir içerik kurgulanmıştı
- Belirli bir son tarih vererek aciliyet hissi yaratıyor, yoğunluk içinde dikkatsizce phishing bağlantısına tıklanmasını hedefliyordu
- Gerçek NPM resmi alan adına benzeyen bir
.helpalan adı kullanıyordu
- En dikkat çeken kısım, resmi alan adı yerine yalnızca "npmjs.help" kullanılmasıydı
- Günümüzde çeşitli yeni gTLD'ler (Generic Top Level Domain) bloglarda ve belgelerde yaygın biçimde kullanıldığı için bu da doğal görünebiliyordu
Saldırının potansiyel zararı
- Phishing e-postası, kullanıcının iki aşamalı kimlik doğrulama bilgilerini çaldıktan sonra saldırı kodu ekleyip yeni paket sürümleri yayımlamayı mümkün kılıyordu
- is-arrayish, color-string, color-name gibi son derece yaygın kullanılan önde gelen kütüphaneler hedef alındı
- Eğer zararlı kod yalnızca kripto para ele geçirmekle kalmayıp API anahtarı hırsızlığına kadar genişletilseydi, ölümcül sonuçlar doğurabilirdi
- Örneğin OpenAI ve AWS API anahtarlarının kitlesel biçimde sızması gibi, uzun vadeli ve büyük ölçekli zararlar ortaya çıkabilirdi
- Gerçekte enfekte edilen kütüphanelerin çoğu daha çok komut satırı araçlarında kullanıldığından, kripto para hırsızlığı amacı da o ölçüde sınırlı kaldı
Web3 ekosistemini hedef alma ve saldırganın stratejisi
- Bu saldırının ana hedefinin Web3 kullanıcıları (tarayıcı üzerinden ödeme yapanlar vb.) olduğu anlaşılıyor
- Web3 ile ilgisiz genel amaçlı kütüphaneleri hedef alarak, Web3 ekosisteminde hızlı fark edilme ve engellenme ihtimalinden kaçınıldı
- Örnek: MetaMask ile entegre çalışan kütüphaneler dikkatle denetlense bile, saldırının metin rengiyle ilgili bir yardımcı araçtan geleceğini öngörmek zordur
Geliştirici ekosistemi için dersler
- Bu vaka, tüm bağımlılık paketlerinin gerçekte zararlı olabileceği gerçeğini vurguluyor
- Bağımlılık ağacını her zaman tamamen kontrol etmek veya izlemek konusunda pratik sınırlar var
- Hızlı production dağıtım akışı ve zaman baskısı altında, güvenlik incelemesinin geri planda kalabildiğini gösteriyor
- Bundan sonra projenin tüm bağımlılık yapısını anlamanın ve dikkatli yönetmenin önemi daha da artıyor
Kapanış ve not
- Bu içerik belirli bir kişiyi suçlamak ya da sorumluluk yüklemek amacı taşımıyor; önemli olan herkesin phishing saldırılarına maruz kalabileceğini bilmesi
- Bu yazının yayımlanmasının ardından durum değişmiş olabilir; içerikte hata ya da soru işareti varsa doğrudan doğrulama yapılması gerekir
Tags:
1 yorum
Hacker News görüşü
nx npm tedarik zinciri saldırısı, pek çok şirketin kaçamadığı bir kurşundu; sadece VS Code nx eklentisini kurmak bile npm üzerinden en güncel nx sürümünü otomatik kontrol ediyordu ve Github oturumu (ör. GH CLI ile şirket hesabına giriş) ya da
.envdosyasında kritik kimlik bilgileri varsa bunların tamamı sızdırılabiliyordu; bu, bağımlılık sabitlemesini veya güvenlik güncellemelerini iyi yönetseniz bile kaçınamayacağınız bir durumdu; bu ekosistemde temelden daha derin değişikliklere ihtiyaç var; ayrıntılar için resmî güvenlik duyurusuna bakıngit pushyaparken internete bağlanıyorumGerçekten de kıl payı kurtulduk; böyle paketlere erişimi olan bir saldırganın sadece bir kripto para hırsızlık aracı yüklemiş olmasına inanmak zor; eline böyle kusursuz bir fırsat geçmişken fazladan bir hafta harcayıp daha sofistike exploit'ler yerleştirmek daha mantıklı görünürdü; API anahtarları, SSH açık anahtarı ekleme, sunucu IP'lerini sızdırma, geliştirici cihazlarının tarayıcı profilleri veya oturum token'ları, hatta masaüstümde kayıtlı Amazon kart bilgileri gibi çalınabilecek çok fazla şey var; bunları kendin kullanmasan bile dark web forumlarında kolayca satabilirsin; belki de gerçekten yetenekli siber suçlular zaten istikrarlı ve yüksek maaşlı teknoloji şirketlerinde çalışıyordur da geriye bu kadar basit saldırılar kalıyordur diye düşünüyorum
Ertelemek benim için bir hayatta kalma tekniği; başkaları beta test yapana kadar beklediğim için geçmişte şirkette 12 yıl boyunca yalnızca Microsoft Office 2000 kullandım ve yükseltmelerden kaynaklanan sorunlar ya da yeniden eğitim olmadan 10 yıl huzurlu zaman geçirdim; ayrıca e-postalardaki bağlantılara asla tıklamama alışkanlığım var
Küçük startup'lar için zor olabilir ama npm gibi büyük oyuncuların
npm.io,npm.sh,npm.helpgibi npm alan adının tüm TLD sürümlerini önceden alması gerektiğini düşünüyorum; saldırganınnpm.helpalan adını ele geçirmiş olması bu saldırıyı daha etkili kıldıno-reply-aws@amazon.comyerineno-reply@tax-and-invoicing.us-east-1.amazonaws.comyapabiliyor; ilk kez görülen bu adres neredeyse phishing e-postası gibi görünüyor ama resmî olduğu söylenince insan kararsız kalıyor; hatta önceden gönderilen bilgilendirme e-postası bile phishing gibi göründüğü için gerçek faturayı görene kadar ekli PDF dosyasını açmıyorum; şirketler müşterilere phishing'e dikkat edin derken gereksiz yere kafa karıştırıcı davranıyornpmjs.helpgibi alan adlarına yanlışlıkla tıklanması çok gerçek bir şeyYa biri çok ince çalışan bir yaklaşımı (Jia Tan tarzı) bizim gevşek güvenliğimizle (editör eklentileri, shell userland vb.) birleştirirse? Geliştirici araçları süper kullanıcı yetkileriyle çalışıyor ama en az denetlenen şeyler de bunlar; ben de elisp, neovim, vscode ve basit userland araçlarının hepsini tek tek denetleyemem; en iyi ihtimalle nixpkgs üzerinden alıyorum; biri bir gün daha iyi bir VSCode eklentisi çıkarır ve 1-2 yıl beklerse oyun biter, GG
MetaMask gibi cüzdanlar hedef alınmıştı ama MetaMask'in LavaMoat adlı izolasyon modülü sayesinde bu tür saldırılara karşı epey iyi korunduğunu duydum; gerçek koruma seviyesini ayrıntılı analiz eden bir yazı varsa gerçekten görmek isterim; kişisel olarak MetaMask ile ilgim yok ama bu tür güvenlik önlemlerinin (gerçek saldırılara kıyasla uygulamaya alınması yavaş olsa da) ne kadar etkili olduğunu merak ediyorum; ayrıca ilgili haberi ekliyorum
"Gerçek şu ki bu tür phishing saldırılarında eninde sonunda herkes düşer" sözüne karşılık, ben şahsen muhtemelen düşmem diye düşünüyorum; kendim talep etmediğim hiçbir e-postadaki bağlantıya asla kimlik bilgisi girmem (ör. parola sıfırlama); bence 2025'te herkesin mutlaka edinmesi gereken bir güvenlik becerisi bu
Makaledeki "tüm kötü amaçlı yazılımlar yalnızca kripto cüzdan adreslerini değiştirdi" açıklamasının aksine, MetaMask'in etkilenmemesinin nedeni şuydu:
Büyük açık paket depolarının çok daha güçlü güvenlik çözümlerine ihtiyacı var; olmadı en azından güvenilir şekilde incelenmiş temel paketlerden oluşan bir küme olmalı; Python, Rust ekosistemleri vb. de aynı şekilde güvene dayanarak işliyor
"Bunu durdurmanın yolu yok" iddiası en sık, ihlallerin en çok yaşandığı ekosistemlerde duyuluyor