NPM Koşusu, saldırganların kötü amaçlı paketlere bakıcı olarak kimseyi eklemesine izin ver

4 yıl önce

NPM kayıt defterindeki 'mantıksal kusur', kötü amaçlı paketlerin yazarlarının paketlerine olan güveni artırmak amacıyla herhangi bir ve herhangi bir sayıda kullanıcıyı paketlerine 'bakım' olarak eklemelerini sağladı.

Nodejs bileşenlerinin Github'a ait deposu, sorunun Cloud Native Güvenlik Şirketi Aqua tarafından sorumlu bir şekilde bildirildikten sonra kusuru düzeltti.

NPM kayıt defterinde 'Paket Dikimi' olarak adlandırılan bir güvenlik kusuru, tehdit aktörlerinin kötü niyetli paketlerine herhangi bir geliştiriciyi (ve herhangi bir sayısını) sessizce eklemelerine izin verdi.

Aqua'nın Nautilus ekibinde güvenlik araştırmacısı Yakir Kadkoda, "Yakın zamana kadar NPM, bu kullanıcıları bilgilendirmeden veya rızalarını almadan paketin bakımı olarak kimseye eklemesine izin verdi."

Hareket, yasadışı bir pakete bakıcı olarak eklenen kişiden veya şirketten herhangi bir onay gerektirmez ne de onay gerektirmez.

Daha da kötüsü, kötü niyetli paketlerine başka bakımcılar ekledikten sonra, saldırgan kendilerini paketin bakımcılarının listesinden sessizce kaldırabilir - şimdi sadece pakette sadece yeni bakıcıları bununla hiçbir ilgisi olmayan yeni bakıcıları bırakabilir.

Bunun gibi bir teknik, kötü niyetli bileşenlerine güvenilirlik sağlamak isteyen bir tehdit aktörü için son derece kazançlı olabilir.

Saldırganlar, güvenilir geliştiriciler ve popüler şirketleri kötü amaçlı paketlerine bakarak ekleyerek, geliştiricileri kaşlarını kaldırmadan paketlerini yükleme için kandırma şansına sahiptir.

Konsepti daha iyi göstermek için Kadkoda, başlangıçta demo NPM hesabı paketteki tek bakımcı olan bir test paketi olan 'fb_npm_package' yayınladı.

Araştırmacı daha sonra Facebook'un (Meta) ve NPM'nin resmi hesaplarını projenin koruyucular listesine ekledi ve sonra kendini kaldırdı.

'FB_NPM_Package' nin NPM sayfasını ziyaret eden herkes artık paketin sahipliğini yalnızca yanıltıcı olan Facebook ve NPM'yi içerecek şekilde algılayacaktır.

Mart 2021'de, BleepingComputer tarafından bildirildiği gibi, güvenlik araştırmacısı Alex Birsan, Microsoft Azure SDK'nın resmi sitesinde listelenen sahte, test paketini almak için tekniğin bir kullanım örneğini de uyguladı.

Aqua araştırmacısı, bu hafta yayınlanan bir raporda, "Herhangi bir popüler bakım alanında zehirli paketler atayabileceğiniz için, bu mantıksal kusur ve onun 'paket dikimi' sonuçlarını adlandırdık."

Github gibi kaynak kod kontrol sistemleri, kod taahhütlerinin herkes adına gönderilebileceği şakalar için bir yer izin veriyor - bazıları zaman ve zamana sahip, Linux çekirdeği yaratıcısı Linus Torvalds'dan gelen sahte taahhütlere sahip. Ancak, GPG imzalama gibi kriptografik özellikler, kod taahhütlerini yetkili olarak imzalamayı ve kökenleri açısından tüm şüpheleri ortadan kaldırmayı mümkün kılar.

Bununla birlikte, bir projenin tüm mülkiyeti ve koruyucular listesi değiştirildiğinde - kaynak kodu değil, bitmiş paketleri göndermek için tasarlanmış bir yazılım kayıt defterinde de değiştirildiğinde işler daha karmaşık hale gelir.

