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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2020-16898 — CVE-2020-16898 (Bad Neighbor) Microsoft Windows TCP/IP: логика и правило обнаружения уязвимости | Kitploit
Инструменты/GitHubGitHub/advanced-threat-research/cve-2020-16898
Анализ уязвимостейЭксплуатацияСетевая безопасностьОбнаружение Вторжений
GitHubadvanced-threat-research/cve-2020-16898

CVE-2020-16898

CVE-2020-16898 (Bad Neighbor) Microsoft Windows TCP/IP: логика и правило обнаружения уязвимости

Репозиторий
Сайт
2093045 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

CVE-2020-16898: “Плохой сосед”

CVSS Score: 8.8

CVSS Vector: CVSS3.0/AV:A/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H/E:P/RL:O/RC:C

Обзор

13 октября Microsoft объявила о чрезвычайно критической уязвимости в стеке IPv6 Windows, которая позволяет злоумышленнику отправлять специально созданные пакеты для потенциального выполнения произвольного кода на удаленной системе. Доказательство концепции, переданное участникам MAPP, является одновременно чрезвычайно простым и абсолютно надежным. Оно приводит к немедленному BSOD (синему экрану смерти), но, более того, указывает на вероятность эксплуатации для тех, кто сможет обойти меры защиты Windows 10 и Windows Server 2019. Последствия эксплойта, который позволяет удаленно выполнять код, будут широкими и серьезными, так как это тип ошибки, которая может стать червеобразной. Для удобства мы назвали уязвимость «Плохой сосед», поскольку она находится в протоколе обнаружения соседей ICMPv6, использующем тип объявления маршрутизатора.

Этот документ подготовлен подразделением McAfee Advanced Threat Research. Он предназначен для предоставления ценной информации сетевым администраторам и сотрудникам службы безопасности, стремящимся глубже понять эту уязвимость и защититься от эксплуатации. Представленная здесь сигнатура должна быть тщательно рассмотрена и проверена в тестовых средах перед использованием в производственной среде и может потребовать специальной настройки для целевого развертывания.

Предоставленная информация может быть изменена без уведомления и предоставляется «AS IS», со всеми возможными недостатками, без каких-либо гарантий относительно точности или применимости информации к какой-либо конкретной ситуации или обстоятельствам, и используется на ваш собственный риск. Кроме того, мы не можем гарантировать какую-либо производительность или эффективность для любых сигнатур.

Сигнатура

Сигнатура Suricata для этой уязвимости находится в файле cve-2020-16898.rules и содержит следующую логику:

alert icmp any any -> any any (msg:"Potential CVE-2020-16898 Exploit"; lua:cve-2020-16898.lua; sid:202016898; rev:1;)

Соответствующий сценарий Lua можно найти в cve-2020-16898.lua. Он содержит логику, необходимую для правильного анализа уровня ICMPv6 и выявления возможной эксплуатации уязвимости «Плохой сосед», как описано ниже:

Как только мы определили начало уровня ICMPv6, мы проверяем первый байт уровня, чтобы убедиться, что это пакет объявления маршрутизатора ICMPv6 (Type = 134) — если нет, мы выходим.

Поскольку примитивы Suricata не были обновлены для анализа параметров ICMPv6, мы просто переходим к 17-му байту уровня ICMPv6, так как именно там должны начинаться параметры, если они присутствуют (первые 16 байт — это поля фиксированной длины, в соответствии с RFC 4443). Оттуда мы перебираем все параметры, пока не закончатся байты в пакете. Для каждого параметра нас интересуют только первые два байта: поле типа и длины соответственно. Пока мы игнорируем все параметры, не являющиеся RDNSS, для параметра Type = 25 (RDNSS) мы проверяем, является ли Length (второй байт параметра) четным числом. Если да, мы помечаем это. Если нет, продолжаем. Поскольку длина измеряется с шагом 8 байт, мы умножаем Length на 8 и переходим вперед на это количество байт, чтобы добраться до начала следующего параметра (вычитая 1, чтобы учесть байт длины, который мы уже использовали).

С помощью этого правила мы также проверяем, что Length равен как минимум 3, как того требует RFC 8106, но в конечном итоге эта проверка может быть излишней, поскольку нас интересует только четность Length.

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