package.json - package-lock.json - typosquatting

package.json dosyasındaki bir yazım hatası, benzer bir paketin güvenliği tehlikeye atmasına neden olabilir. Pipeline

Tek Bir Karakter Hatası Zararlı Yazılımın Yayılmasına Yol Açtı

Her şey bir yazım hatasıyla başladı. Özellik ekleme ve çekme isteği birleştirme telaşı içinde birisi yanlış yazdı. @utils_core yerine @utils-core içine paket.jsonO tek karakterlik hata bir problem yaratmadı. Bunun yerine, sessizce bir hata kodu yakaladı. sonraki aşamada kötü amaçlı benzer paket CI/CD Sabitlenmiş sürümlere duyulan güveni ve otomasyonu kullanarak çalıştırın. Açık kaynak kodlu yazılımlarda yazım hatasıyla alan adı ele geçirme dünyasına hoş geldiniz.

Yazım Hatasıyla Alan Adlı Saldırı: İnsan Hatalarından Beslenen Saldırı Yöntemi

Typosquatting, adından da anlaşılacağı gibi, kötü niyetli kişilerin meşru paketlere neredeyse aynı isimlerle paket kaydetmesidir. Hızlı tempolu ortamlarda bu işe yarar çünkü geliştiriciler, meşru paketlerin isimlerinin meşru paketlere çok benzediğine güvenirler. paket.json hem de paket-lock.json Beklentilerini yansıtıyor. Tek bir karakter bile farklı mı? Halkla ilişkilerde neredeyse görünmez bile olabilir.

NPM Yazım hatasıyla alan adı ele geçirme yoluyla istismar edilme geçmişine sahiptir. Örneğin, şu paketler: çapraz ortam yerine çapraz ortam or etkinlik akışı Arka kapılar, bu taklit yazılımların ne kadar etkili olabileceğini zaten gösterdi. Bu sahte paketler, doğru göründükleri ve anında çalışma hatası vermedikleri için genellikle incelemelerden geçiyorlar.

Sık karşılaşılan tuzaklar şunlardır:

  • Tire ve alt çizgi arasındaki fark: lodash-core vs lodash_core
  • Çoğullar: talep vs isteklerinizi
  • Yerine konulan karakterler: ifade yerine ekspres

package-lock.json dosyasının kör nokta haline geldiği yer

Geliştirici yazım hatasını düzeltiyor. Ya da öyle sanıyor. Ama şu an itibariyle, paket-lock.json Saldırganın paketini çoktan kilitlemiş durumda. Ve asıl risk burada gizli.

aksine paket.jsonElle düzenlenen ve daha fazla incelemeye tabi tutulan metin, paket-lock.json tarafından otomatik olarak oluşturulmuştur NPMSonuç olarak, genellikle bir formalite gibi ele alınır, atlanır veya sadece üstünkörü geçilir. pull request İncelemeler. Ekiplerin bunu "çok gürültülü" olarak işaretlemesi veya derinlemesine incelemeden körü körüne güvenmesi alışılmadık bir durum değil.

Saldırganlar bunu biliyor. Buna güveniyorlar. Bir kere kötü amaçlı paket Bir yazım hatası nedeniyle referans gösteriliyor. package.json, package-lock.json Çözümlenmiş sürümü kaydeder. Yazım hatası daha sonra düzeltilse bile, kilit dosyası açıkça yeniden oluşturulmadığı sürece kötü amaçlı kayıt kalıcı olabilir.

Daha da kötüsü, tutarlılığı sağlaması gereken sürüm sabitleme işlemi ters tepebilir. Saldırganlar sahte paketlerini meşru paketle aynı sürümde oluşturabilirler. Eğer CI/CD Sistem, sabitlenmiş sürümlere körü körüne güvenir; bilinen iyi bir sürüm numarasına sahip ancak farklı, kötü amaçlı bir kaynaktan gelen bir paketi yüklediğini algılamaz.

