Xygeni yakın zamanda 2025 yılında yazılım tedarik zinciri saldırıları alanında endişe verici bir eğilim gözlemledi.İki popüler paket yöneticisinde ortaya çıkan sonuçlar: PyPI hem de npmSüregelen tehdit istihbaratı çalışmalarımızın bir parçası olarak,Xygeni'nin Kötü Amaçlı Yazılım Erken Uyarı Sistemi (MEW) Bu araç, daha önce başka bir kayıt defterine yüklenmiş kötü amaçlı bir paketin farklı ancak metodolojik olarak benzer bir örneğini tespit etti. Bu olay, tehdit aktörlerinin nasıl evrim geçirdiğini ve özellikle de saldırı tekniklerini ekosistemler genelinde nasıl yeniden kullandığını vurgulamaktadır. kötü amaçlı Python paketleri hem de kötü amaçlı npm paketleriBu durum, kötü amaçlı yazılımların açık kaynaklı tedarik zincirlerine sızma riskini artırır.
Xygeni'nin MEW'i: Benzerlikleri Tespit Etmek
Xygeni'nin MEW aracı, özellikle 2025'te Yazılım Tedarik Zinciri Saldırılarıyla bağlantılı olan kötü amaçlı paketleri, açık kaynak kayıt defterlerinde yayınlanır yayınlanmaz tespit edip işaretlemek üzere tasarlanmıştır. Yeni paketleri şüpheli davranışlar açısından analiz ederek çalışır.
Bu örnekte iki adet tespit edildi. kötü amaçlı Python paketleri (graphalgo (PyPI'de) ve kötü amaçlı npm paketleri (express-cookie-parser (npm'de).
Yazılım Tedarik Zinciri Saldırılarında Kötü Amaçlı Python ve npm Paketleri (2025)
Uyarılarımızı tetikleyen ortak özelliklere bir göz atalım:
typosquatting
İkisi de mevcut popüler paketleri taklit etmeye çalıştı.
- graphalgo (PyPI)"Grafikler ve ağlar oluşturmak ve bunları manipüle etmek için kullanılan Python paketi."Adı geçen bir kullanıcı tarafından yüklendi" “larrytech” 13 Haziran 2025'te bu paket, daha sonra graphdict olarak yeniden adlandırılan, orijinal ve zararsız graphalgo projesine PyPi alternatifi olarak kendini tanıttı.
- express-cookie-parser (npm)Bu paket, iyi bilinen cookie-parser paketini taklit etti, hatta onun kodunu birebir kopyaladı. README.md. Bu tür taklit, mevcut güveni istismar etmek için kullanılan klasik bir taktiktir.
Gizleme, İlk Savunma Hattı Olarak
Her iki paket de kötü amaçlı kodlarını orijinal dosyaların içine gizlemişti. graphalgoGizlenmiş kod, şurada bulundu: /utils/load_libraries.py. Halinde hızlı çerez ayrıştırıcısı, cookie-loader.min.js Gizlenmiş veri paketini içeriyordu.
Bu ilk gizleme katmanı, genellikle sıradan incelemeyi ve statik analizi engellemek için kullanılır. Gizleme oldukça basitti: tekrarlanan ZLib sıkıştırması ve Base64 kodlaması. Bu tür gizleme, yazılımın davranışını gizlemeye çalıştığını açıkça gösterir. Diğer kanıtlarla birlikte bu, Xygeni MEW'in paketleri potansiyel kötü amaçlı yazılım olarak sınıflandırmasına olanak sağladı. Doğrulama aşamasında, inceleyicilerimiz, açıkça kötü amaçlı olan yükleyici aşamasını ortaya çıkaran bir gizleme çözme komut dosyası hazırladı.
Çok Aşamalı Yük Teslimatı ve Ortak Başlangıç Noktası
Her iki paket de başlangıç "Damlatıcılardır”, gerçek yükün önünü açarak. Ortak bir dış “tohumDosya URL'si:https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example
Bu özdeş harici tohum dosyası, ortak bir tehdit aktörünün güçlü bir göstergesidir. İlginç bir şekilde, bu tohum dosyasının içeriği basit ortam değişkenleri (örneğin, JWT_SECRET, PORT) gibi görünüyor ve bu da gerçek işlevine ilişkin incelemeyi yanıltıcı hale getirebilir.
DGA ile Dinamik C2 Çözünürlüğü
Bu kötü amaçlı paketlerde gözlemlenen gelişmiş bir taktik, Komuta ve Kontrol (C2) sunucusunu dinamik olarak çözümlemek için bir Alan Adı Oluşturma Algoritması (DGA) kullanılmasıdır. 2025'te gelişmiş yazılım tedarik zinciri saldırılarında sıklıkla görülen bu teknik, tohum dosyasının içeriğinden türetilen bir SHA256 özetine ve diğer sabit kodlanmış değerlere dayanmaktadır. Bu sayede, C2 altyapısı sık sık değişmekte ve geleneksel kara listeleme yöntemleri çok daha az etkili hale gelmektedir. Bu durumda, npm varyantı sabit bir değer kullanmıştır. 496AAC7E DGA mantığının bir parçası olarak.
Kalıcılığın Sağlanması
Her iki saldırgan da etkilenen sistemlerde kalıcı bir varlık oluşturmayı hedefledi. Stratejileri bir dosya bırakmayı içeriyordu, startup.py (PyPi için) veya startup.js (npm için), çeşitli işletim sistemlerinde (Windows, Linux, macOS) ortak Google Chrome kullanıcı veri dizinlerine.
İşlem Sonrası Temizleme
İzleri en aza indirmek için, her iki kötü amaçlı komut dosyası da temizleme işlemleri gerçekleştirdi. Bu, başlangıçtaki yükleyici dosyalarının silinmesini de içeriyordu (load_libraries.py, cookie-loader.min.js) ve yasal paket dosyalarını değiştirme (__init__.py, index.jsSilinen bileşenlere yapılan referansları kaldırmak için.
Kötü Amaçlı Python ve npm Paketlerinde Güvenlik İhlali Göstergeleri
- PyPI Paketi: graphalgo (larrytech tarafından yayınlandı, 13 Haziran 2025)
- npm Paketi: express-cookie-parser (özellikle 1.4.12 sürümü)
- Paylaşılan Başlangıç URL'sine Erişim:
https://raw.githubusercontent.com/johns92/blog_app/refs/heads/main/server/.env.example
- Kalıcı Dosya Adları:
startup.py(Python)startup.js(JavaScript) - Ortak Kalıcı Yollar (İşletim Sistemine Bağlı): Google Chrome kullanıcı veri dizinleri içinde (örneğin,
AppData\Local\Google\Chrome\UserData\Scripts\Windows üzerinde,~/.config/google-chrome/Scripts/Linux'ta, vb.).
Yazılım Tedarik Zinciri Saldırılarında Kötü Amaçlı Paketlere Karşı Nasıl Korunulur (2025)
Geliştiriciler İçin Önerilen Bir Yaklaşım
Bu olay, 2025 yılında yazılım tedarik zinciri saldırılarının gelişen tehdit ortamında değerli bir vaka çalışması niteliğindedir. Kötü amaçlı Python paketlerinin ve kötü amaçlı npm paketlerinin güvenilir ekosistemlere nasıl sızabileceğini ve genellikle çok geç olana kadar tespit edilmekten nasıl kaçınabileceğini vurgulamaktadır. Bu nedenle, erken tespit, akıllı araçlar ve proaktif sistem hijyeni artık herhangi bir güvenli DevOps iş akışının temel parçalarıdır. Geliştiricilerin aşağıdakileri dikkate almaları önerilir:
Bağımlılık İncelemesi
Eğer projeleriniz şunları içeriyorsa: graphalgo or hızlı çerez ayrıştırıcısıBu nedenle, bunların kaldırılması işlemine devam etmek akıllıca olacaktır.
- PyPI için:
pip uninstall graphalgo - npm için:
npm uninstall express-cookie-parser
Sistem Hijyeni
Kapsamlı bir sistem taraması yapmayı düşünün. Ayrıca, Chrome kullanıcı veri dizini yollarında beklenmedik durumlar olup olmadığını manuel olarak kontrol etmeniz de önerilir. startup.py or startup.js dosyaları.
Proaktif Güvenlik Önlemleri
- Yeni Bağımlılıkları Değerlendirin: Yeni paketleri entegrasyondan önce kapsamlı bir şekilde değerlendirmek için bir rutin oluşturun; özellikle de tanımadığınız yayıncılardan gelen paketlere odaklanın.
- Güvenlik Araçlarını Entegre EdinXygeni'nin MEW'si gibi araçlar ve diğer Yazılım Bileşimi Analizi araçları (SCABu çözümler, şüpheli davranışları ve güvenlik açıklarını belirleyerek kritik bir savunma katmanı sağlayabilir.
- En Az AyrıcalıkGeliştirme ortamlarını en az ayrıcalık ilkesiyle işletmek, olası bir uzlaşmanın etkisini sınırlamaya yardımcı olabilir.
- Ağ farkındalığıGiden ağ trafiğini olağandışı bağlantılar açısından izlemek, bazen DGA tarafından oluşturulan C2 iletişimlerini ortaya çıkarabilir.
Anahtar Bileşenleri load_libraries.py (graphalgo'dan)
download_remote_content(): Belirtilen URL'lerden dosya getirme işlemini yönetir.run_process()Harici Python komut dosyalarını bağımsız bir şekilde çalıştırır ve gizliliği korumak için çıktıyı bastırır.get_output_file_path()Kalıcı olarak çalışacak startup.py dosyasının ideal sistem konumunu belirler.remove_self(): İlk zararlı dosyaların ve paket değişikliklerinin yürütme sonrası temizliğini düzenler.simple_shift_encrypt()/simple_shift_decrypt(): DGA uygulamasında kritik öneme sahip, iletişim kanallarını gizlemek için özel kriptografik fonksiyonlar.load_libraries(): İlk indirmeden son veri paketinin yürütülmesine ve temizlenmesine kadar tüm çok aşamalı süreci koordine eden merkezi işlev.
Sonuç
MEW tarafından tespit edilen diğer potansiyel olarak zararlı paketlerde olduğu gibi, bağımlılık güvenlik duvarı, bu zararlı paketleri bağımlılıklarına dahil edecek kullanıcıları anında korudu. Onaydan sonra, her iki kayıt defteri için de bildirim prosedürlerini izledik ve inceleme sonrasında her iki paket de kaldırıldı.




