JA_NPM

NPM'nin yaygınlaşmasına dair örnek olay incelemesi: "Çay ararken tavşan deliğine inmek"

At XygeniGeçtiğimiz yıl boyunca, halka açık açık kaynak kodlu paket kayıt defterlerini şüpheli faaliyetlere veya doğası gereği kötü amaçlı kodlara karşı izleyen kapsamlı bir sistem uygulamakla meşgul olduk.

Bu altyapı, günlük olarak yayınlanan tüm paketleri gerçek zamanlı olarak analiz etmemizi sağlıyor. Ayrıca, anormal kullanıcı davranışlarını izlememize de olanak tanıyor.

Paket kayıt defterlerinde kötü amaçlı kodun varlığı yaygın olarak bilinmektedir.Bununla birlikte, bu kayıt defterlerinin düzenli kullanıcıları tarafından tamamen fark edilmeyen başka garip veya alışılmadık davranışlar da vardır. Bunları yakından takip eden bizler için bile, bu tür davranışların nedenini veya açıklamasını bulmak kolay değildir.

Xygeni ekibini karakterize eden şey, bir sorunla karşılaştığımızda gösterdiğimiz azimdir, bu yüzden bu konuyu daha derinlemesine inceledik.

Her şey istatistiklerdeki ani bir artışla başladı.

Daha önce de belirttiğim gibi, altyapımızın bir parçası olarak, halka açık açık kaynak kodlu paket kayıt defterlerindeki birçok etkinlik ölçütünü izliyoruz.

Mart ayının son günlerinde iş arkadaşım Carmen alarm verdi. Önemli bir sapma gözlemlemeye başladık. NPM'de yayınlanan paket sayısı. İlk incelememizin ardından, bu sapmanın esas olarak paket yayınlama oranları aniden fırlayan nispeten az sayıda kullanıcıdan kaynaklandığını tespit ettik.

Bu durum, süreçlerimizi ve platform içindeki ilgili verileri gözden geçirmemize neden oldu. Neyse ki, incelememiz verilerin doğru göründüğünü belirledi, ancak bu da biraz kafa karıştırıcıydı!

Daha detaylı inceleme sonucunda, bu paketlerin birkaç ortak özelliğe sahip olduğunu tespit ettik:

  • Yayıncılar, en fazla bir veya iki aylık olan, yeni oluşturulmuş kullanıcılardı.
  • Paketlerin isimleri görünüşte rastgeleydi, muhtemelen bir sözlük kullanılarak oluşturulmuştu. Örneğin, garip isimlere sahip paket isimleri bulabiliyoruz. devasa_akar-gülümseme çayı, erick-mangut94-sukiwir, egzotik_sürüngen-uygulamadev or obvious_tuna-appteadevBulduğumuz varlıklara dair bazı örnekleri ekte sunacağız.
  • Bu paketlerin içerikleri birbirine çok benziyordu, hatta çoğu zaman aynıydı.

Bu bağlamda, paketlerden birinin Python betiği içerdiğini gözlemledik. muhtemelen kazaraBu, paketleri otomatik olarak yayınlamak için kullanılıyor gibi görünüyor.

npm

Ağı çözmek

Bu yayınevlerinden bazılarının geçen ayki yayın faaliyetleri aşağıdaki zaman çizelgesine göre gerçekleştirilmiştir:

 

npm saldırısı

İşte bu olayla ilgili paylaşabileceğimiz tüm istatistikler:

npm kontrolü

Bu kullanıcılarla ilişkili bazı paketlerin bireysel incelemesinden anlamlı bir sonuç çıkmadı. Bu durum bizi, bu başarının nedenlerine dair ipuçları sağlayabilecek kalıpları aramak için hepsinin genel durumunu analiz etmeye yönlendirdi.

Sonuç olarak, analiz etmemiz gereken epey sayıda paketimiz var:

npm saldırısı 2

Analizden çıkarabileceğimiz en önemli noktalar şunlardır:

  • NPM paketlerinin çoğu birbiriyle ilişkilidir. Bazıları diğerlerinin bağımlılıkları olarak referans gösterilir.
  • Tuhaf paketler olmalarına ve muhtemelen varlıklarından kimsenin haberdar olmamasına rağmen, bazılarının haftalık indirme sayıları oldukça yüksek. Normal bir kullanıcının bu tür paketleri indirmek isteyebileceğini kabul etmek zor. 0mc03esisd
  • Bazılarının ilişkili depoları vardır. Bazen bu depoların sahipleri, npm'deki hesaplara benzer şekilde, sahte hesaplar gibi görünmektedir.

Not: Kullanıcılar ek paketleri aşamalar halinde yüklediğinden, sağlanan verilerde küçük farklılıklar olabilir.

npm saldırısı 2

Bu, ilgili depolardan birine örnektir. Yayınlanmış bazı paketlerin kodunu içerir. Ayrıca, bir dosya gibi başka dosyalar da bulunur. çay.yaml dosyası.

Oyuncu(lar)la tanışmak