Kadkoda, bir güvenlik kusuru olmaktan başka, "paket dikimi" gibi bir tekniğin, toplumda başka türlü saygın geliştiricilerin itibarını zedelemek için rakipler tarafından istismar edilebileceğini vurguluyor.

Kadkoda, "Saldırgan bu gelecekteki koruyucuları dikkatlice seçerse, bu paketin itibarını ve görünümünü etkileyecektir."

"Örneğin, paket Lodash oldukça popüler ve güvenilir. Sahiplerini Mathias, JDalton ve BNJMNT4N'yi yeni, kötü niyetli bir pakete eklersek, birçok geliştirici bu paketin meşru ve hatta çekici olduğunu düşünmek için kandırılabilir."

Kötü niyetli paket daha sonra NPM tarafından yakalanırsa, akla gelen makul bir senaryo, platformun politikalarını ihlal ettiği için yanlış bir şekilde algılanan "yeni" bakıcıların hesaplarını potansiyel olarak askıya almaktır.

Kadkoda sonunda Test paketini NPM'den indirdi ve kusuru NPM'ye bildirdi.

Bir parçası olduğum açık kaynak güvenlik firması Sonatype'den elde edilen 'fb_npm_package' nin arşivlenmiş bir kopyası, paketin temiz olduğunu ve işlevsel kod içermediğini gösteriyor, sadece bir manifest dosyası:

Ancak, fırsatçı bir tehdit oyuncusu "paket ekimi" gibi bir kusurla çok daha fazlasını başarabilir.

Bu tür kusurlar olmasa bile, saldırganlar açık kaynak depolarını (NPM, PYPI ve Rubygems) tekrar tekrar zehirleyebildiler ve kötü niyetli paketler binlerce indirme kazandı.

Bunun gibi bir teknik, tehdit aktörlerini, aksi takdirde yasadışı ve kötü niyetli paketlerine büyük bir meşruiyet mühürü eklemeleri için güçlendirecektir.

Aqua, bulgularını 10 Şubat'ta GitHub'ın Hackerone Bug Bounty programına bildirdi ve 13'üncü bir onay aldı.

26 Nisan'a kadar Github, NPMJS.com'daki kusuru düzeltti ve güvenceleri tanıttı:

NPM paketinize yeni bir bakıcıyı davet etmek, projenize eklenmeden önce isteğinizi onaylamalarını ister.

Sorunu artık NPM'de çoğaltmanın bir yolu ya da şimdiye kadar herhangi bir gösterge, tekniğin tehdit aktörleri tarafından aktif olarak kaldırıldığına dair bir gösterge yok.

Ne olursa olsun, Kadkoda mevcut geliştiricileri NPM hesapları altında listelenen projeleri iki kez kontrol etmeleri konusunda uyarıyor:

Araştırmacı, "NPM kullanıcıları, isimleri altında listelenen tüm paketlerin, rızası olmadan herhangi bir projeye eklenmediklerinden emin olmak için gerçekten kendilerine ait olduklarını kontrol etmelidir."

GÜNCELLEME 28 Nisan 08:14 ET: 2021'de tekniğin bir kullanım durumunu gösteren Alex Birsan'a referans eklendi.

Üçüncü NPM Protesto yazılımı: 'Etkinlik-Source-Polyfill' Rusya'yı Çağırıyor

Büyük sabotaj: Ünlü NPM Paketi, Ukrayna Savaşı'nı protesto etmek için dosyaları siliyor

Microsoft'un Azure SDK sitesi sahte paketi listelemek için kandırıldı

Bağlantılı cihazların her zamankinden daha savunmasız olduğu 3 neden

Github, Bogus DMCA Yayından Olduğu Popüler Python Repo'yu geri yükler

Kaynak: Bleeping Computer

More Posts