Bu sessiz ısrar, onu özel kılan şeydir. paket-lock.json Çok tehlikeli. Kesin derlemeleri sağlıyor, evet, ancak aynı zamanda kötü bir paketin manuel olarak yakalanıp temizlenmediği sürece ortada kalmasını da garanti ediyor.

CI/CDKötü amaçlı yazılımın bulaştığı yer – package.json

Tipik olarak CI/CD pipelineZararlı paket, çalışma zamanına kadar beklemek zorunda kalmaz. Akışın çok daha erken bir aşamasında çözümlenir ve tetiklenir:

Bağımlılık Çözümü
MKS pipeline p'den bağımlılıkların tam sürümlerini çeker.paket kilidi.json, artık şunları da içeriyor: Yazım hatası nedeniyle typosquatted paketi paket.json.

Kurulum Aşaması
`npm ci` çalıştırılırken, zararlı olan da dahil olmak üzere tüm bağımlılıklar yüklenir. Hiçbir uyarı, hiçbir yönlendirme yok, sadece sessiz kurulum.

Kurulum Sonrası Komut Dosyası Yürütme
Benzer görünümlü paket, kurulum tamamlandıktan sonra otomatik olarak çalışan bir kurulum sonrası komut dosyası içerir. İşte uzlaşma burada gerçekleşiyor.

Sözde kod örneği:

Sözde kod açıklaması:
Kurulum aşamasında, kurulum sonrası yaşam döngüsü kancası mevcutsa, sahte paket gizli mantığını tetikler; bu genellikle derlemeler veya testler çalıştırılmadan önce gerçekleşir. Bu, harici istekler göndermeyi, arka kapılar yerleştirmeyi veya diğer yetkisiz eylemleri içerebilir.

⚠️ Uyarı: Bu sözde kod yalnızca gösterim amaçlıdır ve gerçek ortamlarda kullanılmamalıdır.

Hiçbir uyarı tetiklenmiyor. Hiçbir şey başarısız olmuyor. Ortam, sizden önce zaten tehlikeye girmiş durumda. pipeline Hatta test aşamasına kadar ulaşıyor.

Çok Geç Olmadan Farkı Tespit Etmek

Sık yapılan bir hata: varsayımda bulunmak paket.json Bütün hikayeyi anlatıyor. Anlatmıyor. Gerçek güç, şu iki unsurun birleşiminde yatıyor: package.json + package-lock.json.

Bakmanız gerekenler:

  • Mu paket-lock.json Beklenmedik paketleri de dahil etmek mi?
  • Bilinmeyen kayıt defterlerinden kaynaklanan veya garip kapsamlara sahip herhangi bir bağımlılık var mı?
  • Sürüm numaraları aşırı spesifik mi yoksa uyumsuz mu?

Şu gibi komut satırı araçlarını kullanın:

  • npm denetimi bilinen sorunları işaretlemek
  • npm ls Tam bağımlılık ağacını görüntülemek için
  • fark sürümler arasında karşılaştırma yapmak paket.json hem de paket-lock.json

Sertleşin Pipelineİşe Yarayan Savunmalar

Yazım hatasıyla alan adı ele geçirilmesine karşı korunmak için:

  • Kapsam kısıtlamalarını uygulayın paket.json.
  • Birleştirme öncesi ekle hooks Kod denetimi yapmak ve bağımlılıkları doğrulamak.
  • Kullanım npm ci İstem dışı sürüm kaymasını önlemek için.
  • Düzenli olarak tarayın paket-lock.json Anomaliler için.

Ve en önemlisi: doğrulanmamış girişlere şu şekilde davranın: paket-lock.json potansiyel riskler olarak. Her commit Tedarik zinciri kontrol noktası olarak ele alınmalıdır.

Otomatik Algılama: Xygeni Gibi Araçlar Nasıl Yardımcı Oluyor?

Kesin çözüm olmasa da, otomatik araçlar gibi Xygeni Yazım hatası kaynaklı alan adı ele geçirme saldırılarının yaygınlaşmasında kritik bir rol oynar. Xygeni, DevOps iş akışınıza doğrudan entegre olarak, bağımlılık ele geçirme saldırılarına karşı, kod yürütülmeden önce gerçek zamanlı bir koruma katmanı ekler.

