📚 Hub Books: Онлайн-чтение книгРазная литератураВзломать всё. Как сильные мира сего используют уязвимости систем в своих интересах - Брюс Шнайер

Взломать всё. Как сильные мира сего используют уязвимости систем в своих интересах - Брюс Шнайер

Шрифт:

-
+

Интервал:

-
+
1 ... 9 10 11 12 13 14 15 16 17 ... 63
Перейти на страницу:
заключаться прежде всего в защите системы от дальнейших хакерских атак.

И, наконец, еще об одном способе защиты – поиске уязвимостей до того, как они будут использованы злоумышленником.

Атака «красной команды»[9] – это не что иное, как взлом собственных систем. Можно прибегнуть к услугам компаний, которые специализируются на подобном анализе, а можно поставить задачу разработчикам делать это самостоятельно в рамках процесса контроля качества. И в том, и в другом случае «красная команда» рассматривает систему так, как если бы являлась внешним хакером. Обычно такая команда находит массу уязвимостей (в компьютерном мире они есть всегда), которые исправляются до выхода программного обеспечения.

Эта концепция пришла из армейского арсенала. Традиционно «красной командой» на воинских учениях называли подразделение, игравшее роль врага{61}. Сообщество кибербезопасности взяло этот термин, чтобы обозначить группу людей, обученных думать как враг и находить уязвимости в системах. Это более широкое определение было включено в процесс военного планирования и в настоящее время является неотъемлемой частью военного стратегического мышления и проектирования систем. Министерство обороны США, особенно сектор национальной безопасности, уже давно интегрировало «красную тройку» в процесс планирования. Вот что заявил об этом Научный совет по вопросам обороны США:

Мы утверждаем, что «красные команды»{62} сейчас особенно важны для министерства обороны… Агрессивные «красные команды» необходимы для оспаривания новых оперативных концепций, чтобы обнаружить их недостатки прежде, чем это сделает реальный противник.

Если вы не создаете «красную команду», то, чтобы найти уязвимости в своих системах, вам придется полагаться на своих же врагов. Но если уязвимости находит кто-то другой, как вы можете быть уверены, что они будут устранены, а не использованы? В компьютерном мире основным средством противодействия использованию хакерами плодов своих усилий является признание компьютерного взлома преступлением. Если вы хакер и обнаружили новую уязвимость, то можете использовать ее с риском получить тюремный срок. Но вы также можете продать информацию на черном либо на сером рынке.

Противодействующим стимулом являются поощряющие программы, известные как bug bounties, когда компании-разработчики программного обеспечения выплачивают вознаграждение людям, обнаружившим уязвимости в их продуктах. Идея заключается в том, чтобы заинтересовать исследователей сообщать о своих находках в компанию. Bug bounties неплохо справляются со своей задачей, хотя зачастую хакеры могут заработать куда больше, толкая информацию об уязвимостях преступникам или производителям кибероружия.

В любом случае чем больше вы знаете о системе, тем легче находить новые уязвимости, особенно если у вас имеется доступ к человекочитаемому исходному коду, а не только к объектному коду, читаемому машиной. Точно так же легче найти уязвимости в своде правил, если у вас есть копия самого свода правил, а не только информация о постановлениях на его основе.

13

Устранение потенциальных хаков на этапе проектирования систем

Автозапуск – функция, впервые появившаяся в Windows 95. До этого момента вы покупали программное обеспечение на компакт-диске, а затем вручную запускали сценарий установки на своем компьютере. С автозапуском вы могли просто вставить диск в дисковод, и система автоматически находила и запускала сценарий установки. Это значительно упрощало установку программного обеспечения для среднего, технически неграмотного пользователя.

К сожалению, функция автозапуска также использовалась вирусописателями для установки в системы вредоносных программ. Вирус размещался на безобидном компакт-диске или, в более поздние годы, на флешке и автоматически запускался, как только ничего не подозревающий пользователь вставлял его в компьютер. Вот откуда ведет свою историю всем известное предупреждение о небезопасности подключения случайных USB-накопителей к компьютеру.

