В пятницу 6 апреля 2018 началась мощная атака на оборудование Cisco.
Много пишут о том, что главная причина, по которой эта атака успешна, это открытые во внешние сети сервисные порты Cisco Smart Install.
Эти порты открыты по умолчанию. А люди в массе своей оставляют то, что сконфигурировано/выбрано/настроено таким, каким оно было по умолчанию. Как видим, на примере этого случая, это касается не только домашних роутеров, но и серьёзного оборудования в крупных компаниях, где цена ошибки значительно выше.
При создании системы вы не имеете права расчитывать на то, что значения по умолчанию, которые следует изменить будут изменены, причём в нужную сторону.
Вы лишь можете заставить изменить эти значения с помощью каких либо ограничивающих использование приёмов. Чему многие будут не рады. «Защита от дурака» это один из примеров этих обязывающих ограничений.
Про выбор по умолчанию
Есть исследование 2003 года «Спасает ли жизни выбор по умолчанию?», в котором есть диаграмма
На русском подробнее.
В ней видно, что число тех, кто готов участвовать в программе донорства органов сильно зависит от того, какой выбор по умолчанию уже сделан в медицинской анкете.
На русском подробнее.
В ней видно, что число тех, кто готов участвовать в программе донорства органов сильно зависит от того, какой выбор по умолчанию уже сделан в медицинской анкете.
Я хочу обратить внимание на корень самой уязвимости. В отчёте есть такая часть:
Переполнение буфера происходит в функции smi_ibc_handle_ibd_init_discovery_msgТ.е. при получении данных из вне не происходит проверки на их корректность.
из-за того, что при копировании данных в буфер фиксированного размера их размер не проверяется. Размер данных и они сами напрямую берутся из сетевого пакета.
Я считаю, что это то главное напоминание, которое нужно сделать в очередной раз.
Программист должен проверять данные, поступающие из вне. Никаким данным, поступившим в систему со стороны пользователя(кто бы и что бы им ни было), нельзя доверять.
P.S. Кстати, эта функция как раз примеров того, что программист просто взял значение по умолчанию, оттуда, где оно есть — из сетевого пакета.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
В вашем программном продукте используется проверка входящих данных?
47% Да, на уровне фреймворка/системы47
53% Да, вручную53
19% Нет, продукт внутренний19
5% Нет, продукт для стороннего использования5
Проголосовали 100 пользователей. Воздержались 53 пользователя.