
Уязвимость MikroTik RouterOS, приводящая к отказу в обслуживании
Уязвимость в MikroTik RouterOS позволяет неаутентифицированному удалённому злоумышленнику принудительно перезагрузить маршрутизатор. Это выполняется отправкой пакета размером 1 байт на IPv6-адрес RouterOS с использованием IP-протокола 97. Вероятно, все версии RouterOS с поддержкой EoIPv6 уязвимы к этой атаке. Атака требует, чтобы на целевой системе был включён IPv6 и присутствовал хотя бы один туннельный интерфейс.
INPUT для IP-протокола 97.EoIPv6 (Ethernet over IPv6) — это протокол туннелирования канального уровня в MikroTik RouterOS. Протокол EoIPv6 инкапсулирует Ethernet-кадры в модифицированные пакеты EtherIP (IP-протокол 97).
Реализация EoIPv6 от MikroTik использует 12 зарезервированных битов EtherIP для хранения идентификатора туннеля. Также в MikroTik поменяли местами первые 4 бита и вторые 4 бита заголовка EtherIP.
Чтобы извлечь идентификатор туннеля и проверить пакет, RouterOS выполняет описанную выше перестановку битов для пакетов, полученных по протоколу 97. Этот процесс происходит до тех пор, пока в системе присутствуют туннельные интерфейсы (даже если они отключены). RouterOS не проверяет размер полезной нагрузки в процессе. Таким образом, одно-байтовый пакет по протоколу 97 нарушает его работу (поскольку отсутствуют остальные биты, необходимые для формирования идентификатора туннеля).
В RouterOS добавьте IPv6:
/ipv6 address add interface=ether1 address=fd00::1/64 advertise=no
И туннель (любого типа):
/interface ipip add remote-address=127.0.0.1
Запустите эксплойт (exploit.c в репозитории):
./exploit fd00::1
RouterOS перезагрузится через несколько секунд после запуска эксплойта. После перезагрузки можно увидеть следующие логи:
jan/20/2018 10:28:36 system,error,critical router was rebooted without proper shutdown
Были протестированы версии RouterOS 6.39.3 (только исправления), 6.41 (текущая) и 6.42rc11 (кандидат на релиз), и все они на момент написания уязвимы к этой атаке. Вероятно, эта уязвимость присутствует и в более старых версиях RouterOS с поддержкой EoIPv6.
См. эту тему на форуме MikroTik.