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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-52885 — Технический анализ CVE-2026-52885: состояние гонки TOCTOU в Notepad++ v8.9.6.2, позволяющее произвольное выполнение команд через обход целостности HMAC. Включает основную причину, сценарий атаки, PoC и анализ исправления. | Kitploit
Инструменты/GitHubGitHub/v3s9er/cve-2026-52885
Анализ уязвимостейАнализ КодаЭксплуатацияАнализ Бинарных ФайловСтатьи и ИсследованияОбучение и Образование
GitHubv3s9er/cve-2026-52885

CVE-2026-52885

Технический анализ CVE-2026-52885: состояние гонки TOCTOU в Notepad++ v8.9.6.2, позволяющее произвольное выполнение команд через обход целостности HMAC. Включает основную причину, сценарий атаки, PoC и анализ исправления.

Репозиторий
327 дней назадЕщё не проверено

Популярное

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

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

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

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

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

TOCTOU: проверка HMAC на диске, выполнение из памяти

Notepad++ v8.9.6.2 — выполнение управляемых атакующим команд UserCommand через состояние гонки HMAC

Уведомление

GHSAGHSA-qm4c-qg8p-qfcr
CVECVE-2026-52885
СерьёзностьВысокая
Затрагиваемая версияv8.9.6.2
Исправленная версияv8.9.6.4
Коммит исправления4f7563c
Затрагиваемый файлPowerEditor/src/NppCommands.cpp :4328–4359
ПлатформаWindows 11 Pro x64
Необходимые привилегииОбычный пользователь (доступ на запись к shortcuts.xml)
Исследовательv3s9er
Дата раскрытия2026-06-05

Краткое описание

В Notepad++ v8.9.6.2 была введена проверка целостности HMAC-SHA256 для shortcuts.xml, чтобы предотвратить внедрение произвольных записей UserCommand.

Проверка содержит ошибку TOCTOU: HMAC проверяется по файлу на диске в момент вызова, но выполняемая команда читается из вектора _userCommands в памяти, загруженного при запуске. Эти два источника никогда не синхронизируются повторно.

Атакующий, имеющий возможность записывать в shortcuts.xml, может разместить вредоносную команду до запуска, позволить Notepad++ загрузить её в память, восстановить легитимный файл на диске, а затем запустить команду. Проверка HMAC проходит (диск чист), но вредоносная нагрузка выполняется (память устарела).


Технический обзор

Механизм целостности проверяет текущий shortcuts.xml на диске, а выполнение команды использует ранее загруженное представление в памяти. Поскольку эти два источника данных независимы, атакующий может изменить файл до запуска, дать ему возможность быть разобранным в память, а затем восстановить исходный файл перед выполнением команды — в результате проверка HMAC проходит, а вредоносная нагрузка выполняется.


Причина

NppCommands.cpp строки 4328–4359:

root@kitploit:~
// TIME OF CHECK — чтение файла с диска
std::string currentHMAC = computeHMAC(
    getMachineGUID(),
    getFileContent(nppParams.getShortcutsPath().c_str())
);
if (currentHMAC != nppGUI._shortcutsXmlHmacInConfig) { return; }
// проверка по ДИСКУ

// TIME OF USE — чтение вектора из памяти (загружен при запуске, не обновляется)
int i = id - ID_USER_CMD;
const vector<UserCommand>& cmds = nppParams.getUserCommandList();
UserCommand ucmd = cmds[i];
Command cmd(string2wstring(ucmd.getCmd(), CP_UTF8));
cmd.run(_pPublicInterface->getHSelf()); // выполнение нагрузки из ПАМЯТИ
ОперацияИсточникВремя
ПРОВЕРКА (HMAC)Файл на дискеВ момент вызова
ИСПОЛЬЗОВАНИЕ (выполнение)Вектор в памятиЗагружен при запуске
РАЗРЫВУправляется атакующимЗапуск → Вызов

Сценарий атаки

Предварительное условие: доступ на запись к shortcuts.xml

  • Портативная установка: та же папка, что и notepad++.exe
  • Стандартная установка: %AppData%\Notepad++\

Шаги:

  1. Перезаписать shortcuts.xml на диске вредоносной версией (cmd = calc.exe)
  2. Запустить Notepad++ — _userCommands заполняется из вредоносного файла
  3. Восстановить легитимный shortcuts.xml на диск — HMAC теперь совпадает с config.xml
  4. Отправить WM_COMMAND(21000) (ID_USER_CMD+0) или нажать Ctrl+Alt+P
  5. Проверка HMAC читает легитимный файл с диска → ПРОХОДИТ
  6. Выполнение читает _userCommands[0] из памяти → запускается calc.exe

Результат: выполнение управляемых атакующим команд с привилегиями текущего пользователя. Без прав администратора, UAC или предупреждения пользователя.


Временная шкала выполнения

ВремяСобытиеСостояние
T+0.0сАтакующий записывает ВРЕДОНОСНЫЙ shortcuts.xmlдиск=ВРЕДОНОСНЫЙ
T+0.0сАтакующий запускает Notepad++диск=ВРЕДОНОСНЫЙ
T+0.1сNotepad++ читает shortcuts.xml → _userCommands[0]="calc.exe"память=ВРЕДОНОСНЫЙ
T+4.2сNotepad++ полностью загруженпамять=ВРЕДОНОСНЫЙ
T+4.2сАтакующий восстанавливает ЛЕГИТИМНЫЙ shortcuts.xmlдиск=ЛЕГИТИМНЫЙ / память=ВРЕД
T+4.7сАтакующий отправляет WM_COMMAND(21000)
T+4.7сПроверка HMAC: чтение ЛЕГИТИМНОГО файла с диска → ПРОХОДИТПРОВЕРКА ОК
T+4.7сВыполнение: чтение _userCommands[0] из ПАМЯТИ → calc.exeЭКСПЛОЙТ
T+4.7сcalc.exe запущен (PID 35932)ПОДТВЕРЖДЕНО

Воздействие

ТипВыполнение произвольных команд
Требуется права администратораНет
Запрос UACНет
ОбнаруживаемостьНизкая — на диске всё время легитимный файл; нагрузка только в памяти
CVSS (оценочно)AV:L / AC:H / PR:L / UI:N / S:U / C:H / I:H / A:H

Доказательство концепции

См. poc_8962_toctou.ps1.

Требования:

  • Notepad++ v8.9.6.2 portable x64
  • Наличие doLocalConf.xml в папке Notepad++ (портативный режим)
  • config.xml с действительным HMAC для легитимного shortcuts.xml
root@kitploit:~
.\poc_8962_toctou.ps1 -NppPath "C:\путь\к\notepad++.exe"

Подтверждено: calc.exe запущен (PID 35932), на диске всё время легитимный shortcuts.xml.


Анализ исправления

Исправление (коммит 4f7563c) переносит проверку HMAC на этап запуска, одновременно с начальным разбором файла. Проверка и использование теперь работают с одним и тем же объектом в одно и то же время, устраняя окно TOCTOU.

v8.9.6.2 (уязвимая)v8.9.6.4 (исправленная)
Проверка HMACВ момент вызова, повторное чтение с дискаПри запуске, те же байты, что и при разборе
Источник командыПамять, загруженная при запускеПамять, проверенная при запуске
Окно TOCTOUЗапуск → ВызовУстранено

Ссылки

  • GHSA-qm4c-qg8p-qfcr
  • Коммит исправления 4f7563c
  • Релиз Notepad++ v8.9.6.4
Скачать инструмент