
Эксплойт-доказательство концепции для CVE-2026-5027, уязвимости обхода пути в Langflow, позволяющей произвольную запись файлов и потенциальное удалённое выполнение кода через специально сформированное имя файла в multipart-запросе.
Эта публикация является исследовательской статьей, опубликованной EQSTLab.
Благодарность Yahia Hamza, который сообщил об этой уязвимости и проанализировал ее.
★ CVE-2026-5027 Langflow Path Traversal / Произвольная запись файлов 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:7860 --name cve-2026-5027 cve-2026-5027
# Неразрушающая проверка (файл-доказательство)
python3 CVE-2026-5027.py -t <HOST_IP>
# Проверка в режиме аутентификации
python3 CVE-2026-5027.py -t <HOST_IP> -u <USERNAME> -p <PASSWORD>
Уязвимая конечная точка
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 это может позволить:
Злоумышленник --(Получение токена доступа или злоупотребление автоматическим входом)--> Langflow /api/v2/files --(Передача специально сформированного multipart-имени файла с ../)--> Произвольная запись файлов за пределами каталога загрузки --(Запись в чувствительное место)--> Потенциальное удаленное выполнение кода
Этот репозиторий не предназначен для содействия несанкционированной эксплуатации экземпляров Langflow. Цель этого проекта — помочь исследователям безопасности, специалистам по защите и разработчикам понять уязвимость, проверить подверженность в контролируемых средах и применить эффективные меры по смягчению последствий.