Comments 40
Продукты претендующие на защиту периметра сети и вот такой банальный логин с паролем открытым текстом? Zyxel — это позор какой то!
Интересно, как такие дыры образуются? "А, ладно, потом уберём, главное не забыть!.. Упс..."?
Интересно, как такие дыры образуются?Товарищ майор пароль «PrOw!aN_fXp». Только отключите паяльник.
Вероятно специальные люди в штатском приходят к ним и просят во имя добра, демократии, борьбы с терроризмом и защиты детей, вставить пачку бакдоров. Ну один нашли, ок, а сколько их осталось и сколько добавилось в новой прошивке? Где-то так тупо зашит логин с паролем, где-то специально допущена уязвимость, где-то генератор случайных чисел, оказывается вовсе не случайным.
Возможно, просто не нашли время на рефакторинг и архитектуру. Даже на хабре можно найти аргументы за то, что "не надо тратить деньги бизнеса на свой идеальный код". В некоторых случаях это блоее осмысленно, в некоторых менее.
Чаще всего ведь разработчику хочется все разрабатывать и тестировать максимально локально, так как Staging лежит в половине случаев. А потому пишутся подобные dev backdoor, просто чтобы иметь возможность подменить ту же самую авторизацию, или чтобы ускорить обновление прошивки у локального стенда (который, по сути, является аналогом будущего устройства).
А дальше по-хорошему такие вещи должны вычищаться. Я не скажу за embedded разработку, но вот что я видел в некоторых проектах:
- В нашем проекте на .Net парсер командной строки содержал дополнительные опции (такие как "не ходить к серверу авторизации, а просто считать себя x"), которые добавлялись только с директивой DEBUG. То есть в релизной сборке этих аргументов просто не было.
- Мой коллега в своем проекте сделал дополнительный тест, который проверял, что в релизной сборке нет классов с определенным именем (например, которые подходят под выражение ".Mock."). Так что если кто-то забыл спрятать подменные внутренние сервисы, то билд упадет
- В Gradle можно выделить все такие классы/методы в отдельный проект, а потом использовать development dependency layer, так что backdoor не просочится в релизный образ.
Интересно, как такие дыры образуются? «А, ладно, потом уберём, главное не забыть!.. Упс...»?
Ровно так же как и дыры в ваших проектах.
Все эти вещи делают не полубоги-полупрограммисты, а обычные люди такие же люди как вы и я.
Страшно подумать от какого программного кода зависит поведение самолета…
такие вещи должны отсекаться на ревью кода: любые настройки/креды ДОЛЖНЫ браться из внешнего хранилища, а не быть захардкожены. даже если это наколеночный проект. делается это за несколько минут, так что принципиально на сложность проекта — не влияет.
а поведение самолета проходит тестирование на симуляторе, который очень близок к реальности. бывают косяки — тогда выплачивают страховку и улучшают симулятор.
такие вещи должны отсекаться на ревью кода: любые настройки/креды ДОЛЖНЫ браться из внешнего хранилища, а не быть захардкожены.
Сама описанная в статье проблема — да это косяк разработчиков.
Но насчет «всегда ДОЛЖНО быть так» разрешите с вами не согласиться. Ибо это глупость несусветная.
В смысле всегда — это глупость.
Впрочем, эту глупость вполне разумно считать за истину на каких-то этапах профессионального развития. Это нормально:
- Чем отличается джун — он еще не знает, что должно быть и делает всякие глупости. Но опытный джун уже пытается найти правила как должно быть всегда. Найдя эти правила джун становится мидлом.
- Чем отличается мидл — он думает, что все должно быть именно так всегда. Впрочем, опытный мидл уже начинает подозревать, что, всё же не всегда.
- Чем отличается сеньор — он по конкретной задаче решает как должно быть. И бывает, что решение сеньора прямо противоположено тому, что принято за истину начинающими программистами.
ATP — Advanced Threat Protection
USG — Unified Security Gateway
Видно, что старались — придумали нестандартный логин и вполне надёжный пароль.
Возможно, этот пароль у них прописан в продукции ещё с тех пор, когда 11 символов хватало всем.
Но всё это конечно мелочи по сравнению с самим фактом вот такой вот явной лажи с зашитым техаккаунтом. Уж казалось бы, сколько раз разные вендоры понесли ощутимый репутационный и финансовый ущерб из-за применения таких практик.
Но нет, «У нас-то security through optimism and prayer обязательно сработает!»
И оформили это не как дополнительный аккаунт с солью и хешем, а именно как backdoor с plaintext паролем. Фу такими быть.
Прошивка раздается с прошлого года с декабря.
Пароль только что вошел в паблик.
В общем кто галочку не поставил на автообновление — тот сам злобный буратино.
PS в микротиках галочка авто обновления вообще нет, только скрибтами или ручками
В общем кто галочку не поставил на автообновление — тот сам злобный буратино.
автообновление — это зло. Меняешь старые баги и бекдоры на новые, да еще и непредсказуемым образом. Ну, уж нет — спасибо, я уж лучше буду обновлять в строго регламентированные окна, с предварительным тестом обновы на тестовой железке (а вдруг обнова что-то сломает)?
Как раз вот эта дыра пришла с последним обновлением:
I checked the previous firmware version (4.39) and although the user was present, it did not have a password. It seemed the vulnerability had been introduced in the latest firmware version.
А так забавно конечно
Никогда такого не было и вот опять :-)
Кто дивится на зухель видимо не помнит какие уязвимости были в сиськах, и через чьи корпоративные сети мы когда-то ходили в этот ваш тырьнет, хе-хе-хе.
Кстати, чуть не пропустил — с сетевыми хранилищами Zyxel так же фигня:
https://m.habr.com/ru/news/t/489894/comments/
На сегодняшний день патчи готовы только для ATP, USG, USG Flex и VPN. Согласно официальному сообщению Zyxel, серия NXC получит обновление в апреле 2021 года.В апреле? Они там что, исходные коды потеряли и теперь прошивку будут с нуля переписывать?
Я не сказал бы, что это прямо вот необходимо, но было бы определённо полезно и для сообщества, и для имиджа компании.
если бы айти было так же зарегулировано, как, например, авиаперевозки — то пост-мортемы были бы обязательны ) И наша индустрия стала бы гораздо менее толерантной к факапам и качество кода было выше, но в обмен на скорость развития и прогресса )
ФАК: support.zyxel.eu/hc/ru/articles/360018610460
Еще информация и кач безопасной прошивки: support.zyxel.eu/hc/ru/articles/360018524720
ФАК: support.zyxel.eu/hc/ru/articles/360018610460Информация по добавленной вендором уязвимости. Много-премного информации, девать некуда. Вы издеваетесь, да?
То есть я покупаю железку (и сервис тоже) под названием USG (Unified SECURITY Gateway) и получаю
Более 100 тыс. файрволов и VPN-шлюзов Zyxel содержали бэкдор-аккаунт