Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
NotCVE-2026-0014 — Proof-of-concept и рекомендации по устранению CWE-22 path traversal в обработчике drag-and-drop InputLeap, включая шаги воспроизведения, эксплойт-скрипт и рекомендации по исправлению. | Kitploit
Инструменты/GitHubGitHub/cduram/notcve-2026-0014
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на Проникновение
GitHubcduram/notcve-2026-0014

NotCVE-2026-0014

Proof-of-concept и рекомендации по устранению CWE-22 path traversal в обработчике drag-and-drop InputLeap, включая шаги воспроизведения, эксплойт-скрипт и рекомендации по исправлению.

Репозиторий
1715 ч 11 мин назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Сводка

Продукт: InputLeap v3.0.3
Поставщик: input-leap
Уязвимость: Обход пути
CWE: CWE-22 Некорректное ограничение имени пути ограниченным каталогом ('Обход пути')

Описание

Обработчик перетаскивания InputLeap пытается очистить имена файлов, находя последний разделитель пути и оставляя только часть после него. Когда разделитель не найден, поиск в строке C++ возвращает специальное сигнальное значение npos, указывающее на неудачу. Однако код никогда не проверяет это сигнальное значение перед использованием результата в арифметических вычислениях. Поскольку npos определён как наибольшее возможное беззнаковое целое, вычитание из него беззвучно вызывает переполнение и даёт правдоподобный, но совершенно неверный результат: вместо возврата только имени файла возвращается вся неочищенная исходная строка. Злоумышленник может воспользоваться этим, создав сообщение, в котором одна запись не содержит разделителя, а другая содержит несовпадающий — глобальная эвристика обнаружения разделителей в коде переключается, поиск беззвучно завершается неудачей, и ....\AppData...\Startup\evil.exe проходит без изменений. Затем эта строка конкатенируется с каталогом назначения и передаётся ОС, которая интерпретирует последовательности .. и записывает файл за пределами предполагаемой папки. Уязвимость существует из-за отсутствия защитной проверки случая "не найдено".

Шаги воспроизведения

  1. Включите --enable-drag-drop на цели (опционально, по умолчанию ВЫКЛ).
  2. Как подключённый узел, инициируйте сообщение передачи файла перетаскиванием, встроенные данные имени файла которого содержат символ "/" где-то в буфере (чтобы принудительно установить slash="/"), в то время как фактический сегмент имени файла использует разделители "\", например, встроив посторонний "/" ранее в блок данных и имя файла "..\..\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\evil.exe".
  • find_last_of(slash, ...) в DragInformation::parseDragInfo возвращает npos для части имени файла, разделённой "\", вызывая переполнение беззнаковой арифметики и возвращая полный неусечённый путь.
  • DropHelper::writeToDir конкатенирует этот путь с каталогом назначения перетаскивания пользователя (по умолчанию Рабочий стол) и записывает файл без канонизации, помещая его в папку Startup.
  • При следующем входе в систему evil.exe выполняется от имени пользователя-жертвы.
  • Затронутый код

    /src/lib/inputleap/DragInformation.cpp
    /src/lib/inputleap/DropHelper.cpp

    Proof-of-Concept или домой

    Предоставлен POC, который поддерживает TLS и соединения без шифрования с сервером.

    input-leap-directory-traversal-poc.py

    Влияние

    Злоумышленник может воспользоваться этой уязвимостью для загрузки файла по произвольному пути за пределами папки по умолчанию или назначенной. Это может привести к выполнению кода

    Предлагаемое исправление

    1. В DragInformation::parseDragInfo замените эвристику обнаружения разделителей на std::filesystem::path(filename).filename(), чтобы гарантировать извлечение только базового имени.
    2. В DropHelper::writeToDir канонизируйте итоговый путь с помощью std::filesystem::canonical и отклоняйте, если он не начинается с destination.
    3. Отклоняйте имена файлов, содержащие "..", байты NUL, буквы дисков (X:) или ведущие разделители.

    Хронология раскрытия

    • 27 июля 2026 -- Попытался сообщить проекту InputLeap, но за день до моего обращения они заархивировали проект. Сообщено в NotCVE.
    • 24 сентября 2026 -- NotCVE-2026-0014 опубликовано.
    Скачать инструмент