
Учебное воспроизведение уязвимости обхода пути CVE-2026-14628 с примерами уязвимого и безопасного кода, объяснением исправления и запускаемыми демонстрациями для изучения CWE-22.
Минимальная запускаемая демонстрация класса уязвимостей Path Traversal (CWE-22), использующая недавно раскрытую уязвимость CVE-2026-14628 в качестве реального примера.
CVE-2026-14628 затрагивает 'NousResearch/hermes-agent' (< 2026.5.16).
Функция extract_media в gateway/platforms/base.py формирует путь в файловой системе из входящей полезной нагрузки webhook без её проверки, что позволяет удалённому неаутентифицированному атакующему читать файлы за пределами целевой медиа-директории.
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nhermes-agent и не эксплуатирует её. Вместо этого он воспроизводит точный паттерн уязвимости в небольшом самодостаточном примере, чтобы дефект и его исправление было легко изучать и использовать как справочник при ревью другого кода.| Файл | Назначение |
|---|---|
vulnerable_example.py | Воспроизводит ошибочную логику: строит путь через наивную конкатенацию строк, без валидации |
secure_example.py | Исправленная версия: проверяет, что итоговый абсолютный путь остаётся в пределах целевой корневой директории |
python3 vulnerable_example.py
Вывод показывает, как «атакующий» успешно читает файл (secret_outside_media_root.txt), находящийся за пределами целевой директории media_storage/, используя входное значение вида ../secret_outside_media_root.txt.
python3 secure_example.py
То же вредоносное входное значение отклоняется с понятной ошибкой PathTraversalError.
В secure_example.py применяются две взаимодополняющие защиты:
.. или разделители пути, отклоняются до любого обращения к файловой системе (быстрый отказ, понятная ошибка для легитимных вызывающих).candidate_path = os.path.abspath(os.path.join(MEDIA_ROOT, filename))
if not candidate_path.startswith(MEDIA_ROOT + os.sep):
raise PathTraversalError(...)
Path traversal — один из самых распространённых и самых предотвратимых классов уязвимостей в программном обеспечении, которое работает с загрузкой файлов, скачиванием или любыми управляемыми пользователем именами файлов: обработчики webhook, медиа-процессоры, просмотрщики логов, шаблонизаторы и API раздачи файлов — частые цели. Исправление дёшево (всего несколько строк); цена его игнорирования — произвольное раскрытие файлов, а в худших случаях (в сочетании с правом записи) — удалённое выполнение кода.
Этот проект предназначен только для образовательных целей. Он представляет собой обобщённое воспроизведение известного класса уязвимостей, а не рабочий эксплойт против какого-либо конкретного живого или незапатченного программного обеспечения. Не используйте эти техники против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.