Уязвимость в Flask-Reuploaded позволяет удаленно выполнить код

vulnerability

Библиотека Flask-Reuploaded, предназначенная для обработки загружаемых файлов в веб-приложениях на базе фреймворка Flask, содержит уязвимость, которая позволяет удаленному злоумышленнику записывать произвольные файлы на сервер и выполнять произвольный код. Проблема подтверждена производителем, зафиксирована в Банке данных угроз безопасности информации (BDU) под идентификатором BDU:2026-10662, а также в системе CVE как CVE-2026-27641.

Детали уязвимости

Причина кроется в двух взаимосвязанных ошибках. Первая связана с некорректным ограничением пути к каталогу, в который сохраняются загруженные файлы. Это создает возможность обхода пути (CWE-22): специально сформированное имя файла может позволить выйти за пределы предназначенной папки и перезаписать произвольные файлы на сервере. Вторая ошибка относится к неправильной нейтрализации специальных элементов в механизме шаблонов (CWE-1336), что открывает путь к внедрению шаблонов на стороне сервера (SSTI). В сочетании эти недостатки позволяют атакующему не только модифицировать данные, но и добиться выполнения произвольного кода в контексте приложения.

Согласно базовому вектору CVSS 3.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H), уязвимость получила 9,8 балла из 10, что соответствует критическому уровню опасности. Для эксплуатации не требуются учетные данные или взаимодействие с пользователем. Достаточно отправить на сервер специально подготовленный запрос, что делает проблему особенно привлекательной для удаленных атак. По шкале CVSS 2.0 оценка также максимальная - 10 баллов.

Flask-Reuploaded - это вспомогательная библиотека, которая встраивается в веб-приложения для приема файлов от пользователей. Ее используют в административных панелях, файловых обменниках, системах документооборота и других сервисах на Python. Уязвимость затрагивает все версии библиотеки до 1.5.0. В более новых версиях проблема устранена.

Способы эксплуатации, указанные в бюллетене, включают манипулирование ресурсами и структурами данных. На практике это означает, что злоумышленник может управлять содержимым запроса и его параметрами для достижения своих целей. Например, изменяя путь сохранения файла, можно перезаписать конфигурационные файлы приложения, а используя шаблонные конструкции - внедрить серверный код.

Важно отметить, что для данной уязвимости уже существует публичный эксплойт. Это означает, что технические детали атаки доступны широкому кругу лиц, а значит, риск практического использования высок. Злоумышленник, успешно применивший эту уязвимость, может получить полный контроль над веб-сервером: изменить файлы, похитить данные, внедрить вредоносный код или использовать скомпрометированный узел для дальнейших атак на внутреннюю инфраструктуру. Кроме того, подобные уязвимости часто автоматически сканируются ботами, которые ищут публично доступные экземпляры приложений с устаревшими зависимостями.

Разработчик проекта выпустил исправление в версии 1.5.0. Пользователям настоятельно рекомендуется обновить Flask-Reuploaded до этой версии или новее. Ссылка на соответствующий коммит доступна в официальном репозитории проекта, а также в бюллетене безопасности, опубликованном на GitHub. Если обновление невозможно, следует временно ограничить доступ к функциональности загрузки файлов или перевести приложение в изолированную среду с минимальными привилегиями. Дополнительной мерой может стать использование межсетевого экрана веб-приложений (WAF) для фильтрации подозрительных запросов, содержащих служебные символы или попытки обхода пути.

Администраторам стоит провести аудит проектов, использующих эту библиотеку, и проверить, не было ли уже несанкционированных изменений. Наличие публичного эксплойта повышает вероятность автоматизированных сканирований в поисках уязвимых версий. Своевременное обновление зависимостей остается одним из ключевых факторов защиты от атак, направленных на цепочку поставок программного обеспечения. При использовании виртуальных окружений и контейнеров важно пересобрать образы с актуальной версией библиотеки, чтобы исключить случайное наследование старой версии.

Эта уязвимость затрагивает не только непосредственно Flask-Reuploaded, но и все приложения, которые включают эту библиотеку в свой состав. В современной разработке зависимости могут исчисляться десятками, и каждая из них потенциально становится точкой входа. Разработчики оперативно отреагировали на обнаружение проблемы и подготовили патч. Теперь ответственность за его установку лежит на владельцах приложений. Своевременное обновление компонентов и мониторинг бюллетеней безопасности позволяют существенно снизить подобные риски.

Ссылки

Комментарии: 0