Кибергейт: Как выжить в мире умных вещей - страница 17

Шрифт
Интервал


Некоторые ошибки (баги) в ПО, безусловно, – уязвимости в системе безопасности, чем не преминут воспользоваться атакующие. Например, ошибка переполнения буфера позволяет злоумышленнику захватить контроль над компьютером и принудить его выполнять произвольные команды{69}. И таких багов множество. Точное количество не поддается исчислению. Мы не знаем, сколько ошибок следует рассматривать в качестве уязвимостей и сколько уязвимостей можно потенциально использовать{70}. На эту тему ведется самый настоящий диспут. Я твердо уверен, что большие программные системы содержат тысячи уязвимостей, а для взлома достаточно всего одной. Иногда ее просто найти, иногда – нет.

И хотя уязвимостей много, нельзя сказать, что они равномерно распределены по программе. Есть такие, которые выявить легко, и такие, которые выявить трудно. Инструменты, автоматически обнаруживающие и устраняющие или исправляющие целые классы уязвимостей, существенно повышают безопасность ПО. Очевидно, что, если кто-то выявил уязвимость, велика вероятность, что вскоре ее обнаружит (или уже обнаружил) другой. Heartbleed – большая брешь в безопасности интернета. Эту ошибку упускали из виду целых два года{71}, зато открыли с разницей в несколько дней два исследователя, действующих независимо друг от друга. Уязвимости Spectre и Meltdown в компьютерных чипах существовали по меньшей мере лет десять, пока в 2017 г. их не обнаружили сразу несколько человек{72}. Я не нахожу объяснения этому феномену, поэтому ограничимся констатацией того факта, что параллельное обнаружение уязвимостей – это реальность. К этому вопросу мы вернемся в главе 9, когда будем говорить о правительствах, накапливающих программные уязвимости с целью шпионажа и создания кибероружия.

Взрывное увеличение числа устройств, взаимодействующих с интернетом вещей, означает, что количество программ, строк кодов, а значит, ошибок и уязвимостей станет расти в геометрической прогрессии. Сохранение же дешевизны умных вещей – это привлечение к их созданию малоквалифицированных программистов, плохая отладка процесса разработки ПО и частое повторное использование кодов, то есть в случае широкого распространения уязвимости вред от нее будет огромным{73}.

Чтобы обезопасить устройства, которые мы используем в повседневной жизни (компьютеры, телефоны, автомобили, медицинские приборы, системы управления домом), от вторжения хакеров, недостаточно находить и устранять уязвимости в ПО. Нужно подходить к процессу создания ПО с совершенно других позиций. За этим будущее системы безопасности.