NPM (Düğüm Paket Yöneticisi) kayıt defteri, paketlerin güvenilirliğini zayıflatan ve saldırganların bağımlılıklar halinde kötü amaçlı yazılımı gizlemelerini veya kurulum sırasında kötü amaçlı komut dosyası yürütmesini mümkün kılan "Manifest Karışıklık" adlı bir güvenlik atlamasından muzdariptir.
NPM, JavaScript programlama dili için bir paket yöneticisidir ve yaygın olarak kullanılan Node.js ortamı için varsayılandır. Paket yöneticisi, proje sahiplerinin NPMJS.com adresindeki "NPM Kayıt Defteri" veritabanında barındırılan yazılım paketlerinin kurulumunu, yükseltilmesini ve yapılandırılmasını otomatikleştirmelerine yardımcı olur.
2020'de platform Microsoft tarafından GitHub üzerinden satın alındı ve bugün dünya çapında 17 milyondan fazla yazılım geliştiricisinin ayda 208 milyar paket indirdiği tahmin ediliyor.
Github ve NPM'de eski bir mühendislik müdürü olan Darcy Clarke, blogunda yazılı bir yazıda açık karışıklık problemini vurguladı ve eski işvereninin en azından Kasım 2022'den beri konuyu bilmesine rağmen, çok az şey yapıldığını açıkladı. ilişkili riskler.
NPM Kayıt Defteri, ek geliştirme çalışmaları gerektirmeden bir uygulamanın özelliklerini genişletmek için kullanılabilecek geniş bir paket içerdiği için geliştiriciler arasında son derece popülerdir.
Bununla birlikte, popülaritesi, tehdit aktörlerinin Dev'in bilgisayarlarını devralmak, kimlik bilgilerini çalmak ve hatta fidye yazılımlarını dağıtmak için kötü amaçlı paketleri dağıtmalarını sağlıyor.
Manifest karışıklığı meydana gelir, bir paketin NPM kayıt defterinde sunulan tezahür bilgileri ile paket yüklendiğinde kullanılan yayınlanmış NPM paketinin tarballındaki gerçek 'paket.json' dosyası arasında bir tutarsızlık vardır.
Hem bir paket yayınlarken NPM'ye gönderilen ve Pack.json, dağıtımda kullanılan komut dosyaları, bağımlılıklar oluşturma vb. Gibi paket adı, sürüm ve diğer meta veriler hakkında bilgi içerir.
İkisi NPM kayıt defterine ayrı olarak gönderilir ve platform eşleşip eşleşmediklerini doğrulamaz, böylece verileri farklı olabilir ve içeriklerini incelemedikçe hiç kimse bilemez.
Bu, bir tehdit oyuncunun, bağımlılıkları ve komut dosyalarını kaldırmak için NPM kayıt defterinde görünmemeleri için yeni bir paketle gönderilen manifest verilerini değiştirmesini sağlar. Ancak, bu komut dosyaları ve bağımlılıkları hala Package.json dosyasında bulunur ve paket yüklendiğinde yürütülecektir.
Bu "Manifest Karışıklık", Package.json'da listelenen bağımlılıklar olmasına rağmen, Clarke'ın kavram kanıtı paketi için NPM'de listelenen sıfır bağımlılık olduğunu gösteren aşağıdaki resimde gösterilmiştir.
"Manifest karışıklığı" tutarsızlığından kaynaklanan riskler arasında önbellek zehirlenmesi, bilinmeyen bağımlılıkların kurulumu, bilinmeyen senaryoların yürütülmesi ve potansiyel olarak da saldırıları da içerir.
"Ve açık olmak gerekirse, bu sadece gizli bağımlılıklar değil," diye uyardı soket CEO'su Feross Aboukhadijeh, araçlarının bu konudan etkilenmediğini söyleyen BleepingComputer'a.
"Tezgah karışıklığı ayrıca bir saldırganın gizli yükleme komut dosyalarını da içermesine izin verir. Bu gizli komut dosyaları ve bağımlılıkları, NPM CLI tarafından yüklenecek olsalar bile NPM web sitesinde veya çoğu güvenlik araçında görünmez."
Ne yazık ki, NPM topluluğu ve NPM@6, NPM@9, iplik@1 ve PNPM@7 dahil olmak üzere tüm büyük paket yöneticileri bu sorundan etkilenmektedir.
Ne yazık ki, bu bağımlılıklar, sürüm numaraları ve hatta paket adları doğru olmayabileceğinden, NPM kayıt defterine güven eksikliğine yol açar.
Bunun yerine, geliştiriciler sürüm numaralarını belirlemek için Package.json'u manuel olarak okumalıdır.
Clarke, Github'ın en az 2022'den beri tezahür karışıklık sorunları hakkında bilgi sahibi olduğunu ve NPM CLI'nin GitHub deposunda Düğüm-Canvas paketi ile ilgili bir hata raporu bunu onaylıyor gibi görünüyor.
Mühendis, sorunun örneklerini 9 Mart 2023'te sunan ayrıntılı bir hackerone raporu sundu.
21 Mart 2023'te Github bileti kapattı ve konuyla ilgili olarak dahili olarak uğraştıklarını yanıtladı. Yine de, riskleri henüz düzeltmediler ve onları NPM topluluğuna iletmediler.
Clarke, NPM'nin büyük boyutu ve uzun yıllar boyunca bu güvensiz uygulamayı takip ettiği gerçeğinden dolayı, bu sorunu ele almanın önemsiz olmaktan uzak olduğunu belirtiyor.
GitHub, NPM'de tezahür karışıklığı ile başa çıkmak için bir plan oluşturana kadar, Clarke, paketlerin yazarlarının ve bakımcılarının, belirgin verilere olan güvenini kaldırmasını ve bunun yerine tüm meta verilerin adından ve sürümden ayrı olarak tüm meta verileri 'Package.json' dosyalarından ayırmasını önerir. manipülasyon.
Başka bir koruma önlemi, paket veritabanı ile NPM istemcisi arasında, manifest verileri ile paketin tarball'ındaki bilgiler arasındaki tutarlılığı sağlamak için ek kontroller ve doğrulamalar uygulayabilen bir kayıt defteri proxy kullanmak olacaktır.
BleepingComputer sorunla ilgili GitHub ile iletişime geçti ve bu gönderiyi bir yanıt alır almaz güncelleyeceğiz.
NPM paketleri, nodej'leri taklit eden Türkorat ikili işler sunarken yakalandı
MITER, En Tehlikeli 25 Yazılım Hatasının Yeni Listesi'ni yayınladı
Yeni Arcserve UDP Auth Bypass Güvenlik Açığı
Criminal IP, kullanıcı güvenliğini artırmak için hata ödül programını ortaya çıkarır
Yeni Pindos JavaScript Deliği Bumblebee, Icedid Kötü Yazılım
Kaynak: Bleeping Computer