CVE-2026-61500: Подделка сесси... Заметка
DEV Community на русском

CVE-2026-61500: Подделка сессии администратора HFS без входа в систему

В версиях Rejetto HFS с 3.0.0 по 3.2.0 присутствует критическая уязвимость, позволяющая неаутентифицированным злоумышленникам подделывать администраторские сессии. Этот эксплойт обеспечивает выполнение произвольного кода на сервере. Первопричина заключается в использовании Math.random() из JavaScript для операций, чувствительных к безопасности. В частности, он использовался для ключа подписи cookie и идентификатора рукопожатия при входе, оба из которых криптографически слабы.Math.random() в V8 представляет собой детерминированный алгоритм xorshift128+. Наблюдая за несколькими выходными данными Math.random() из идентификаторов рукопожатия при входе, злоумышленник может восстановить внутреннее состояние генератора псевдослучайных чисел (ГПСЧ). Это позволяет ему предсказывать все прошлые и будущие выходные данные. Зная состояние ГПСЧ, злоумышленник может затем восстановить ключ подписи cookie, сгенерированный при запуске сервера.Получив ключ подписи, злоумышленник может подделать cookie администраторской сессии. Этот поддельный cookie предоставляет доступ к административным функциям, включая конфигурацию server_code. Установив вредоносный фрагмент кода server_code, злоумышленник добивается удаленного выполнения кода с правами root. Вся цепочка атаки представляет собой "черную коробку" реконструкции внутреннего состояния сервера посредством HTTP-взаимодействий.Уязвимость была обнаружена Заком Хэнли из Horizon3.ai, и вскоре после этого началось ее использование. Исправление заключается в замене небезопасного Math.random() криптографически безопасными примитивами из модуля crypto Node.js. Это включает использование randomBytes для ключа подписи cookie и randomUUID для идентификаторов сессий. Урок подчеркивает, что любое значение, критически важное для безопасности, даже кажущееся эфемерным, требует криптографически безопасного генератора псевдослучайных чисел.
CdXz5zHNQW_9ASAYflSO7.webp