Bunun tek bir yazarın mı yoksa birden fazla işbirlikçinin mi eseri olduğunu belirlemek zordur. Bununla birlikte, bu faaliyetin kökenini daraltan bazı kanıtlarımız var:

  • Dil: Kodda yer alan bazı yorumlar Endonezce'dir.
npm saldırısı 3
  • Konum: İlgili veri depolarının bazı sahipleri, depoların Endonezya'da bulunduğunu belirtmektedir.
  • GitHub'daki etkinlik meta verileri aracılığıyla belirleyebildiğimiz konum da Endonezya'yı işaret ediyor.
NPM_JA

Beş çayı

Endonezya'nın bir İngiliz kolonisi olduğu göz önüne alındığında, burada çay bulunması son derece yerinde olurdu. Ancak bu durumda, oldukça özel bir çay türünden bahsediyoruz.

Hatırlıyor musun çay.yaml Başlangıçta gördüğümüz dosyalar mı? O zamanlar içeriklerini göstermemiştik, ama şöyle görünüyordu:

npm saldırısı 4

Bu dosyalar şunlarla ilgili gibi görünüyor: Çay protokolüPeki, tam olarak nedir bu? Ulaştık https://tea.xyz/blog/250k-grant-for-open-source-developersBu da amacı anlatıyor:

Tea, açık kaynak geliştiricileri için yetersiz tazminat sorununa çözüm bularak dijital dünyayı alt üst ediyor. Bu sorunun çözümü her zamankinden daha acil; bu nedenle protokolün lansmanından önce 250 dolarlık hibe dağıtmaya karar verdik. Bu ilk aşama, açık kaynak yazılım ekosisteminde önemli bir etkiye sahip olan ve Tea Protokolü Teşvikli Test Ağı'ndan önce 30'dan yüksek bir teaRank'a sahip açık kaynak projelerinin yöneticilerini desteklemeyi amaçlıyor.

Çay protokolü belgelerine göre: 

"Bir projenin Tea Protokolü'ne kaydedilebilmesi için, projenin anayasası görevi gören ve belirli eylemleri gerçekleştirmek için gereken katılımcı sayısını ve oy sayısını düzenleyen tea.yaml dosyasına ihtiyaç duyulmaktadır."

 

Çay ağına erişim sağladıktan sonra, ününün abartıldığından şüphelendiğimiz paketlerden birini bulmaya çalıştık. Bulduk:

Bu durum, burada olup bitenleri açıklıyor gibi görünüyor: Bazı kullanıcılar, teaRank'ı ele geçirmek ve çay derneğinin sağladığı avantajlardan yararlanmak için açık kaynak projelerinin popülerliğini hayali rakamlarla şişiriyorlar. Sonuçta, para, seksle birlikte en eski itici güçtür. 

Sonuç ve son düşünceler

Bu NPM paketlerinde kötü amaçlı kod bulunduğuna dair herhangi bir kanıt olmamasına ve muhtemelen kimsenin bunları kullanmasını amaçlamamalarına rağmen, NPM, GitHub veya çay derneğinin çeşitli Hizmet Şartlarını (TOS) potansiyel olarak ihlal edebilirler. Ancak bu, çalışmalarımızın kapsamı dışındadır (yine de kendilerine bildirimde bulunulmuştur ve uygun gördükleri önlemler alınacaktır). Bu platformların kötüye kullanımı bizi ve kuruluşlarımızı bir şekilde etkileyecektir.

Şurası açık ki, görünüşte zararsız herhangi bir açık kaynak kodlu paket, tam bağlamsal bilgi olmadan anlaşılması zor davranışlar barındırabilir.

Bir geliştirici olarak, geliştirdiğimiz ve sürdürdüğümüz uygulamalarda kullanılan tüm açık kaynak kodlu paketleri belirli bir güvenlik seviyesinde manuel olarak kontrol etmenin zor olduğunu düşünüyorum. Bu kontrolü otomatikleştiren bir araç olmadan, bu görev ekiplerimizin sayısız saatini tüketebilir.

Açık kaynak dünyasının güvenli yerler olduğuna inanarak, diğer tarafa bakma seçeneği her zaman mevcuttur. Neyse ki, bu düşünce yapısının günümüzde çok yaygın olmadığına inanıyorum; bu olay pratikte zararsızdı, ancak yakın zamanda çok daha ciddi bir olay yaşadık. XZ Arka Kapıve öyle olmadı. tek bir.

Buraya kadar okuduysanız, bu ilginç olayın tüm ayrıntılarından keyif aldığınızı umuyorum. Xygeni'nin kuruluşunuzun güvenliğine ne gibi katkılar sağlayabileceğini gözden geçirmek için birkaç dakikanızı ayırmayı unutmayın.

Ek: Nihai makaleye dahil edilecek ilgili varlıkların listesi

NPM, yayınlanan paket sayısına göre daha ilgili kullanıcılara hitap eder: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

İşte ilgili paketlerinden küçük bir örnek: mikrositer, cryndex, Arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.

tea.yml dosyalarını içeren ilgili GitHub depolarından bazıları şunlardır:

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