Xygeni şu şekilde yardımcı olur:

  • Şüpheli Paket Adı Tespiti:
    Yazım hatasıyla yapılan alan adı ele geçirme girişimlerini tespit etmek için akıllı sezgisel yöntemler kullanır. paket.jsonTanınmış paket adlarında küçük değişiklikler (eklenen alt çizgiler, yer değiştirmeler veya harf değişiklikleri gibi) arıyor.
  • Bilinmeyen Hash Doğrulaması:
    Her bir bağımlılığın hash değerini karşılaştırır. paket-lock.json Güvenilir kayıt defterlerinden alınan, doğruluğu kanıtlanmış dosyaların bulunduğu bir veritabanına karşı kontrol edilir. Paket adı ve sürümü doğru görünse bile, karma değerindeki uyuşmazlık bir uyarı işareti oluşturur.
  • Derleme Öncesi Engelleme:
    Doğrulanmamış veya şüpheli paketlerin kurulumunu, kurulum veya kurulum sonrası aşamalarına ulaşmadan önce engeller ve durdurur. CI/CD pipeline.
  • Bağımlılık Grafiği Analizi:
    Dolaylı yazım hatasıyla alan adı ele geçirme girişimleri veya kötü amaçlı geçişli bağımlılıklar için bağımlılık ağacının tamamını sürekli olarak inceler.
  • Uyarılar ve Raporlama:
    İşaretlenen sorunları, nedenlerini ve bağımlılık zincirinde nereden kaynaklandığını gösteren ayrıntılı ve eyleme geçirilebilir uyarılar sağlar.

Paket ekosistemleri daha karmaşık hale geldikçe, Xygeni gibi araçlar vazgeçilmez hale geliyor. Manuel inceleme, bağımlılıkların yayılması veya hızlı yinelemelerle birlikte ölçeklenebilir olmaktan çıkıyor. Xygeni, modern yaklaşımların gerektirdiği kritik kontrolleri otomatikleştirerek devreye giriyor. pipelineBu, güven ve doğrulama arasındaki boşluğu kapatmaya yönelik bir ihtiyaçtır.

Tek Bir Karakter. Gerçek Sonuçlar.

Bu egzotik bir şey değildi. sıfırıncı günBir yazım hatasıydı. Bir karakter yanlış yerleştirilmişti. paket.jsonsessizce güçlendirildi paket-lock.jsonVe kötü amaçlı yazılım, rutin bir işlem sırasında otomatik olarak gönderildi. CI/CD koşmak.

Yazım hatasıyla alan adı ele geçirmenin gerçek tehlikesi işte burada: karmaşıklığa ihtiyaç duymuyor. Hızı, güveni ve otomasyonu istismar ediyor. Doğru kontroller uygulansaydı bu uzlaşma önlenebilirdi:

  • Otomatik Tarama Kurulumdan önce şüpheli paket adlarını ve sürümlerini yakalamak için.
  • Kilit Dosyası Denetimi incelenmemiş veya beklenmedik girişleri tespit etmek için paket-lock.json.
  • İsim Doğrulama Sezgisel Yöntemleri Yakın eşleşmeleri güvenilir paketlere işaretlemek.

Tek bir karakter yeterliydi. Doğru kontroller, size ulaşmadan önce onu durdurabilirdi. pipelineGüven tek başına yeterli değil. Modern DevSecOps'ta her şeyi doğrulamanız gerekir, aksi takdirde her şey riske girer.

sca-tools-software-composition-analysis-tools
Yazılım risklerinizi önceliklendirin, giderin ve güvence altına alın.
Ücretsiz hesabınızı alın.
Hiçbir kredi kartı gerekmektedir.

Yazılım Geliştirme ve Teslimatınızı Güvence Altına Alın

Xygeni Ürün Paketi ile