Hugging Face'te yapay zekâ modeli gibi görünen depolar GPU sunucularına kripto para madencisi kurdu, kampanya kaldırıldıktan günler sonra geri döndü
Güvenlik şirketi Pluto Security, Hugging Face'te küçük Qwen2 test modelleri gibi görünen 31 kötü amaçlı depo buldu. Model yüklenirken çalışan Python kodu sunuculara kripto para madencisi, bazı sürümlerde de reverse shell kuruyordu. İlk dalga kaldırıldıktan günler sonra yeni hesaplarla ikinci dalga geldi.
- 3 dk okuma
- 2 kaynak

Kısaca
- Pluto'ya göre depolar bağlantılı modellerle birlikte 32 binden fazla kez indirildi, bu sayı doğrulanmış enfeksiyon sayısı değil. En çok indirilen model 28 Ekim itibarıyla 28.412 kez indirildi ve Hugging Face'in taramalarında temiz göründü.
- Kod, model trust_remote_code=True seçeneğiyle yüklendiğinde çalışıyor. Pluto, bu seçeneği açmadan önce deponun Python dosyalarının incelenmesini öneriyor.
Güvenlik şirketi Pluto Security, 29 Ekim’de yayımladığı araştırmada Hugging Face’teki model depoları üzerinden yürütülen bir kripto para madenciliği ve arka kapı kampanyasını anlattı. Pluto’ya göre kampanya yedi Hugging Face hesabındaki 31 kötü amaçlı depoya yayıldı, ilk dalganın bir kopyası Çin’deki model platformu ModelScope’ta da vardı. Depolar küçük Qwen2 test modelleri gibi görünüyordu ve özellikle Xinference ve GPUStack gibi, kendi sunucularında yapay zekâ modeli çalıştıran sistemlerin bulunduğu GPU sunucularını hedef alıyordu.
Kodun çalışma biçimi
Pluto’ya göre kampanyada zehirlenmiş model ağırlıkları ya da pickle istismarı kullanılmadı. Hugging Face’in Transformers kütüphanesinde bir model trust_remote_code=True seçeneğiyle yüklendiğinde, deponun yapılandırma dosyasında belirtilen Python dosyası, model ağırlıkları yüklenmeden önce yükleyen kişinin yetkileriyle çalışıyor. Kampanyanın en çok indirilen modeli MENXIANGYU/qwen2-tiny’de gerçek bir model yoktu, ağırlık dosyası yalnızca 42 bayttı.
Pluto’ya göre kod önce, madenci durduğunda onu yeniden başlatan bir watchdog süreci kuruyor ve bu süreci yeniden başlatmak için kabuk başlangıç dosyalarına satırlar ekliyor. Ardından madenci programını diske yazmadan bellekten çalıştırıyor ve süreç listesinde bir çekirdek işlemi gibi görünmesini sağlıyor. Kod, sunucudaki rakip madencileri de kaldırıyor. Pluto’nun incelediği üç sürüm ayrıca saldırgana sunucuda etkileşimli erişim veren bir reverse shell açıyor.
Kaldırıldıktan sonra geri döndü
Pluto ilk dalgayı Hugging Face’e ve ModelScope’a bildirdi, iki platform da hesapları kaldırdı. Pluto’ya göre ilk dalga 12 depodan oluşuyordu ve kaldırılmadan önce 728 kez indirildi. Günler içinde yeni hesaplarla 19 depodan oluşan ikinci dalga geldi. İkinci dalgadaki depolar Pluto’nun bildiriminden sekiz gün sonra hâlâ yayındaydı ve 29.090 kez indirildi, bu indirmelerin yüzde 97,7’si tek bir modele ait. Pluto’nun bildiriminden 8,5 saat sonra yayımlanan bir başka depo ise ayrıcalıklı bir konteynerin içinden ana sunucunun disklerine erişip saldırgana ana sunucuda root erişimi veren bir betik içeriyordu.
BleepingComputer’a göre Hugging Face en çok indirilen modele erişimi kapattı, ancak 25 Ekim’de başka bir hesapla yüklenen neredeyse aynı bir kopya, haberin yayımlandığı sırada hâlâ yayındaydı.
Taramalardaki boşluk
Pluto’ya göre ilk dalgadaki depoların hiçbiri işaretlenmedi, ikinci dalganın en çok indirilen modeli de 28.412 indirmeye ulaşırken temiz göründü. Hugging Face her dosyayı ClamAV antivirüs programıyla tarıyor, iş ortaklarının tarayıcıları da model ağırlık biçimlerindeki istismarları arıyor. Pluto’ya göre bu taramaların hiçbiri Python kodunun ne yaptığını incelemiyor. Pluto’nun kontrollerinde JFrog’un tarayıcısı zararlı dosya için yalnızca bunun bir makine öğrenmesi modeli olmadığını bildirdi.
Pluto’ya göre ilk dalganın ödeme cüzdanı zincir üzerinde yaklaşık 2.276 PRL (yaklaşık 5 bin dolar) aldı. Pluto, cüzdanı incelerken paylaşımlı bir araştırma GPU kümesine ait gibi görünen dokuz makinenin 90 saniye içinde madenciliğe başladığını ve yaklaşık altı dakika sonra durduğunu gördü. Pluto, kampanyanın arkasında finansal amaçlı, Çince konuşan bir kişi ya da küçük bir grup olduğunu değerlendiriyor.
Önerilen önlemler
Pluto, listelediği modellerden birini özel kod çalıştırma seçeneği açıkken yükleyenlerin, yükleme başarısız olsa ya da GPU kullanımı normal görünse bile makinesini ele geçirilme belirtilerine karşı kontrol etmesini öneriyor. Şirkete göre /tmp/.cch/ klasörü, beklenmedik svc.py süreçleri ve madencilik argümanları taşıyan [kworker/u20:1] adlı bir süreç aranmalı. Etkilenen makineler üretim ağından yalıtılmalı, kabuk başlangıç dosyaları, cron görevleri ve SSH authorized_keys dosyaları kontrol edilmeli. Sürecin erişebildiği erişim anahtarları, bulut kimlik bilgileri, parolalar ve SSH anahtarları temiz bir makineden değiştirilmeli. Pluto ayrıca Xinference API’sinde kimlik doğrulamanın zorunlu tutulmasını ve özel model kodunun yüklenmeden önce incelenip incelenen sürümün sabitlenmesini öneriyor.