Шрифт:
Интервал:
Закладка:
Как и любой паразит, подрывая систему хозяина, хак не должен быть чересчур эффективным – ему нужно, чтобы система продолжала существовать. Успешный хакинг банкоматов, хотя и приносит прибыль, полностью зависит от наличия таких банкоматов, которые можно взломать. Если бы какой-то конкретный хак стал слишком успешным, банки просто перестали бы устанавливать подходящие банкоматы. Если бы слишком много людей взломали Club Penguin, чтобы вести беседы, противоречащие концепции безопасности детей, Disney свернула бы эту систему прежде, чем столкнуться с последствиями. Спам уничтожил бы электронную почту, если бы не антиспамовые программы. Слишком эффективный хак может в итоге себя обессмыслить, разрушив базовую систему, от которой зависит.
11
Защита от хаков
Spectre и Meltdown – две аппаратные уязвимости в микропроцессорах Intel и ряда других производителей. Они были обнаружены в 2017 г., а в 2018 г. компании опубликовали эту информацию. По сути, уязвимыми с точки зрения безопасности оказались некоторые оптимизации производительности, принятые на протяжении нескольких лет. Защита осложнялась тем, что уязвимости были аппаратными, а не программными. Для устранения некоторых из них были разработаны программные «заплаты» – патчи (часто со значительными потерями производительности), но далеко не для всех. Заменить уязвимые системы было просто нереально, поскольку чипы, о которых идет речь, установлены примерно в 100 млн компьютеров. И хотя будущие микропроцессоры могут быть спроектированы без уязвимостей, нельзя исправить их на уже установленных задним числом. Возможно, лучшей защитой в данном случае стала сложность использования этих уязвимостей: многие компьютеры были уязвимы, но хакеры не могли этим воспользоваться.
Защититься от взлома бывает непросто. Контрмеры варьируются от внесения исправлений до проектирования новых, безопасных систем. Дальше мы поговорим о каждой из них по очереди.
Я первым признаю, что моя таксономия небрежна. Введение правила, которое лишает законности подсчет карт в блек-джеке, делает эту тактику неэффективной, но только в том случае, если вас поймают. Устраняет ли это уязвимость или просто снижает эффективность хака? Аналогичным образом противоугонная бирка, снабженная капсулой с красителем, портит украденную вещь, снижая эффективность кражи, и одновременно делает эту кражу менее вероятной, лишая вора стимула. Подобные двусмысленности ничуть меня не напрягают. Точность категорий защитных средств волнует меня куда меньше, чем практическое знание о различных средствах защиты от хакеров и хаков.
Первая и наиболее очевидная защита – это устранение уязвимости.
В компьютерном мире основным средством защиты от хаков являются исправления. Технически это несложно – нужно просто обновить компьютерный код, чтобы устранить уязвимость. Нет уязвимости – нет эксплойта; нет эксплойта – нет взлома.
То, насколько хорошо работает исправление, во многом зависит от типа системы. Системы, которые находятся в собственности или контролируются одним субъектом, могут, если захотят (то есть если это имеет для них экономический смысл), быстро устранять обнаруженные уязвимости путем исправления.
Выпуск патча – это только первый этап процесса; далее он должен быть установлен на уязвимые системы. Исторически сложилось так, что между компаниями, выпускающими исправления, и пользователями, устанавливающими их, существует несогласованность. Поставщики программного обеспечения выпускают исправления, а пользователи устанавливают их на свое усмотрение, и часто на это уходят недели или даже месяцы, в течение которых непропатченные системы, конечно же, остаются уязвимыми.
Этот сценарий предполагает, что владелец системы должен иметь возможность не только писать исправления, но и заботиться о том, что система будет быстро исправлена. Если в штате компании достаточно инженеров для написания патчей и при этом существует система обновления, позволяющая оперативно доставлять новое программное обеспечение каждому пользователю, то исправления могут быть очень эффективным методом безопасности. Но это не так, если отсутствует хотя бы одно из двух условий… (Помните о множестве устройств IoT, код которых находится в прошивке и не может быть исправлен?) То, что на ваш компьютер и телефон постоянно приходят обновления, позволяет им оставаться в безопасности, несмотря на появление новых хаков. Однако, несмотря на свою уязвимость, ваш домашний маршрутизатор редко подвергается исправлениям.
Многие громкие хаки стали возможны из-за непропатченных систем. Китай взломал сервер американского бюро кредитных историй Equifax в 2017 г. через уязвимость в программном обеспечении для создания веб-приложений Apache Struts. Apache исправила уязвимость в марте, но Equifax не смог своевременно обновить свое программное обеспечение и был успешно атакован в мае.
В том же 2017 г. червь WannaCry пробрался в более чем 200 000 компьютеров по всему миру и причинил ущерб на сумму около $4 млрд, причем это коснулось только тех сетей, которые не установили патч для Microsoft Windows.
Все это иллюстрирует главный недостаток патчей: они устанавливаются постфактум. Уязвимость уже существует в системе. Хакеры могут вовсю эксплуатировать ее к моменту установки патча. И даже если это не так, то сам факт исправления кода привлекает внимание к уязвимости и подвергает опасности все аналогичные системы, которые еще не были пропатчены.
Для большинства индивидуальных пользователей компьютеров и мобильных устройств обновления происходят автоматически. Если на вашем компьютере установлена операционная система Windows, то пакет обновлений приходит во второй вторник каждого месяца и может включать исправления более чем 100 уязвимостей. Ваш iPhone выдает все более грозные предупреждения, если вы игнорируете установку обновлений. (Если вы еще не сделали выводов, позвольте сказать прямо: включите функцию автоматического обновления на компьютере и телефоне. Ставьте патчи сразу, как только получите. Всегда.)
Крупные организационные сети вынуждены работать с исправлениями куда медленнее и осторожнее. Поскольку плохой патч может спровоцировать кучу проблем из-за того, как он взаимодействует с другим программным обеспечением, исправления обычно устанавливают обдуманно и методично. Часто это означает, что их устанавливают с опозданием или не устанавливают вовсе. Мы могли бы возложить вину за взлом базы данных на саму Equifax, поскольку она не установила патч для Apache Struts, но дело в том, что патчи этого разработчика славились своими ошибками, несовместимыми с другим программным обеспечением, взаимодействующим со Struts. Многие организации проявляют осторожность, применяя эти исправления.
В случае социальных систем патчи работают иначе. В системах технологических патч блокирует саму возможность взлома. Это, безусловно, относится к программному обеспечению, но касается и других технологических систем. Производитель банкоматов может установить патч на свои машины, и конкретная схема джекпоттинга перестанет работать. Казино при игре в блек-джек может раздавать с шести колод, постоянно тасуя карты. Финансовая биржа может ограничить торговлю десятисекундным интервалом, сделав такой хак, как высокочастотная торговля, нереалистичным. Все это можно сделать лишь потому, что возможности системы строго определены технологией.
С социальными, экономическими или политическими системами, которые не связаны напрямую с компьютерами, все далеко не так просто. Когда мы говорим об «исправлении» налогового кодекса или правил игры, мы имеем в виду изменение законов или правил системы таким образом, чтобы конкретная атака попала в разряд запрещенных. Компьютер по-прежнему можно будет использовать для предсказания вероятных исходов игры в рулетку, и клюшку можно будет изогнуть больше чем на три четверти дюйма (1,9 см), но пойманному нарушителю придется испытать на себе малоприятные последствия своего поступка. Единственное «обновление», которое нужно «установить» в этих случаях, – это обучить персонал и убедиться, что каждый пит-босс в казино и каждый хоккейный арбитр на льду знают новые правила и то, как выявлять мошенников, а пойманных с поличным наказать соответствующим образом. Аналогично, законная стратегия ухода от налогов становится незаконным уклонением от их уплаты и в случае обнаружения преследуется по закону (во всяком случае, так должно быть).
Это указывает на другую проблему: мошенников сложно обнаружить. Вспомните, что рулетка оставалась уязвимой до тех пор, пока систему ставок не изменили таким образом, что хакинг просто перестал
- Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп - Программирование
- Каждому проекту своя методология - Алистэр Коуберн - Программирование
- Психбольница в руках пациентов - Алан Купер - Программирование
- Программирование на Python с нуля - Максим Кононенко - Программирование
- Delphi. Учимся на примерах - Сергей Парижский - Программирование