Hugging Face’in Diffusers kütüphanesindeki üç açık, model deposu gibi görünen içeriklerin kurumsal sistemlerde uzaktan kod çalıştırmaya dönüşmesine yol açabiliyor. Zafran Labs araştırmacılarının yayımladığı incelemeye göre bu zafiyetler, custom pipeline yükleme sürecinde kullanılan trust_remote_code korumasını aşarak, güvenilmeyen Python kodunun fark edilmeden çalıştırılmasına izin veriyor.
“FaceHugger” adı verilen bu sorunlar, Diffusers ile Hub üzerindeki depolardan model çeken herkes için tedarik zinciri riski olarak tanımlandı. Araştırmacılar, Hugging Face’in yapay zeka döneminin “GitHub’ı” haline geldiğini ve kütüphanelerinin kurumsal ortamlarda yaygın biçimde kullanıldığını belirtti. DiffusionPipeline.from_pretrained çağrısını özel pipeline’larla kullananlar etkileniyor; açıklar 2026 Mayıs’ının başında yayımlanan 0.38.0 sürümünde giderildi.
Model indirme akışı kod çalıştırmaya nasıl dönüştü
Diffusers, video, görüntü ve ses üretimi için önceden eğitilmiş diffusion modellerini barındıran bir Python paketi. pepy.tech verilerine göre paket yalnızca 2026 Temmuz ayında 8,1 milyondan fazla indirildi. Araştırmacılar, kütüphanenin üretim hatlarına, CI/CD sistemlerine ve konteyner imajlarına gömülü olması nedeniyle bir açığın etkisinin genişleyebileceğini aktardı.
Güvenlik araştırmacıları, modelin Hugging Face Hub’daki bir depodan yerel olarak yüklenmesinde kullanılan DiffusionPipeline API’sinin riskli noktayı oluşturduğunu belirtti. Bu akışta sistem, bir yapılandırma dosyası üzerinden hangi pipeline ve bileşen sınıflarının yükleneceğini belirliyor; custom pipeline kodu da aynı süreçte devreye girebiliyor. DiffusionPipeline, Hub deposundan modeli yerelde yüklerken bu yapılandırma dosyasını kullanıyor ve custom pipeline sınıflarını da başlatabiliyor.
Normal şartlarda trust_remote_code parametresi, model deposunda bulunan özel Python kodunun yükleme sırasında çalışıp çalışmayacağını denetliyor. Parametre true yapıldığında özel kodlara izin veriliyor, false bırakıldığında ya da hiç verilmediğinde ise doğrulanmamış kodun çalışması engelleniyor. Ancak araştırmacılar, bu korumanın custom pipeline yükleme sürecinde aşılabildiğini söyledi.
Zafran Labs’ten Gal Zaban ve Ido Shani, temel hatanın Time-of-Check to Time-of-Use, yani TOCTOU türünde bir yarış durumuna dayandığını anlattı. Buna göre model indirme işlemi tek bir atomik işlem yerine iki ardışık ve atomik olmayan HTTP isteğiyle yürütülüyor, trust_remote_code kontrolü ise yalnızca ilk aşamada çalışıyor. İlk istekte güvenlik kapısından geçen içerik, ikinci istekte değiştirilerek yükleyiciye farklı bir dosya gösterilebiliyor. Araştırmacılar, “trust check”in tamamen ilk aşamada yer almasının, yükleyicinin güvenlik kapısının görmediği özel kodu daha sonra görmesi halinde bypass’ın mümkün hale geldiğini vurguladı.
İncelemede, tüm farklı RCE varyantlarının bu noktaya dayandığı ifade edildi. Zaban, yükleyicinin custom code’u görmesiyle güvenlik kapısının görmemesinin aynı anda mümkün olduğu her yöntemin trust_remote_code mekanizmasını aşabildiğini belirtti. Araştırmacılar, model deposundan indirilen öğelerin çoğu zaman pasif veri gibi görüldüğünü, ancak yapılandırma dosyaları, loader’lar ve özel pipeline kodunun çalıştırılabilir koda dönüşebildiğini de ekledi.
CVE’ler, etki alanı ve yayımlanan yama
İncelemede üç ayrı zafiyet numarası paylaşıldı. CVE-2026-44827, CVSS 8.8 puan aldı ve Hub deposundan custom_pipeline akışı üzerinden zararlı kod yüklenmesine izin veren bir kod enjeksiyonu olarak tanımlandı. Bu senaryoda saldırgan, “None.py” adlı özel hazırlanmış bir pipeline ile trust_remote_code=False olsa bile, ya da parametre hiç verilmediğinde, kod çalıştırmayı başarabiliyor.
CVE-2026-45804, CVSS 7.5 puanlı bir yarış durumu zafiyeti olarak listelendi. Buna göre saldırgan, hf_hub_download ile snapshot_download arasındaki HTTP çağrıları arasında yapılandırmayı değiştirerek bir depoya sonradan kod sokabiliyor ve çalıştırmayı tetikleyebiliyor. Bu açık da model deposuna yapılan erişimde iki adımlı indirme akışının kötüye kullanılmasına dayanıyor.
Üçüncü açık olan CVE-2026-44513 de yine custom_pipeline akışını etkiliyor ve trust_remote_code=False bırakılmış olsa bile uzaktan kod yüklenmesine kapı açıyor. Bu zafiyet de CVSS 8.8 ile derecelendirildi. Araştırmacılar, üç açığın ortak noktasının, doğrulama ile kullanımın farklı anlarda gerçekleşmesi olduğunu aktardı.
Diffusers 0.38.0 sürümü, sorunun kamuya açıklanmasının ardından 2026 Mayıs ayının başında yayımlandı. Proje bakımcıları, düzeltme hemen uygulanamıyorsa yalnızca tamamen güvenilen ve denetlenmiş kaynaklardan pretrained_model_name_or_path, custom_pipeline ve yerel snapshot dizinleri kullanılmasını öneriyor. Ayrıca custom_pipeline parametresinin, ana pretrained_model_name_or_path’tan farklı bir Hub deposuna işaret etmeden önce pipeline.py dosyasının okunması gerektiği belirtiliyor.
Yerel bir snapshot yüklenmeden önce de snapshot içinde beklenmeyen *.py dosyalarının kontrol edilmesi isteniyor. Araştırmacılar özellikle unet/, scheduler/ gibi bileşen alt dizinleri ile snapshot kökünde yer alan dosyaların gözden geçirilmesi gerektiğini söyledi. Zaban ve Shani, AI depolarından çekilen öğelerin çoğu zaman pasif veri gibi görüldüğünü, ancak yapılandırma dosyaları, loader’lar ve özel pipeline kodunun sessizce çalıştırılabilir koda dönüşebildiğini aktardı.
İncelemeye göre, bu tür depoların güvenlik sınırları doğru kurulmadığında sıradan bir model indirme işlemi bile ilk erişim vektörüne dönüşebiliyor. Araştırmacılar, Hugging Face gibi platformlara kurumsal bağımlılık arttıkça model depolarının güvenilmeyen kod olarak ele alınması gerektiğini belirtti.