Обратите внимание, что в данном случае уязвимость не является следствием ошибки. Это была попытка найти баланс между безопасностью и удобством использования. Найденный компромисс, возможно, и выглядел разумным в 1995 г., чего нельзя было сказать о нем десятилетие спустя. Cообщения о системных ошибках, вызванных автозапуском, стали множиться как грибы после дождя, и в 2011 г. Microsoft наконец-то перепроектировала систему для Windows Vista, отключив функцию автозапуска для флешек, сетевых дисков и прочих носителей, оставив ее только для таких вымирающих мастодонтов, как DVD-диски.

Проблема заключается в том, что невозможно создать идеальную защиту от хакеров на этапе проектирования, поскольку, во-первых, безопасность – это лишь одно из свойств, которые должны быть оптимизированы при разработке системы, а во-вторых, методы, которые используют хакеры, их цели и мотивы постоянно меняются по мере развития общества и технологий. Проектировщикам необходимо пересмотреть свои основные подходы к организации и запуску систем. Хороший дизайн системы со временем теряет свои преимущества, и хакеры всегда найдут способы использовать его в своих целях.

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

Впрочем, сказать намного легче, чем сделать. В сложноорганизованном компьютерном коде невозможно найти все скрытые лазейки. Простые смертные не могут создать программное обеспечение без ошибок и уязвимостей. У нас до сих пор нет теории проектирования безопасного программного обеспечения, не говоря уже о методологии такого процесса. Но главная причина, по которой мы не повышаем качество в этой сфере, заключается в том, что писать безопасный и надежный код – трудно, медленно и дорого, а значит, как правило, для этого нет экономического стимула. За такими редкими исключениями, как электронные системы самолетов и космических кораблей, большая часть программного обеспечения пишется в спешке и кое-как. Но базовые принципы проектирования, которые минимизируют количество уязвимостей и возможности их использования, у нас все-таки есть.

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

Глубокая защита. Основная идея этого подхода заключается в том, что одна уязвимость не должна разрушать всю систему. В компьютерных системах это чаще всего реализуется методом многофакторной аутентификации, когда кроме имени пользователя и пароля, являющихся единой точкой отказа[10], используют несколько методов аутентификации. К примеру, моя электронная почта дополнительно защищена Google Authenticator. Это приложение привязано к моему смартфону, который всегда со мной. Чтобы получить доступ к своей учетной записи, мне нужно разблокировать телефон, открыть приложение и ввести сгенерированный им код. Другие многофакторные системы могут включать биометрию, например отпечаток пальца, или небольшое USB-устройство, подключаемое к компьютеру.

Для некомпьютерных систем глубокая защита – это все, что не позволяет какой-то одной уязвимости стать причиной успешного взлома системы. Это может быть засов на двери в дополнение к основному замку, двойной забор с колючей проволокой вокруг военной базы или требование, чтобы финансовые операции на определенную сумму утверждались двумя людьми. Хак, преодолевающий один из этих барьеров, вряд ли сможет преодолеть и другой.

Компартментализация (изоляция / разделение обязанностей). Умные террористические организации разделяют себя на ячейки. Каждая ячейка имеет ограниченное представление об остальных, поэтому если одна из них скомпрометирована, то другие остаются в безопасности. Это и есть компартментализация, которая ограничивает последствия любой конкретной атаки. Эта же идея лежит в основе того, что в одной организации ключи от всех кабинетов разные, а у каждой учетной записи – свой пароль. Такой подход еще называют принципом наименьших привилегий, когда человеку или подразделению предоставляется только тот уровень доступа, который необходим для выполнения работы. Именно благодаря этому принципу у вас нет главного ключа от всех кабинетов в здании, где вы работаете, ведь у вас нет в нем производственной необходимости.

В компьютерных сетях такой подход называется сегментацией. Он подразумевает разделение сети на части, подобные террористическим ячейкам, чтобы хакерская атака

1 ... 9 10 11 12 13 14 15 16 17 ... 63
Перейти на страницу:

Комментарии

Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!

Никто еще не прокомментировал. Хотите быть первым, кто выскажется?