PyPI açığı binlerce paketi tehlikeye atıyor


Açık kaynaklı Python Paket Endeksi (PyPI) yazılım paketlerinden yararlanan binlerce uygulama, kötü niyetli kişiler tarafından ele geçirilme ve alt akış kuruluşları ile kullanıcılarını etkileyen büyük tedarik zinciri saldırıları olasılığını ortaya çıkararak risk altında olabilir.

Bu, SolarWinds’in sahibi olduğu yaygın olarak kullanılan Pingdom API web sitesi izleme hizmetinin bir parçası olan pingdomv3 paketine karşı vahşi doğada kullanılan tekniği tespit eden jFrog’daki tehdit araştırmacılarına göredir. Ekip, bu tekniğe Revival Hijacking adını verdi.

Tekniğin temeli, tehdit aktörlerinin kötü amaçlı alan adlarını kaydetmek için yaygın yazım hatalarından yararlandığı typosquatting’e benziyor.

PingdomV3 paketine yönelik Revival Hijack saldırısında, kimliği açıklanmayan bir tehdit aktörü, bir paket depoda silindiğinde veya kaldırıldığında adının hemen tekrar kullanılabilir hale gelmesini sağlayan bir PyPl özelliğinden yararlandı.

Adından da anlaşılacağı gibi bu, paketin kötü amaçlar için etkili bir şekilde canlandırılabileceği ve ele geçirilebileceği anlamına geliyor.

Raporun ortak yazarlarından JFrog’un kötü amaçlı yazılım araştırma ekibi lideri Brian Moussali, Revival Hijack tekniğinin üç ana nedenden dolayı özellikle tehlikeli olduğunu söyledi.

Öncelikle, typosquatting’in aksine, bu teknik kurbanının kötü amaçlı paketi yüklerken hata yapmasına dayanmaz. İkinci olarak, bilinen güvenli bir paketi en son sürümüne güncellemek, birçok geliştiricinin risk açısından asgari düzeyde gördüğü yaygın bir uygulamadır – durum böyle olmasa bile. Üçüncüsü, birçok CI/CD makinesi paket güncellemelerini otomatik olarak yüklemek üzere ayarlanacaktır.

“Revival Hijack yalnızca teorik bir saldırı değil; araştırma ekibimiz bunun vahşi doğada istismar edildiğini gördü. Kaldırılan paketlerin işlenmesinde savunmasız bir davranış kullanmak, saldırganların mevcut paketleri ele geçirmesine olanak tanıdı ve kullanıcının iş akışında herhangi bir değişiklik yapmadan hedef sistemlere kurulmasını mümkün kıldı,” dedi Moussali.

“PyPI paket saldırı yüzeyi sürekli büyüyor. Burada proaktif müdahaleye rağmen, kullanıcılar her zaman tetikte olmalı ve kendilerini ve PyPI topluluğunu bu ele geçirme tekniğinden korumak için gerekli önlemleri almalıdır.”

Moussali ve araştırma ortağı Andrey Polkovnichenko, kaldırılan PyPI paketlerinin bir peçete arkasına sayımı temelinde, potansiyel olarak 120.000’e kadarının ele geçirilebileceğini söylüyor. 100.000’den az indirilen, uzun süredir aktif olmayan veya açıkça şüpheli olanları filtreleyerek, rakam hala 22.000’in üzerinde.

Ayrıca her ay ortalama 309 PyPI projesinin kaldırıldığı düşünüldüğünde, Revival Hijack tekniğini istismar etmek isteyen herkes için sürekli yeni potansiyel kurbanlar bulunuyor.

PingdomV3’e ne oldu?

pingdomV3 durumunda, paketin orijinal sahibi, devam etmiş gibi görünüyor, paketi en son Nisan 2020’de güncelledi, ardından 27 Mart 2024’e kadar sessiz kaldı ve ardından kullanıcılara paket terk edildiği için kullanmaktan kaçınmalarını söyleyen kısa bir güncelleme gönderdi. Daha sonra 30 Mart’ta paketi kaldırdılar ve bu noktada isim kayıt için belirdi.

Hemen hemen hemen, Gmail adresi olan bir kullanıcı aynı ad altında daha yeni bir sürüm numarasıyla bir paket yayınladı, bunun yeniden geliştirme olduğunu iddia etti ve GitHub deposuna yönlendirdi. Bu sürüm, bağlantılı GitHub deposu aslında hiç var olmamasına rağmen standart pingdomV3 kodunu içeriyordu.

