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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-21717 — Доказательство концепции для CVE-2026-21717, уязвимости коллизий хеширования строк в Node.js V8, вызывающей отказ в обслуживании через специально сформированные JSON-нагрузки. | Kitploit
Инструменты/GitHubGitHub/open-flaw/cve-2026-21717
Анализ уязвимостейЭксплуатацияОбучение и Образование
GitHubopen-flaw/cve-2026-21717

CVE-2026-21717

Доказательство концепции для CVE-2026-21717, уязвимости коллизий хеширования строк в Node.js V8, вызывающей отказ в обслуживании через специально сформированные JSON-нагрузки.

Репозиторий
4 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-21717

Уязвимость предсказуемых коллизий хеширования строк в V8 Node.js, приводящая к отказу в обслуживании

Обзор

Критическая уязвимость в механизме хеширования строк V8 позволяет злоумышленникам вызывать серьёзную деградацию производительности в приложениях Node.js. Строки, похожие на целые числа, хешируются до их числового значения, что делает коллизии хешей тривиально предсказуемыми. Создавая вредоносный ввод, вызывающий множество коллизий во внутренней таблице строк V8, злоумышленник может значительно снизить производительность или вызвать отказ в обслуживании.

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

  • CVE ID: CVE-2026-21717
  • Серьёзность: Высокая
  • Вектор атаки: Сеть
  • Сложность атаки: Низкая
  • Воздействие: Отказ в обслуживании (DoS)

Техническое описание

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

Затронутые компоненты

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

JSON.parse()

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

Этот репозиторий содержит доказательство концепции, демонстрирующее уязвимость:

Предварительные требования

root@kitploit:~
# Используйте версию Node.js, затронутую CVE-2026-21717
nvm use
npm install

Запуск PoC

root@kitploit:~
node poc.js

Ожидаемое поведение

PoC создаёт полезную нагрузку с:

  • Цепочкой квадратичного зондирования из ~130 тыс. строк
  • Повторяющимися целевыми значениями, принуждающими к поиску по цепочке
  • Результатом в ~44+ секунд времени ЦП для одной операции JSON.parse()

Схема атаки

  1. Злоумышленник создаёт враждебную JSON-полезную нагрузку, содержащую строки, похожие на целые числа, предназначенные для коллизий
  2. Клиент отправляет вредоносный JSON на сервер
  3. Сервер вызывает JSON.parse() для недоверенного ввода
  4. Движок V8 интернирует строки в хеш-таблицу, вызывая коллизии
  5. Результат Чрезвычайное потребление ЦП и деградация производительности

Смягчение последствий

Рекомендуемые действия

  1. Обновите Node.js до исправленной версии, устраняющей эту уязвимость
  2. Проверка ввода: Ограничьте размер и сложность JSON-полезных нагрузок
  3. Ограничение скорости: Внедрите ограничение скорости на конечных пунктах, принимающих JSON-ввод
  4. Тайм-ауты: Установите разумные тайм-ауты для операций разбора JSON
  5. Мониторинг ресурсов: Отслеживайте использование ЦП на предмет аномальных всплесков

Смягчение на уровне кода

root@kitploit:~
// Ограничение размера полезной нагрузки
app.use(express.json({ limit: '100kb' }));

// Добавление тайм-аута для разбора
const parseWithTimeout = (str, timeout = 1000) => {
  return Promise.race([
    Promise.resolve(JSON.parse(str)),
    new Promise((_, reject) => 
      setTimeout(() => reject(new Error('Parse timeout')), timeout)
    )
  ]);
};

Ссылки

  • CVE Details
  • Блог безопасности Node.js

Отказ от ответственности

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

Скачать инструмент