IPv6¶
Ссылки¶
- 2018г. Доклад Бориса Лыточкина (Яндекс) - Сетевая безопасность
- IPv6 Toolkit - инструмент для проверки безопасности и поиска неисправностей в IPv6 сетях. Использовался в RFC7872, описывающим то, как теряются в глобальной сети IPv6 пакеты с расширенными заголовками.
- RFC6105 (Feb 2011) - IPv6 Router Advertisement Guard.
- RFC7113 (Feb 2014) - Implementation Advice for IPv6 Router Advertisement Guard (RA-Guard) - рекомендации для реализации RA Guard, призывающие анализировать всю цепочку расширенных заголовков для обнаружения RA сообщений.
- RFC6980 (Aug 2013) - Security Implications of IPv6 Fragmentation with IPv6 Neighbor Discovery - описание последствий использования фрагментированного NDP.
- RFC7112 - Implications of Oversized IPv6 Header Chains.
- RFC5722 - Handling of Overlapping IPv6 Fragments.
- RFC6946 - Processing of IPv6 "Atomic" Fragments.
- RFC4941 (Sep 2007) - Privacy Extensions for Stateless Address Autoconfiguration in IPv6.
- RFC4942 (Sep 2007) - IPv6 Transition/Coexistence Security Considerations.
- RFC7721 (Mar 2016) - Security and Privacy Considerations for IPv6 Address Generation Mechanisms.
- RFC7217 (Apr 2014) - A Method for Generating Semantically Opaque Interface Identifiers with IPv6 Stateless Address Autoconfiguration (SLAAC).
- RFC7707 (Mar 2016) - Network Reconnaissance in IPv6 Networks - методы сканирования IPv6 сетей.
- RFC3756 (May 2004) - IPv6 Neighbor Discovery (ND) Trust Models and Threats.
- RFC6583 (Mar 2012) - Operational Neighbor Discovery Problems.
- RFC6104 (Feb 2011) - Rogue IPv6 Router Advertisement Problem Statement.
Термины¶
- FHS - First Hop Security - RA-GUARD, DHCPv6 Guard etc.
Атаки на заголовок¶
- Flowlabel
- Скрытая передача данных в поле
flowlabel- маршрутизаторы не могут менять ненулевой flowlabel - Вызов перегрузок на разных участках сети - балансировка по полю
flowlabel(ECMP, LAG)
- Скрытая передача данных в поле
- Заголовок переменной длины (Extension Headers) - поле
NH (next-header) - TrafficClass - передача скрытых данных
Атаки канального уровня¶
в конце строки способы защиты
- Smurf attack - флуд пинг на мультикаст адрес - фильтрация
- DAD - переполнение таблицы ND путем спуфинга - IPv6 snooping
- Подделка ND - IPv6 snooping
- Подделка RA - RA guard (можно обойти разными способами: фрагментированный NDP, добавление EH в ICMPv6 RA)
- Подделка DHCPv6 server/relay - DHCPv6 snooping/guard
Безопасность¶
- Изначально в IPv6 для безопасности было обязательно использовать IPSEC (MUST), но позже в RFC поменяли на SHOULD.
- SEcure NDp (SEND) - дополнительные типы сообщений, использование X509 сертификатов
Эти способы не нашли широкой реализации.
Фильтрация¶
- Фаерволл не должен фильтровать фрагменты (пакеты с EH Fragment Header).
- Фаерволл должен корректно обрабатывать расширенные заголовки.
SLAAC¶
Развитие способов генерации адреса:
- Modified EUI-64 - способ генерации "стабильного" адреса на основе MAC адреса. Таким образом IID остается одинаковым при смене сети. Таким образом имеет следующие недостатки в приватности:
- Отслеживать сетевую активность устройства.
- Отслеживать местоположение.
- Упрощает сканирование сети.
- Позволяет использовать уязвимости конкретных устройств.
- Privacy Extensions - добавляет к постоянному адресу генерацию временного (приватного) адреса с ограниченным временем действия, который используется для исходящих подключений.
- Не защищает от сканирования и обнаружения постоянного адреса.
- Semantically Opaque IID - псевдорандомный IID, который остается неизменным, пока не изменится префикс.
- Temporary Address Extensions - пришел на смену Privacy Extensions. Использует рандомизированный Semantically Opaque.
ICMPv6¶
Ключевые особенности для обеспечения безопасности:
- ICMPv6 error message не должны посылать в ответ на:
- пакеты с multicast адресом назначения, чтобы избежать обнаружение хостов и амплификаций.
- пакеты, адрес источника которых однозначно не идентифицирует хост, например, IPv6 Unspecified Address, Multicast address или Anycast address.
- Echo Reply опционален в ответе на Echo Request на multicast адрес. Лучше не слать во избежание Smurf атаки. В настоящее время большая часть операционных систем поступает именно так.
- Фильтруем информационные сообщения неизвестного типа, чтобы ICMPv6 не мог использоваться для обнаружения хостов.
- Нужно ограничивать рейт сообщений ICMPv6 error message.
Исключения
- Обработка Packet To Big Message для полноценной работы PMTUD.
- Обработка Parameter Problem Message, Code 2, сообщающего о нераспознанной IPv6 опции.
RIPE NCC IPv6 Security¶
Выжимка из курса RIPE с одноименным названием. Ниже перечислены виды атак.
Уязвимости основного заголовка¶
Threat #1 - IP spoofing¶
Описание¶
Заключается в подмене значения поля source address - IP spoofing.
Предотвращение¶
Техники также подходят и для IPv4.
- Ingress Filtering [RFC2827 / BCP38] - фильтрация пакетов, исходящих из сети, с адресов, которые этой сети не принадлежат.
- unicast Reverse Path Forwarding (uRPF) [RFC3704 / BCP84] - Ingress Filtering for Multihomed Networks - описывает несколько способов защиты, в том числе с использованием таблицы маршрутизации.
⁉️ - нужно разобраться, в чем отличие вышеуказанных практик.
Threat #2 - Covert channel¶
Описание¶
Заключается в передаче в полях flow label (20bit) или traffic class (8bit) информации, которая остается незамеченной инструментами защиты - covert channel. То есть общая пропускная способность скрытого канала - 28 бит.
Предотвращение¶
Использование IPS и IDS, которые могут заглядывать внутрь пакета, изучая его на предмет аномалий, например поле flow label, которое ожидается 0-м.
Уязвимости расширенных заголовков¶

