Изследователи от Sysdig свързаха втора атака срещу същия Langflow сървър с JADEPUFFER – оператор, задвижван от AI агенти, който беше документиран за първи път по-рано този месец.
Същият киберпрестъпник вече е забелязан да внедрява ENCFORGE – нов компилиран на Go откупнически софтуер (ransomware), проектиран да кодира тегла на модели, векторни индекси, набори от данни за обучение и други файлове от AI инфраструктурата в файловата система на хоста.
Входната точка остава непроменена. Версиите на Langflow преди 1.3.0 излагат крайната точка /api/v1/validate/code без автентикация, което позволява на всеки отдалечен атакуващ да изпълнява произволен Python код на сървъра. Уязвимостта, критикувана с ID CVE-2025-3248, има CVSS оценка 9.8 и е включена в каталога с известни експлоатирани уязвимости на CISA от 5 май 2025 г.
Както The Hacker News съобщи по-рано този месец, предишната операция използва за еднократна употреба Python код и функцията AES_ENCRYPT() на MySQL за криптиране и унищожаване на данни в Nacos (конфигурационния сървър на Alibaba) и производствени бази данни.
Новият злонамерен код ENCFORGE заменя тези импровизирани скриптове с компилирани инструменти, насочени към хранилища на модели, векторни бази данни и конвейери за обучение, от които първата кампания е събирала идентификационни данни.
Изследователите са извлякли бинарния файл от сървъра за управление и контрол (C2) на атакуващия, където е бил скрит като /.lockd. Директна заявка към /lockd връща грешка 404, а водещата точка го скрива от обикновения списък с директории. Файлът е статично компилиран Go 1.22.12 ELF, пакетиран с UPX 5.20.
Платформите за разузнаване на заплахи не са върнали никакви открития за хеша (както на пакетирания, така и на разопакования файл) към момента на анализа от Sysdig. Вътрешното име на проекта е encfile, а текстовете за грешки в бинарния файл съдържат референция към съпътстващ инструмент за генериране на ключове с име keyforge. И двата низа остават при рекомпилация на същия код и служат като стабилни котви за откриване.
Неговият списък с разширения по подразбиране покрива чекпойнти на PyTorch и TensorFlow, Hugging Face SafeTensors, ONNX формат, GGUF (настоящият стандарт за локално внедрени LLM) и неговия предшественик GGML, FAISS векторни индекси, Parquet и Arrow набори от данни за обучение, NumPy масиви и TensorFlow записи.
Флагът --include позволява на атакуващия да добавя допълнителни файлови маски; вграденият помощен текст използва като примери LoRA адаптери за фино конфигуриране и остарели GGML тегла. Пълният списък съдържа приблизително 180 разширения. Тези примери сочат директно към AI среди – общ заключващ файл софтуер не би имал причина да посочва LoRA адаптери или GGML тегла. Изследователите определят този избор като целенасочен атака, а не като случайно покритие.
ENCFORGE използва AES-256-CTR за данни във файловете, като симетричният ключ за всяко стартиране е обвити от вграден публичен RSA-2048 ключ, компилиран в тази версия. Вместо да криптира цели файлове, той криптира избрани региони – същата оптимизация за скорост, използвана от откупнически софтуери от клас LockBit и BlackCat.
Всеки обработен файл се преименува с разширение .locked. Бинарният файл прекратява процесите, които държат файловете отворени преди криптиране, справя се с рестартирания без повторно криптиране на вече завършени файлове, оставя съобщения за откуп под формата на README, HOW_TO_DECRYPT и README_DECRYPT, и се самотрие след изпълнение.
Извлеченият бинарен файл ENCFORGE няма възможност за извличане на данни (exfiltration). Той не съдържа мрежов код, клиент за облачно съхранение или механизъм за междинно съхранение (staging). Изследователите не са открили доказателства за изтичане на данни, сайт за изтичане или Tor портал за плащане по време на наблюдаваната сесия. Единственият инструмент за натиск са криптираните данни.
Контактът за изнудване в съобщенията за откуп е e78393397@proton.me – същият Proton Mail адрес, използван в предишната кампания. Sysdig описва това като най-силната връзка за атрибуция между двете операции.
Изследователите са разкрили една наблюдавана сесия, не са съобщили името на организацията и не са предоставили брой жертви или доказателства за друго внедряване на ENCFORGE.
След потвърждаване на изпълнението на код, JADEPUFFER е сканирал контейнера за идентификационни данни и е открил Docker сокета в /var/run/docker.sock. Първият му опит да изтегли ENCFORGE от GCP C2 сървъра е се е провалил. Вместо да спре, атакуващият се е адаптирал.
За пет минути и 24 секунди атакуващият е създал и редактирал шест Python скрипта през същия Langflow RCE канал, докато открие работещ път към хоста. Първият скрипт е създаден ред по ред, запазвайки всяка единична заявка инертна за проверки, базирани на сигнатури.
Започвайки от втория, атакуващият кодира всеки пълен скрипт в base64 и го декодира вътре в повикване exec(), избягвайки търсения на ниво шел за команди като base64 -d. Финалната версия използва Docker API, за да стартира привилегирован контейнер с хост PID пространство и монтирана root файлова система, открива целевия процес, копира ENCFORGE през /proc/<pid>/root, след което го стартира на хоста чрез nsenter.
Във всички итерации контейнерите са създадени с Privileged: true, PidMode: host, NetworkMode: host и монтирана root файлова система за четене и писане. Това практически осигурява root достъп до хоста.
Преди реалното изпълнение атакуващият е стартирал --try-run, за да сканира файловата система, а след това --lock за същинската фаза на криптиране. Финалният скрипт е проверил статуса на процеса и е прочел дневника за заключване.