Возможность удаленного даунгрейда устройств на базе RouterOS (Mikrotik) ставит под угрозу сотни тысяч сетевых устройств. Уязвимость связана с отравлением DNS-кеша Winbox протокола и позволяет загрузить устаревшую (со сбросом пароля «по-умолчанию») или модифицированную прошивку на устройство.
Детали уязвимости
Терминал RouterOS поддерживает команду разрешения для поиска DNS.
Этот запрос обрабатывается двоичным файлом с именем resolver. Resolver является одним из многих двоичных файлов, которые подключены к протоколу Winbox от RouterOS. На высоком уровне «сообщения», отправляемые на порт Winbox, могут маршрутизироваться в различные двоичные файлы в RouterOS на основе схемы нумерации на основе массива.
По умолчанию в RouterOS отключена функция DNS-сервера.
Однако даже при отключенной функции сервера маршрутизатор поддерживает собственный кэш DNS.
Когда мы делаем запрос, используя winbox_dns_request, например, example.com, маршрутизатор будет кэшировать результат.
Поскольку мы можем указать DNS-сервер, через который должен пройти запрос, вводить неверные адреса тривиально. Например, можно настроить реализацию DNS-сервера от Филиппа Клауса, чтобы всегда отвечать записью A, содержащей IP-адрес 192.168.88.250.
def dns_response(data):
request = DNSRecord.parse(data)
reply = DNSRecord(DNSHeader(
id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
qname = request.q.qname
qn = str(qname)
reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
print("---- Reply:\n", reply)
return reply.pack()
Теперь если с помощью Winbox поискать example.com то можно увидеть что DNS-кеш маршрутизатора отравлен.
Конечно, отравление example.com не очень полезно, так как маршрутизатор фактически не будет его использовать. Тем не менее, маршрутизатор нуждается в обращении к upgrade.mikrotik.com, cloud.mikrotik.com, cloud2.mikrotik.com и download.mikrotik.com. И благодаря еще одной ошибке есть возможность отравить их всех сразу.
def dns_response(data):
request = DNSRecord.parse(data)
reply = DNSRecord(DNSHeader(
id=request.header.id, qr=1, aa=1, ra=1), q=request.q)
qname = request.q.qname
qn = str(qname)
reply.add_answer(RR(qn,ttl=30,rdata=A("192.168.88.250")))
reply.add_answer(RR("upgrade.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
reply.add_answer(RR("cloud.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
reply.add_answer(RR("cloud2.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
reply.add_answer(RR("download.mikrotik.com",ttl=604800,
rdata=A("192.168.88.250")))
print("---- Reply:\n", reply)
return reply.pack()
Маршрутизатор запрашивает одно разрешение, а мы предоставляем пять обратно. Маршрутизатор неправильно кэширует все эти ответы.
Очевидно, что эта атака также полезна, если маршрутизатор действует как DNS-сервер, поскольку он позволяет атаковать клиентов маршрутизатора.
Также эта атака позволяет проэксплуатировать более серьезную уязвимость: произвести даунгрейд или бэкпортирование версии RouterOS. Атакующий воссоздает логику сервера обновлений, включая changelog и заставляет RouterOS воспринять устаревшую (уязвимую) версию как актуальную. Опасность здесь кроется в том, что при «обновлении» версии пароль администратора сбрасывается в значение «по-умолчанию» — злоумышленник может войти в систему с пустым паролем!
Атака вполне рабочая, несмотря на то что автор реализовывает еще несколько векторов, связанных в том числе и с встраиванием бэкдора в прошивку, но это уже избыточная техника и применение ее в нелигитимных целях противозаконно.
Защита
Простое отключение Winbox позволяет защититься от этих атак. Несмотря на удобство администрирования через Winbox лучше воспользоваться протоколом SSH.
LumberJack
По умолчанию правила файрвола разрешают доступ к роутеру только из локалки и запрещают из Интернета (включая порт 53). Таким образом «обновив» прошивку злодей уже не попадёт внутрь снаружи, а если сохранит правила, то и пароль админа не сбросит.
Возможно я и ошибаюсь.
MarvinD
Если winbox прикрыт firewall, то до него не дойдет трафик. Если бы не так, то это был бы атас полный.
AcidVenom
Есть еще провайдер. Не у всех есть правило, блокирующее проникновении если пров пропишет маршрут в вашу сети.
в конфах по умолчанию оно есть, но было не всегда
IgorPie
Ошибаетесь. Запускаю винбокс и вижу открытые наружу микроты соседей по локалке.
nApoBo3
Не факт, что вы можете на них войти, там есть отдельный протокол для discovery. Плюс он ещё и по l2 умеет и это тоже отдельно нужно блокировать.
AcidVenom
Из коробки это можно только из бриджа.
IgorPie
опровергнуть не могу, нет паролей. Но и видеть я их тоже не должен, в таком случае. А микротов пара штук на 32 квартиры.
Andrusha
Ну так LumberJack вообще-то писал про правила по умолчанию, а у соседей, видимо, они уже не по умолчанию, раз видно.
AcidVenom
Возможно, обновляли со старых версий, оттуда и старая конфа. Сейчас по умолчанию конфа другая. Аналогично и MNDP.
hav0k
По ssh нельзя сделать авторизацию только по ключу.
DaemonGloom
Можно, параметр always-allow-password-login (https://wiki.mikrotik.com/wiki/Manual:IP/SSH).
hav0k
Я делал кажись именно так, но он все равно просил пароль если ключа нет, хоть и пароль уже не принимал. Мне не много не понравилось это поведение.
slonopotamus
Это какой-то фундаментальный закон природы? Что мне помешает так сделать?
MarvinD
Если кому нужен winbox снаружи, то уж лучше VPN сделать и доступ к winbox только через него. Имхо, ssh не всем может заменить winbox.
paxlo
С трудом представляются случаи, когда мышковозенье в управлении роутером может быть лучше чем SSH. Грепать GUI нельзя, скриптинг нельзя, работать с сотнями устройств через какой-нибудь ansible или на крайняк pssh нельзя. Да есть какой-то костыль The Dude, но он ни с чем кроме микроты не работает, а хочется универсальности. Да и вообще протокол проприетарный и что там у него внутри непонятно. И уже не первый раз его рекомендуют отключать из-за проблем с безопасностью. Ну и нафиг он нужен такой несовместимый и непонятный. К томуже Winbox это всего лишь враппер над ssh по сути.
MarvinD
Лучше мышкой или хуже — дело субъективное, зависящее от задачи, регулярности работы с устройствами (не всем нужно работать с сотнями, скриптить и т.п.). Это дело привычки и времени. Можно отключить, а можно ограничить доступ, вы же не браузер из winbox запускаете, здесь нет таких угроз, как при пользовании IE с контроллера домена Windows ;)
paxlo
То что у вас нет навыков работы с консолью, совершенно не значит что вы сможете повторить все это мышкой, даже имея дофига времени и «опыта». Кому-то пешком ходить привычнее. Но добраться до места быстрее всего на машине/метро. И как бы вы ни были «привычны» и «опытны» к хождению пешком, эффективнее чем на машине у вас не получится.
Насчет субъективности. Функциональность вполне объективна. И ее можно и нужно сравнивать. Я вам привел пункты по которым winbox мягко говоря всасывает. Жду от вас описания преимуществ winbox по сравнению с cli.
По угрозам — ограничение доступа не обсуждается, это must have, но дыры в протоколе это не закроет.
В IT вообще нечего делать без навыков работы с консолью.
MarvinD
Что касается меня, да, мне в Winbox удобнее, я настраиваю не так часто микротики. И чаще хвосты подметаю, winbox нагляднее. Хотя «export file» просто прекрасен и часто выручает, когда все-в-одном-файле. И в Windows удобнее графический интерфейс. А в Linux серверах мне графика не нужна, но я не говорю никому, что графика — отстой.
paxlo
Конкретно по микротику: гуйня разнесенная по сотням разных разделов, вкладок, селекторов, выпадашек и кнопочек, по определению не может быть нагляднее чем полотно конфига /exp t. Который к тому-же упорядочен по разделам.
Про Windows и графический интерфейс вы расскажите создателям PowerShell, которые настолько устали от мышковозенья на своих серверах, что начали делать свою замену bash, чтобы выполнять нужные настройки единственным нажатием запуска скрипта.
hokum13
Иногда нужно перейти в соседний подъезд или дом, в пределах квартала. Можно конечно и через метро, но пешком удобнее. Так и с winbox. Настроить весь зоопарк удобнее через ssh, а выполнить какую-нибудь редкую команду — winbox.
Опять же не все сидят на linux и/или постоянно настраивают 100500 микротиков. Иногда люди работают (и даже не работают, а играют!) на windows, а на роутере настраивают только пароль для wifi. В этом случае winbox и даже web гораздо удобнее.
paxlo
То что работает для 100500 микротиков прекрасно работает и для одного. Редкая команда отлично выполняется через ssh. Причем, даже в разы быстрее чем через WinBox, если настроить авторизацию по ключам (а это best practices) ибо никакие логины пароли вводить не нужно. Вопрос всегда в развитии. Развиваясь, каждый ищет способ сэкономить самый ценный ресурс — время, даже на выполнение рутинной или даже редкой работы. Тут важно насколько человек ленив/туп, чтобы освоить что-то новое, малопонятно, пугающее сложностью.
maverickcy
Все таки, winbox намного быстрее, чем консоль. И удобнее. И проще.
Rivera
Во многом wb нагляднее и быстрее, согласен. Но некоторые действия, к примеру, управление 1000+ вланами, бриджами и интерфейсами туннелей даются винбоксу крайне тормозно. Для таких случаев всегда открываю терминал.
maverickcy
У меня пока нет столько вланов))
paxlo
вряд ли
hokum13
Если Вы уже освоили управление 100500 микротиков — да.
Но что делать, если их у Вас <10 штук и больше ни когда еще не было? Вот прям серьезно нужно осваивать все примудрости тиковской консоли? Виндузятнику нужно осваивать работу с ssh?
Это в linux rsa генерируется за 5 секунд, а в windows это несколько не удобно! И да, копировать ключ в mikrotik одинаково не удобно, как из linux, так и из windows!
Но Вы так и не ответили: к соседу по лестничной площадке на бэхе поедете? Ведь это удобнее, чем пешком ходить!
loki82
Не нужно, но крайне рекомендовано. Но Согласен, когда у тебя 1000 VLAN у одного клиента, может и надо скриптами и SSH. А когда у тебя 100 клиентов? И каждый со своими настройками? Да еще и каждый из имеет 3-4 Mikrotik из разных линеек?
paxlo
Человеку, который возомнил себя админом и собирается админить что-то большее чем 1 хост, нужно освоить консоль и средства автоматизации или валить из профессии, пока ссаными тряпками не закидали. Ибо консольный интерфейс и SSH в частности это железобетонный стандарт работающий еще с доGIU времен. И навык с ним должен быть иначе стыдно и приходиться придумывать глупости по GUI как «нашевсё». И ваше счастье что в микротике есть gui, и то не дай вам бох попадется коммутатор/роутер других известных и более крутых фирм, в которых голая консоль и ничего больше.
Там нет прЕмудростей. Все команды автодополняются по табу (одиночному Карл, даже не двойному как в линуксах), или вообще включаете режим автодополнения (Ctrl+V) и RouterOS сама будет за вас дополнять команды и параметры. Есть ? — выдающий справку по всему. Или ещё круче — сокращения, которые не ребуют полные названия команд, например:Насчет соседа: в моей аналогии, если до всех объектов включая соседа, другой конец города, другие города, есть удобная, качественная и прямая трасса ведущая прямо от дивана до места назначения, то естественно быстрее добраться на транспорте (SSH). А в вашей логике раз вам до соседа удобно дойти пешком (WinBox), то значит это вообще самый удобный способ перемещения, раз вы не осилили сдать на права или купить билет на сапсан.
SSH это инструмент вообще никак не коррелирующий с использованием ОС. Для всех ОС есть соответствующие клиенты ssh, которые неплохо было бы изучить.
вместо
Я повторюсь, на низком уровне, WinBox это враппер над ssh. При нажатии на соответствующие кнопки мышкой он по сути исполняет те же ssh команды. Вы попробуйте. Изучить что-то новое это всегда полезно.
Вранье. puttygen. Пара кликов вашей любимой мышкой и ключик готов. Время генерации зависит от длины ключа.
Опять вранье. pscp ./file mikrotik:. Или WinSCP для вашей любимой мышки.
Вообще не редкость наблюдать как адепты мифа о GUI как о якобы быстрой и удобной штуке, догло, муторно и с повторами водят мышкой в поисках нужно опции и не находят ее. В то время как с консоли тоже самое выполняется в разы быстрее за счет автодополнения табом и сокращений.
hokum13
Повторюсь! По лестничной клетке! До него по ней идти 4 шага! А Вы опять меняете среду, под инструмент.
Для всех видов транспорта есть соответствующие права, которые неплохо было бы получить,… но зачем?
А еще можно писать прямо в машинных кодах, и исполняется быстрее, и места меньше занимает… Только вот совершенно не читаемо. В отрыве от контекста вот это вот "/sy p up ch" — полная абракадабра!
В linux мне достаточно ввести:
, а в windows для начала нужно этот самый putty скачать, да еще и чтобы вместе с ним всякие допы прилетели, а не только сам голый putty. А потом еще «долго, муторно и с повторами водить мышкой в поисках нужной опции»…
Или
последнее, как мне кажется проще. Ну и скопированый на тик ключ нужно еще в учетку импортировать. Хотя и согласен, что по сертификату в ssh ходить правильнее и удобнее.
Они долго ищут мышкой не потому что GUI не удобный, а потому что не знают что искать! Отсутсвие знаний интерфейсом не исправишь!
Хотя могут быть исключения: в 2012-м (сейчас не знаю, не пользуюсь) в тиковский hotspot (непосредственно в сам генератор паролей) можно было попасть только через web или через ssh, но ни как не через winbox.
Вообще это чистокровный holyWar. Он не имеет вообще ни какого отношения к удобству, а лишь к принадлежности к адептам TUI/GUI. При этом разработчики routerOS поддерживают оба инструмента, за что им огромное спасибо.
paxlo
Вам уже даны универсальные права на все виды транспорта включая телепорт, но вы продолжаете ходить везде пешком тратя время.
Демагогический прием под названием «ложная альтернатива». Утрирование до крайности. Используется когда аргументов не осталось.
Сначала вы утверждаете что вам мышкой всё проще а потом сами же начинаете топить за консоль. Определитесь.
hokum13
Вот только у меня дома нет телепорта. Гипотетически конечно я когда-нибудь, может быть его поставлю, но сейчас у меня его нет. И места под него нет. И желания особого ставить его нет. И денег на его покупку тоже нет. А до двери 4 шага. Думаете стоит заморачиваться с телепортом или прямо сейчас сходить за солью к соседу?
Зачем? В linux проще работать в shell, в windows GUI. Сотню mikrotik проще настроить скриптом через ssh, а домашний уж извините я настраиваю через winbox. Разные ситуации — разные инструменты. Я, как мне кажется, уже перерос тот возраст, когда ты людей делишь на своих и чужих (яблочники/андройдофилы/олды, линуксойды/виндузятники/яблочники/etc, интел/амд/извращенцы...), а инструменты на «те, которые знаю и неправильные».
MarvinD
Тому, кто админит что-то, нужны инструменты для работы с этим что-то. Если в хозяйстве 2-10 микротиков, к которым обращаются 1-2 раза в 6 месяцев, то зачем тратить свое время на то, чтобы привыкать к консоли? Консоль/терминал/winbox (не важно) — это инструмент. Надо выполнять поставленные задачи. Как-то давно мне пришлось настраивать Catalyst, 2950 вроде, давно уже. Ну да, там консоль, ну да, изучил команды, настроил и через пол-года зыбал команды, потому как разово работал с оборудованием. Был бы gui, не копался бы терминале.
paxlo
Как я уже писал выше, если у вас более чем 1 устройство и вы продолжаете делать однотипные действия ручками на каждом, да еще и мышкой, то вы уже убиваете свое время.
У каждого инструмента есть показатель эффективности. Главные параметры эффективности — время выполнения и функциональность. WinBox проигрывает по обеим пунктам.Соглашусь, что каждый как хочет так и др… т, но я лучше освобожу время и уйду пораньше с работы за счет более эффективных методов работы.
Sonic55rus
Испытываю острое желание прочитать статью о микротах от гуру TUI.
Сам-то я водитель маршрутки и не разу не админ, но уж больно хорошо вы себя рекламируете, молодой пчеловек — захотелось поставить домой 120 микротов цепочкой и настраивать их каждое утро.
Научите, поделитесь мудростью адепта железобетонного стандарта Эпохи ДоГуёвья, молю!
IndiraGandhi
вы упускаете ключевой момент — с некоторых пор микротик выпускает оборудование и для дома тоже. и вот как раз домашним пользователям совсем не с руки использовать ssh.
тем более, свои тонкости там имеются. Насколько я помню, там не работают команды ls, cd, top итд.
и домашнему пользователю все-таки проще потратить 15-20 минут, настроив все один раз через гуй, чем потратить несколько часов на изучение микротивского терминала, только ради того, чтобы забыть это через два дня, т.к. роутер уже настроен и применять знания негде.
MarvinD
Кстати, здорово бы было, если бы при исполнении команды в Winbox, она где-либо дублировалась в терминальном варианте, как будто ее из сессии ssh выполнили. Было бы супер полезно.
paxlo
Всё в ваших руках. Пишете фичреквест в микротик.
squabbler
А можно настроить Port knocking
Chupakabra303
Я кроме Port knocking еще список разрешенных ip держу, которые резолвятся из ddns имен. У меня получается как бы приватная сеть доступа к маршрутизаторам, и все имеют ddns имена (я не использую статические ip как правило). И можно находясь за любым из этих маршрутизаторов подключать winbox к любому другому.
Но, если удаленная машина за NAT провайдера, то разрешенный ip — будет целым ip nat провайдера со множеством других клиентов. Но меня такой уровень надежности устраивает, т.к. у меня за nat только 1 маршрутизатор.
MarvinD
Но бывают трудные случаи. Недавно заказчик настоял на открытии winbox наружу, хотя я до последнего упирался. Сейчас и pptp много где используется. Хорошо хоть провы этот траф часто блочат и народ порой вынужден соглашаться на ipsec или ovpn :)
Mur81
L2TP/IPsec же.
Достаточно легко настраивается на самом Микротике. Особенно если не вдаваться в настройки шифрования и использовать дефолтные, то вообще элементарно.
Со стороны клиента есть поддержка из коробки в Windows, Android, iOS, Mac OS — точно. Кажется есть (но это не точно) в Chrome OS. Вот насчёт Линукса не знаю (не специалист). В Ubuntu кажется надо что-то руками доставить.
PPTP давно признан не надёжным в и той же iOS выпилен уже несколько лет назад.
А открывать что-то наружу без VPN это такое себе я считаю.
IgorPie
Ovpn тоже блочат только в путь, считая его udp пакеты торрентами
MarvinD
В микротике он tcp, о udp уже не мечтаем, и давно.
nApoBo3
В 7 udp добавили.
MarvinD
Дорогой мой человек! В который раз убеждаюсь, что в комментариях на хабре пользы часто больше, чем в статье! Хоть и бета еще 7-ка, но beta != null.
lamer84
Уже 7 есть?! Ну наконец-то, разродились! Пусть бета, но круто же!
Mur81
Всё что нужно знать о защите от этой уязвимости это то, что вчера вышла ROS 6.45.7 где среди прочего:
!) package — accept only packages with original filenames (CVE-2019-3976);
!) package — improved package signature verification (CVE-2019-3977);
!) security — fixed improper handling of DNS responses (CVE-2019-3978, CVE-2019-3979);
PS И да, открыл напрямую WinBox наружу — жди что тебя поимеют.
PPS При этом конечно надо понимать, что и внутренняя сеть не всегда 100% доверенная.
zlo1
тысячи устройств «изнасилованных» более года назад, продолжают «радовать» публичными проксями (socks4 на порту 4145)
DrMefistO
Переводить переменные в питоне на русские — сильно!
LukaSafonov Автор
My bad, fixed :)
Mur81
Ни номеров CVE, ни информации о том, что уязвимость закрыта, ни нормального совета по защите.
И я уже молчу, что на КДПВ изображён роутер TP-Link.
GuessWho
CVE-2019-3978, CVE-2019-3979 как я понял, в 6.45.7 закрыли
Mur81
Там целая комбинация из 4-х уязвимостей. Отравление кеша и обход проверки подписи пакетов (либо вообще её там не было — проверки).
См. мой вчерашний комент.
justhabrauser
"!) security — fixed improper handling of DNS responses (CVE-2019-3978, CVE-2019-3979);"
Уже исправлено.
А шуму-то, шуму… Хайп — наше всё? :-)
slashd
А каким образом происходит отравление DNS-кэша?
Chupaka
Делается запрос имени у подставного сервера, потом поддельный ответ кэшируется на роутере.
Chupakabra303
Где это запрос делается? На сторонней машине или в консоле mikrotik?
Я так понимаю это только при отключеной опции remote requests происходит.
Chupaka
Запрос делается на самом роутере через открытый порт WinBox без аутентификации, опция Allow remote requests ни на что не влияет.
Chupakabra303
Не совсем понял. Это выполняется часть api протокола связи между ПК и Winbox, не требующая аутентификации? Вот winbox_dns_request — это что вообще такое?
Mur81
Как я понял — winbox_dns_request какая-то штука, которая позволяла резолвнуть домен указав при этом DNS-сервер через который резолвить. И именно извне (а не с консоли устройства) через порт винбокса и не проходя авторизацию. И даже при выключенных внешних DNS запросах.
Как это работает хорошо видно на видео.
Номера CVE известны. Если нужны подробности можно почитать описание.
Baralgin380
Т.е. если у меня в конфиге сервисов на винбокс повешены трастед нетворкс, то мне такое не грозит?
Mur81
Лучше это всё же делать файрволом, а не через available from в сервисах.
И даже если у нас WinBox не торчит наружу, то надо понимать, что внутренняя сеть тоже не всегда доверенная. А в более общем смысле у нас может вообще не быть «внешних» и «внутренних» сетей. Поэтому уповать на какую-то доверенность не стоит.
А вообще набор уязвимостей, используемый в этой атаке, уже закрыт в последней прошивке. Всегда обновляйтесь и будем вам счастье. Загрузчик кстати тоже не забывайте обновлять при этом.
Baralgin380
так и есть — стоит ссr-1036 и по сути там нет внутренней и внешней сети, да и во внутренней «кулибиных» хватает. А почему лучше фаерволом, а не в сервисах?
Mur81
Я вот прям железные аргументы не приведу. Вообще про это говорили на обучении, а вот чем мотивировали как-то подзабыл.
Но от себя могу сказать так:
Во-первых так советует сам MikroTik («As usual, we recommend to protect your router administration interface with VPN and firewall.»).
Во-вторых иметь всю конфигурацию в одном месте (т.е. в файрволе) это банально удобнее. Так файрвол открыл и всё перед глазами. А если в сервисах ограничение настроил, то скажем про это можно банально забыть. И если потом что-то поменяется, то может получится неприятный сюрприз.
В-третьих firewall filter банально раньше по traffic flow. Зачем нам не нужный трафик пускать дальше по цепочке аж до локальных процессов?
zuek
Например, недавно здесь была статья, в которой упоминалось, что некоторые роутеры настроены отвечать на некоторые запросы только в "домашнююю" сеть… но для IPv6 такое ограничение для сервисов прописать забыли, и они бодро отвечают на внешнем интерфейсе. Думаю, можно придумать и иные сценарии...
DaemonGloom
С надеждами на файрволл надо быть аккуратнее, потому что он работает на L3, а winbox-mac живёт уровнем ниже. У микротика уже были моменты, когда часть вещей не блокировалась файрволлом, поскольку обрабатывалась до него (dhcp точно работал|работает так).
Mur81
Это да. Но в данном случае available from address всё равно ведь на L3 работает.
Chupaka
Да, Trusted Networks обрывают соединение сразу же, запросы делать нельзя, поэтому обсуждаемый эксплойт не сработает.
FpcFrag
Обычно отравление хеша не требует запроса, достаточно просто прислать ответ на запрос (даже при отсутствии запроса) и не всегда даже надо соблюсти правильный IP отправителя ответа.
В редких случаях, когда алгоритм умеет проверять наличие запроса и соответствие характеристик при обработке ответа (реализации можно пересчитать по пальцам одной руки электрика), злоумышленникам приходится постоянно бомбить ответами в надежде что когда-нибудь произойдёт запрос и их ответ придёт раньше чем легитимный.
Как от этого уберечься?
Использовать (где это возможно) TCP транспорт для DNS запросов идущих по публичным и прочим не доверенным сетям. UDP при этом просто запрещать на уровне МСЭ.
Сейчас модно делать всякие DoH и DoT, они тоже от этого защищают, но там угрозы иного типа: вы полностью отдаёте паттерн своего поведения не очень чистоплотным провайдерам (как и в случае прописывания всех 4-х восьмёрок или единиц).
sigmatik
Тот самый случай когда заголовок поста об уязвимости громче самой уязвимости. Любой адекватный админ никогда не станет выставлять встроенный dns север за пределы локальной сети. И уж тем более он не станет светить винбокс. Так что вместо рекомендации перейти на ssh имхо можно было посоветовать просто дождаться исправления и обновиться…
Luxo
Оо, а вот и мой шанс вернуть под своё управление «потерянный» из-за предыдущей уязвимости роутер без физического сброса до заводских установок.
Кстати, вот подумал. В настройках микротика по-моему есть галочка, которая может не позволить его сбросить даже при физическом доступе. Бяда.
mikeus
У меня было сделано давно, что уже забыл, и сейчас по случаю этой заметки (спасибо, Лука) пришлось освежить следующие моменты: для того чтобы убрать доступ по MAC-Telnet и MAC-Winbox с WAN-интерфейсов необходимо удалить (или сделать disable) соответствующие интерфейсы из списков
mactel
иmac-winbox
— путь к команде:/interface list member
. Также можно ограничить IP-префиксы с которых доступны различные сервисные службы Микротика — путь к команде:/ip service
.shUUm
What's new in 6.45.7 (2019-Oct-24 08:44):
MAJOR CHANGES IN v6.45.7:
— !) lora — added support for LoRaWAN low-power wide-area network technology for MIPSBE, MMIPS and ARM;
!) package — accept only packages with original filenames (CVE-2019-3976);
!) package — improved package signature verification (CVE-2019-3977);
!) security — fixed improper handling of DNS responses (CVE-2019-3978, CVE-2019-3979);
Sergey-S-Kovalev
Я вот смотрю видосы с эксплуатацией уязвимости и не могу понять, нафига её использовать, если там все заходят под админом через винбокс?
1. Актуальных дыр в винбоксе на текущий момент нет.
2. Открытый доступ в винбокс в инет без минимальной фильтрации по ип и/или впн — нормальные человеки не делают.
3. Смешно бояться что оттрекается изменение конфига, те кто делает алерты на изменения конфига всегда контролят и входы на оборудование.
3. Галку раздавать днс без прав админа не поставить, если заходить под readonly учеткой.
4. С клиентской тачки запросами кэш на микротике не отравить.
Вектор атаки только один: имея доступ к вышестоящему днс серверу для уязвимого микротика — там подменять ип сервера обновлений, что типа «отравит» кэш днс и свято верить что на микротике произойдет автоапгрейд пакетов, что не делается по умолчанию.
По факту уязвимость только в том, что не проводится корректная проверка подписи пакетов.
Чего то многовато ЕСЛИ что бы выполнить атаку и сделать downgrade, что бы захватить доступ.
Чего хайпим то? Или я упустил чтото?
Mur81
Упустил, и много чего. Выше в коментах всё написано. Если сильно вкратце — достаточно доступа к порту WinBox, всё.
Уязвимости уже закрыты.
Но в одном Вы совершенно правы — слишком заморочено, что бы стать массовой проблемой. Как раз именно потому, что нужно каком-то образом инициировать обновление пакетов в нужный момент.
Luxo
Насколько я понял, это не совсем так. Отравить кеш может неавторизованный пользователь. А вот провести апгрейд/даунгрейд — только авторизированный.
Mur81
Совершенно верно. В тот момент когда Вы это писали я расширил свой комментарий, добравшись до компа (предыдущий писал по быстрому с мобилы).
Mur81
Тут просто в самом изначальном посте всё смешалось.
На самом-то деле тут сразу несколько уязвимостей было, позволяющих отравить кеш не авторизованному пользователю и позволяющих заливать неподписанные пакеты.
Вектор атаки показанный на видео в жизни конечно маловероятен. Разве что ещё социальную инженерию сюда подключить. Типа «Алло, это сисадмин? Я ваш кеш отравил, накатите плиз свежую прошивочку по быстрому!».
Но и по отдельности эти уязвимости тоже мало приятны.
whiteodmin
Все равно на уязвимость, по сравнению с апрельсой 0day 2018 это меркнет, но если хотябы 1% всех 'горе владельцев' уберут эту чертову галочу с allow remote request уже будет отлично.
HiroX
Толи я дурак толи лыжи не едут.
Ок, допустим. Для клиентов сети нехорошо будет, но в целом не смертельно с учетом https и т.д.
Допустим да, сможет обмануть контроль версий микротика, но
С какой стати микротик будет сам «обновляться»? Такого функционала никогда там не было. Чтобы «обновить» прошивку нужно залогиниться и ручками прописать «update» или кликнуть по одноименной кнопке.
loki82
Не помню точно. По моему с 6.43 появился. System — Auto upgrade.
Upd. Оказывает обязательно выполнить или скрипт или команду.
Andrusha
Прямо встроенного выделенной функцией нету, но есть планировщик и скрипты:
/system scheduler
add interval=1d name=autoupdate on-event="/system package update\r\
\ncheck-for-updates once\r\
\n:delay 1s;\r\
\n:if ( [get status] = \"New version is available\") do={ install }" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive start-time=04:00:00
/system routerboard settings
set auto-upgrade=yes silent-boot=yes
Но в местах, где нужна работа 24/7, я бы всё-таки вручную обновлял — на случай, если выпустят кривое обновление.
loki82
Так там же можно указать с какого источника брать обнову. Оттестил залил. И все микроты сами растащили все.
AcidVenom
Для обновления бутлодера вы предлагаете дождаться следующей перезагрузки?
q12305
Так можно же не обновляться с кнопки, а скачать прошивку и закинуть на микрот руками