Threat #1 - Rouing Header¶
Описание¶
type 0 (RH0) уязвим и использовать его нельзя, а точнее он запрещен (RFC5095), т.к. позволяет удаленно зафлудить какой-либо путь или стык в интернете.
Предотвращение¶
- Убедиться, что маршрутизаторы следуют RFC5095 и игнорируют RH0.
- Фильтровать пакеты с RH0.
Threat #2 - Bypassing¶
Описание¶
Расширенные заголовки (EH) могу служить для скрытия типа отправленных пакетов. Есть два сценария:
- Обход RA Filtering/RA Guard при помощи любого EH - добавление в то место, где он не ожидается, например EH Destination Option перед ICMPv6 RA пакетом.

В данный момент нет способа использовать EH в RA, но NDP не запрещает этого делать, просто игнорируя такие заголовки. RA-Guard в свою очередь определяет RA пакет только лишь заглядывая в поле Next Header основного заголовка, не следуя по всей цепочке EH.
- Обход RA Filtering/RA Guard при помощи EH Fragment (Fragmented NDP)- нацелен на то, чтобы устройство собирало фрагменты воедино, прежд чем понять, какой пакет был отправлен. Это непросто для реализации RA Guard на L2 коммутаторах.

Предотвращение¶
-
Проверять цепочку заголовков IPv6 правильно.
-
Запрещать фрагментированные NDP пакеты (RFC6980).
Общим решением для защиты будет использовать RFC7112, который говорит о том, что цепочка заголовков всегда должна идти в первом фрагменте.
Threat #3 - Fragmentation¶
Описание¶
Для этого вектора атаки возможно 3 сценария:
- Пересекающиеся фрагменты - оффсет в EH Fragment нескольких пакетов указывает на то, что фрагменты пересекаются, т.е. один фрагмент частично или полностью перезаписывает другой.
Этот вектор может использоваться как teardrop атака, а также для обхода IDS. Фрагменты посылаются со случайными данными, которые в будущем могут быть перезаписаны на данные, являющиеся части атаки, если собранные IDS пакеты будут нераспознаны.
-
Отсутствие последнего фрагмента - нацелен на исчерпание памяти целевой системы, т.к. она ждет последнего фрагмента, чтобы собрать все части вместе.
-
Атомарные фрагменты - вектор атаки, при котором офсет выставляется в 0, а так же флаг M = 0 (последний фрагмент) - IPv6 пакет, фрагментированный на один фрагмент размером 0 байт. При получении такого пакета, целевая система отбросит все остальные фрагменты с таким же набором параметров: SRC, DST, Fragment Indetification. Т.е. атакующий заставляет целевой хост дропать легитимные пакеты с фрагментами.
В том числе могут отбрасываться и нефрагментированные пакеты, но у которых выставлен EH Fragment.
Предотвращение¶
- Пакеты с пересекающимися фрагментами и все остальные фрагменты дейтаграммы должны быть отброшены (RFC5722).
- Стандартом IPv6 установлен таймаут для ожидания последнего врагмента в 60сек начиная с первого полученного фрагмента. По его истечении все пакеты с фрагментами будут отброшены.
- Убедиться в том, что система правильно обрабатывает атомарные фрагменты (RFC6946). Такие фрагменты должны быть изолированы от остальных.
Методы сканирования сети¶
Способы определения префикса сети:
- Открытые источники (RIR например)
- Логи серверов
- Публичные архивы
- Bittorrent
- Общие шаблоны назначения/распределения адресов (/64)
- DNS (Direct/Reverse)
- Traceroute
Способы определения IID:
- EUI-64
- Low-bits / trivial ::1
- IPv4-based (2001:db8:1::10.0.0.5)
- Service port (2001:db8:1:1::80)
- Wordy address (2001:db8:1::bad:cafe)
- Sequential
Сканирование локальной сети
- Снифинг трафика
- В dual-stack сетях можно использовать IPv4 для извлечения полезной информациию
- Протоколы маршрутизации
- link-local протоколы. Например:
- Link-Local Multicast Name Resolution (LLMNR)
- Multicast DNS (mDNS)
- DNS Service Discovery (DNS-SD)
NDP¶
- Hop limit 255 у сообщений.
- В спецификации NDP упоминается использование IPSec для безопасности, но на практике не используется из-за сложности организации инфраструктуры публичных ключей (PKI).
- Для безопасноти NDP был предложен SEND, но не прижился и не может быть использован.
Threat #1 - NS/NA Spoofing¶
Описание¶
Атакующий подменяет link-layer адрес в NS/NA сообщениях. В обоих случаях в кеш жертвы попадает этот неверный L2 адрес.
- NS - подмена Source link-layer option.
- NA - подмена Target link-layer option.
Целями такой подмены могут являться:
- Перенаправление трафика.
- DoS - дроп трафка, если подменненного link-layer адреса не существует.
- Атакуя два хоста, можно осуществить MITM, пропуская их трафик между собой через себя.
Атака может применять в процессе NUD или DAD.
- DAD - не дать хосту, который хочет сгенерировать себе адрес, сделать это.
- NUD - создавать видимость того, что запрашиваемый хост все еще жив.
Предотвращение¶
Использовать FHS, реализованный на коммутаторах:
- RA-GUARD
- DHCPv6 Guard / DHCPv6 Shield
- IPv6 Snooping (ND inspection + DHCPv6 Snooping) - создание таблицы биндингов на коммутаторе.
- IPv6 Source / Prefix Guard - использует для фильтрации созданную при помощи IPv6 Snooping binding table.
- IPv6 Destination Guard (or ND Resolution rate limiter)
- MLD Snooping
Threat #2 - RA/RS Spoofing¶
Описание
- Подмена роутера для перенаправления трафика на себя или DoS.
- Фиктивный префикс on-link для перенаправяления трафика на себя или DoS.
- Анонс фиктивного глобального префикса - DoS.
- Подделка параметров, например для подсовывания DHCPv6 сервера.
Пердотвращение
...
...