Daha sonra, 12 Nisan’da, jFrog’un otomatik tarayıcıları, sahibi şüpheli, Base64 ile gizlenmiş bir yük tanıttığında tuhaf bir etkinlik tespit etti. Bu, alarm zillerinin çalmasına ve soruşturmanın ve ardından ifşanın başlatılmasına neden oldu. Paket, 12 Nisan’da PyPI tarafından tamamen kaldırıldı ve isminin kullanılması yasaklandı.

Yükün kendisi, Jenkins CI ayarında çalışıp çalışmadığını keşfetmek için tasarlanmış bir Python trojan kötü amaçlı yazılımı gibi görünüyordu, bu durumda saldırgan tarafından kontrol edilen bir URL’ye bir HTTP GET isteği gerçekleştiriyordu. JFrog ekibi, bunun ileteceği nihai yükü alamadı, bu da kötü niyetli aktörün saldırısını geciktirmek istediğini veya belirli bir IP aralığıyla sınırladığını gösteriyor. Her durumda, engellendi.

Sorunun potansiyel boyutundan endişe eden Moussali ve Polkovnichenko, en çok indirilen terk edilmiş paketleri ele geçirip, bunların yerine otomatik güncellemelerde yanlışlıkla çekilmelerini önlemek için hepsi 0.0.0.1 sürüm numaralı boş ve zararsız olanlarla değiştirmeye koyuldular.

Birkaç gün sonra tekrar kontrol ettiklerinde, boş PyPI paketlerinin 200.000’den fazla kez indirildiğini gördüler.

Elbette, yedek paketler boş olduğundan kötü niyetli bir aktörün her seferinde kod yürütmeyi başarabildiğini söylemek çok güvenli değil, ancak Moussali, çoğu durumda bunu başaracaklarını “çok güvenli bir şekilde” söyleyebileceklerini söyledi.

PyPI’nin yanıtı

jFrog’a göre PyPI, bu açığı ortadan kaldıracak şekilde silinen paketler üzerindeki politika değişikliğini düşünüyor ancak iki yılı aşkın süredir devam eden müzakerelere rağmen bir sonuca ulaşılamadı.

Silindiğinde ismin başkalarının kullanımına sunulacağını açıkça belirtiyor ve ayrıca OpenSSF önerileri doğrultusunda paketlerin belirli sürümlerinin silinmesini engelliyor.

Ancak Moussali, bunun faydalı olduğunu söylerken, Revival Hijack tekniğinin potansiyel kapsamının o kadar geniş olduğunu, daha fazla eyleme ihtiyaç duyulduğunu söyledi.

“PyPI’nin bir paket adının yeniden kullanılmasını tamamen yasaklayan daha katı bir politika benimsemesini tamamen savunuyoruz. Ayrıca, PyPI kullanıcılarının yeni bir paket sürümüne yükseltmeyi düşünürken bu potansiyel saldırı vektörünün farkında olması gerekir,” diye yazdı.

Endor Labs’ta bir güvenlik araştırmacısı olan Henrik Plate şunları söyledi: “Bu risk gerçektir ve paketin popülerliğine bağlıdır. Paketler uzun zaman önce silinmişse risk muhtemelen azalır, çünkü bir paket ne kadar uzun süre kaldırılmışsa, o kadar çok geliştirici ve işlem hattı onun kullanılamazlığını fark etmiş ve bağımlılık bildirimlerini uyarlamıştır.

“Bu bağlamda, verilen örneğin silinmeden hemen sonra yeniden canlandırılması dikkat çekici olup, bu durum saldırganın PyPI üzerindeki paket silme işlemlerini izlediğine işaret ediyor olabilir.

“Silinen paketlerin canlandırılması bilinen bir sorundur. Endor Labs Risk Explorer (GitHub projesi sap/risk-explorer’ın bir çatalı) tarafından görselleştirilen tedarik zinciri saldırı vektörlerinin taksonomisi bu vektörü şu şekilde kapsar: [AV-501] Plate, Computer Weekly’ye gönderdiği e-posta yorumlarında, “Dangling Reference ve destekleyici örnekler arasında yeniden canlandırılan GitHub depoları, yeniden adlandırılan GitHub depoları ve yeniden canlandırılan npm paketleri yer alıyor” dedi.

Plate, bunun OpenSSF tarafından önerilenlere benzer şekilde paket depoları için daha sıkı güvenlik yönergelerinin önemini vurguladığını belirtti.

Savunmacılar için, dahili paket kayıtlarını kullanmanın geliştiricileri bu tür saldırılardan koruması gerektiğini söyledi, açık kaynaklı paketleri kopyalayarak silinseler bile kullanılabilir kalmalarını sağlamalı. Ancak Plate, bu tür dahili kayıtların, kopyalanmadan önce yeni, potansiyel olarak kötü amaçlı paket sürümlerinin iyice incelenebilmesi için yapılandırılması gerektiği konusunda uyardı.



Source link