Langflow’daki kritik bir RCE açığını kullanan JADEPUFFER adlı saldırı grubu, bu kez yapay zekâ altyapısına ait dosyaları şifreleyen yeni bir fidye yazılımı olan ENCFORGE ile ortaya çıktı. Araştırmacılar, saldırganların model ağırlıkları, vektör indeksleri, eğitim veri setleri ve benzeri AI dosyalarını hedef aldığını, giriş noktasının ise değişmediğini açıkladı. Daha önce bu operasyonun throwaway Python kodu ve MySQL’in AES_ENCRYPT() işleviyle Nacos içindeki verileri ve üretim veritabanlarını şifreleyip yok ettiği biliniyordu. ENCFORGE ile birlikte kullanılan yeni yük, bu el yordamı betikleri bırakıp model depoları, vektör veritabanları ve ilk kampanyada kimlik bilgileri için taranan eğitim hatlarını hedef alan derlenmiş araçlara geçti.
İlk aşamada kullanılan açık, Langflow’un 1.3.0’dan eski sürümlerinde yer alan ve kimlik doğrulama olmadan çalışan /api/v1/validate/code uç noktası. Bu zafiyet, CVE-2025-3248 koduyla izleniyor, CVSS puanı 9.8 ve CISA’nın Known Exploited Vulnerabilities listesinde 5 Mayıs 2025’ten beri yer alıyor. NVD kaydı: https://nvd.nist.gov/vuln/detail/CVE-2025-3248. Kaynakta yer alan bilgilere göre bu giriş noktası değişmedi ve saldırganlar yine aynı açıklığı kullanarak sunucuda keyfi Python çalıştırabildi.
Yeni fidye yazılımı doğrudan AI dosyalarını hedefliyor
ENCFORGE, araştırmacıların ele geçirdiği ikiliye göre Go diliyle derlenmiş yeni bir fidye yazılımı. Saldırganın komuta-kontrol sunucusunda /.lockd adıyla saklanan dosya, doğrudan /lockd isteği atıldığında görünmüyor; baştaki nokta da basit bir dizin listesinde fark edilmesini zorlaştırıyor. İncelemeye göre bu dosya UPX 5.20 ile paketlenmiş statik bir Go 1.22.12 ELF ikilisi. Zararlı dosya, saldırganın komuta-kontrol sunucusundan alındı ve kaynakta yer alan analize göre hem paketli hem de açılmış hash için o sırada tehdit istihbaratı platformlarında hiçbir tespit yoktu.
İç proje adı encfile olarak geçiyor, hata metinlerinde ise keyforge adlı bir yardımcı anahtar üretim aracına atıf yer alıyor. Araştırmacılar, bu iki dizenin yeniden derleme sonrasında da kalmasının kalıcı tespit ipuçları oluşturduğunu belirtti. Aynı kod tabanında yer alan bu sabit dizeler, kaynakta doğrulanan en belirgin kimliklendirme işaretleri arasında gösterildi.
Fidye yazılımının hedef listesi doğrudan yapay zekâ ekosistemine dönük. PyTorch ve TensorFlow kontrol noktaları, Hugging Face SafeTensors dosyaları, ONNX modelleri, yerel LLM dağıtımlarında kullanılan GGUF biçimi ve onun öncülü GGML, FAISS vektör indeksleri, Parquet ve Arrow eğitim veri setleri, NumPy dizileri ile TensorFlow kayıtları varsayılan kapsamda yer alıyor. Komut satırındaki –include parametresiyle operatörün ek dosya desenleri eklemesi de mümkün; yardım metninde LoRA ince ayar adaptörleri ve eski GGML ağırlıkları örnek olarak gösteriliyor. Toplam liste yaklaşık 180 uzantıya ulaşıyor. Bu örnekler, genel bir dosya kilitleyicinin isim vermek zorunda olmadığı AI ortamlarını doğrudan işaret ediyor.
Bu seçim, araştırmacıların ifadesiyle, rastgele bir dosya kilitlemeden çok AI ortamlarına dönük bilinçli bir hedeflemeye işaret ediyor. LoRA adaptörleri ya da eski GGML ağırlıkları gibi terimlerin yardım metninde açıkça geçmesi de dosya türlerinin tesadüfen değil, doğrudan amaçlı biçimde kapsama alındığını gösteriyor. Kaynakta, araştırmacıların bu tercihi özellikle model depoları, vektör veritabanları ve eğitim hatlarına dönük bir hedefleme olarak okuduğu da yer aldı.
ENCFORGE, dosya verisini AES-256-CTR ile şifreliyor. Oturum başına üretilen simetrik anahtar ise derlenmiş sürümün içine gömülü RSA-2048 açık anahtarıyla sarılıyor. Yazılım tüm dosyayı baştan sona şifrelemek yerine yalnızca seçili bölgeleri işliyor; bu hız tekniği LockBit ve BlackCat sınıfı fidye yazılımlarında da görülüyor. Kaynak metinde, bunun aynı zamanda işlem süresini kısaltan bir optimizasyon olduğuna dikkat çekiliyor.
İşlenen her dosya .locked uzantısıyla yeniden adlandırılıyor. İkili, açık dosya tutan süreçleri kapatıyor, tekrar başlatıldığında tamamlanmış dosyaları yeniden şifrelemiyor, README, HOW_TO_DECRYPT ve README_DECRYPT adlarıyla fidye notları bırakıyor ve çalışmasını tamamladığında kendini siliyor. Bu notlarda yer alan davranışlar, saldırının tek seferlik bir çalıştırmadan sonra geride minimum iz bırakmak üzere tasarlandığını gösteriyor.
Şu ana kadar incelenen ENCFORGE sürümünde veri sızdırma yeteneği yok. Ağ bağlantısı, bulut depolama istemcisi ya da veriyi dışarı aktaran bir ara mekanizma bulunmuyor. Araştırmacılar, gözlemledikleri oturumda sızıntı sitesi veya Tor üzerinden bir ödeme portalı da görmedi. Bu operasyonda saldırganın elindeki tek koz şifrelenmiş veriler oldu. Kaynakta yer alan ifade ile, fidye baskısı tamamen şifrelenmiş dosyalar üzerinden kuruluyor.
Fidye notlarında yer alan iletişim adresi e78393397@proton.me. Aynı Proton Mail adresi önceki JADEPUFFER kampanyasında da kullanılmıştı ve araştırmacılar bunu iki operasyon arasındaki en güçlü ilişki kanıtı olarak değerlendiriyor. İnceleme, yalnızca tek bir oturumu kapsıyor; etkilenen kurumun adı paylaşılmadı, kurban sayısı da açıklanmadı. Araştırmacılar ayrıca başka bir ENCFORCE dağıtımına dair kanıt bulmadıklarını da not etti.
Docker soketi üzerinden host’a çıkış denemesi
Saldırgan, Langflow üzerinden kod çalıştırmayı doğruladıktan sonra kapsayıcıyı taradı ve /var/run/docker.sock yolundaki Docker soketini buldu. İlk aşamada ENCFORCE’i GCP üzerindeki komuta-kontrol sunucusundan çekme girişimi başarısız oldu. Bunun üzerine kampanya durmadı, yöntem değiştirdi. Kaynakta bu an, saldırganın tercih ettiği teslim yolunun tıkanmasıyla host kaçışına yöneldiği dönüm noktası olarak anlatılıyor.
Beş dakika 24 saniye boyunca operatör, aynı Langflow RCE kanalı üzerinden altı Python betiği oluşturup düzeltti; amaç, host sistemine ulaşan çalışan bir yol bulmaktı. İlk betik tek satır tek satır inşa edildiği için her bir istek kendi başına zararsız görünüyordu. İkinci sürümden itibaren tam betik base64 ile kodlanıp exec() içinde çözüldü; böylece base64 -d gibi kabuk komutlarına dayalı aramalar da atlatılmaya çalışıldı. Kaynak metin, bu yaklaşımın tek bir isteğin imza tabanlı incelemede masum görünmesini sağlamak için kullanıldığını belirtiyor.
Son sürümde Docker API kullanılarak ayrıcalıklı bir kapsayıcı başlatıldı. Bu kapsayıcıda host PID alanı kullanıldı, host kök dosya sistemi bağlandı, hedef süreç bulundu, ENCFORGE /proc/<pid>/root yoluyla kopyalandı ve ardından nsenter ile host üzerinde çalıştırıldı. Tüm bu denemelerde container parametreleri Privileged: true, PidMode: host, NetworkMode: host olarak ayarlandı ve kök dosya sistemi yazılabilir şekilde bağlandı. Araştırmacıların ifadesiyle bu, doğrudan host root erişimi anlamına geliyor. Kaynakta, bu bağlama yöntemi için host kök dosya sisteminin kapsayıcı içine yazılabilir olarak aktarıldığı da açıkça yer alıyor.
Canlı çalıştırmadan önce saldırgan –try-run ile dosya sistemini taradı, ardından –lock komutuyla şifreleme aşamasına geçti. Son betik süreç durumunu kontrol etti, kilit günlüğünü okudu ve .locked uzantılı dosyaların sayısını saydı. Ancak yayımlanan çalışmada bu sayıya yer verilmedi; belgelenen kanıt, canlı bir şifreleme girişimini gösteriyor, kaç model ya da veri seti dosyasının gerçekten şifrelendiğini değil. Araştırmacılar, bu nedenle kesin etkilenen dosya sayısını açıklamadı.
Sysdig, –task-id gcp_h1 bayrağını operatörün bu ana makineyi daha geniş bir kampanya içinde GCP hedefi olarak izlediğinin işareti olarak yorumladı. Oturumun başındaki bir denemede kullanılan görev kimliği ise gcp_test idi. Raporda ek kurban, başka dağıtım noktası ya da farklı bir yayılım alanı belirtilmedi. Kaynakta açık biçimde, yalnızca gözlemlenen oturumun raporlandığı ve başka bir kurban sayısı paylaşılmadığı yazıyor.
Önceki JADEPUFFER kampanyasında operatörün başarısız bir Nacos girişini 31 saniyede düzelttiği kaydedilmişti. Bu sefer de benzer bir refleks izlendi; tercih edilen dağıtım yolu tıkanınca saldırgan Docker soketi üzerinden host kaçışı kurdu. Kaynak metin, iki operasyondaki ortak noktanın, engellenen ilk yöntemden sonra hızla alternatif bir yürütme zinciri kurulması olduğunu söylüyor.
ENCFORGE’in paketlenmiş SHA-256 değeri 8cb0c223b018cecef1d990ec81c67b826eb3c30d54f06193cf69969e9a8baea2, açılmış sürümün hash’i ise ea7822eac6cecef7746c606b862b4d3034856caf754c4cf69533662637905328 olarak paylaşıldı. Sysdig ayrıca tam raporunda kaynak kodu, komuta-kontrol adresleri, gömülü RSA-2048 anahtar parmak izi ve bir YARA kuralı yayımladığını duyurdu. Kaynakta, bu ögelerin araştırmacıların kendi raporunda yer aldığı ve saldırının izlenmesi için açıklandığı belirtildi.
Langflow tarafında 1.9.1 ya da desteklenen güncel bir sürüme yükseltme öneriliyor. 1.3.0 sürümü CVE-2025-3248’i kapatmıştı, ancak CISA daha sonra aynı ürün için iki yeni açığı daha KEV listesine ekledi: CVE-2026-33017, 1.9.0’da kapatılan kimlik doğrulamasız RCE açığı olarak 25 Mart 2026’da; CVE-2026-55255 ise 1.9.1’de düzeltilen, kullanıcılar arası yetki atlatma açığı olarak 7 Temmuz 2026’da listeye girdi. Bu iki kayıt için NVD bağlantıları sırasıyla https://nvd.nist.gov/vuln/detail/CVE-2026-33017 ve https://nvd.nist.gov/vuln/detail/CVE-2026-55255. Kaynak metin, ayrıca CVE-2025-3248’in giriş vektörü olarak bu kampanyada kullanıldığını net biçimde doğruluyor.
Rapor, yapay zekâ sağlayıcı anahtarlarının, bulut kimlik bilgilerinin, veritabanı gizli anahtarlarının ve Langflow sürecinin erişebildiği diğer tüm tokenların da döndürülmesi gerektiğini not ediyor. Yama uygulanması, daha önce zafiyetli bir örnekten toplanmış kimlik bilgilerini geri almıyor. Bu nedenle kaynakta, yalnızca yamalamak yerine erişilmiş sırların ayrıca rotasyona sokulması gerektiği vurgulanıyor.
/var/run/docker.sock yolunun, gerçekten gerekmeyen kapsayıcılardan kaldırılması da öneriler arasında yer alıyor. Soket erişimi mecbur ise sıkı yapılandırılmış bir proxy üzerinden sınırlandırılması isteniyor; standart bir Langflow kurulumunun yeni container oluşturma ihtiyacı yok ve denetimsiz Docker soketi erişimi yanlış yapılandırma olarak ele alınmalı. Kaynakta, normal bir Langflow dağıtımının container yaratma yetkisine ihtiyaç duymadığı da açıkça belirtiliyor.
Takip edilmesi gereken göstergeler arasında uygulama süreçlerinin Docker container oluşturma API’lerini çağırması, Privileged: true ya da PidMode: host ile başlatılan kapsayıcılar, host-root bind mount’lar ve kapsayıcı içinden çalıştırılan nsenter komutları bulunuyor. Model ağırlıkları, vektör indeksleri ve eğitim veri setlerinin çevrimdışı ya da değiştirilemez anlık kopyalarda tutulması, .locked uzantılı toplu dosya oluşumunun izlenmesi de raporda yer alan diğer maddeler. Kaynakta bu dosyaların kaynak kod ve üretim veritabanlarıyla aynı kurtarma katmanında değerlendirilmesi gerektiği de ayrıca not edildi.
İncelemede, model varlıklarının kaynak kod ve üretim veritabanlarıyla aynı kurtarma katmanında değerlendirilmesi gerektiği vurgulanıyor. Bir kurum uygulamayı yeniden kurabilse bile ağırlıklarını, indekslerini ya da eğitim durumunu geri getiremiyorsa, temiz bir dönüş yolu kalmıyor. Raporun sonunda verilen bu çerçeve, model dosyalarının kaybının yalnızca uygulama katmanını değil, eğitilmiş varlıkların tamamını etkilediğini ortaya koyuyor.
