Для начала рассмотрим различные виды взломов систем, ограничения которых наиболее очевидны. Это создаст хорошую основу для понимания хакинга систем более сложных: политических, социальных, экономических и когнитивных.
Что такое банкомат? Это компьютер с наличными деньгами внутри. Он подключен к банковской сети через интернет (пару десятилетий назад это было обычное телефонное соединение и модем) и работает под управлением операционной системы Windows. Конечно же, его можно взломать.
В 2011 г. австралийский бармен по имени Дэн Сондерс выяснил, как снимать в банкоматах деньги, которых у тебя нет. Как-то поздно вечером, подойдя к банкомату, он неверно ввел сумму для перевода между своими счетами, случайно завысив ее. К удивлению Сондерса, перевод прошел, а банкомат выдал наличные, которых у него не было на счете, причем без регистрации операции системой. Это стало возможным из-за уязвимости в программном обеспечении банкомата, которое регистрировало переводы между счетами, в сочетании с другой уязвимостью – временной задержкой списаний и зачислений, произведенных посредством банкоматов в ночное время. Однако Сондерс ничего об этом не знал. Он обнаружил хак совершенно случайно и просто понял, что может воспроизвести результат.
В течение следующих пяти месяцев Сондерс снял в австралийских долларах сумму, эквивалентную $1,1 млн{28}. Его так и не смогли поймать. В какой-то момент он сам решил прекратить порочную практику: почувствовал себя виноватым, прошел курс терапии, а затем сделал публичное признание. За полгода банк так и не смог понять, где он теряет столько денег.
Давайте на секунду прервемся и поговорим о том, с какого рода деянием мы имеем дело. Кража денег из банка всегда незаконна. Но в этом случае взломана не банковская система, а система банкоматов и специальное программное обеспечение, написанное для них. Сондерс случайно наткнулся на способ использования этих систем, не предусмотренный их создателями. Иначе говоря, системы сами позволили нарушить заложенные в них правила. А это не что иное, как типичный хак.
Эволюция атак на банкоматы и принимаемых банками ответных мер наглядно иллюстрирует гонку вооружений между хакерами и различными институтами безопасности. Более того, здесь прослеживается несколько важных тем, к которым мы будем возвращаться на протяжении всей книги. Во-первых, системы – это не что-то изолированное: они состоят из более мелких подсистем и сами являются частью систем более крупных. Во-вторых, банкоматы – это не только программное обеспечение, но и «железо»: в процессе использования физического объекта под названием «банкомат» задействованы клиенты и удаленная банковская сеть. Хакеры могут атаковать любой из этих аспектов системы.
Первые взломы банкоматов были примитивными, больше похожими на обычный грабеж, чем на хакинг. Преступники заклеивали дверцы диспенсеров для выдачи купюр, а затем открывали их после того, как расстроенный клиент прекращал попытки изъять свои деньги и отлучался. Они делали так, чтобы карта застревала в картоприемнике, а затем вытаскивали ее и использовали. Они выкорчевывали банкоматы из стен и увозили, чтобы открыть в безопасном месте, – в точности как это показано в телесериале «Во все тяжкие». Службы безопасности реагировали. Из конструкции диспенсеров банкоматов убрали дверки, поэтому заклеивать стало нечего. Сами аппараты стали более надежно крепить к стене, а частота их пополнения наличными возросла, чтобы уменьшить потенциальный куш. (Самые сметливые злоумышленники стали грабить банкоматы вечером перед длинными праздниками, когда внутри было больше денег.) Современные банкоматы оснащены системами видеонаблюдения, но это не предотвращает подобных атак, разве что помогает впоследствии находить и арестовывать преступников.
Другой тип взлома использует авторитетное воздействие непосредственно на клиента. К примеру, преступник, одетый в костюм или униформу компании, прерывает транзакцию клиента со словами: «Извините, этот банкомат вышел из строя. Воспользуйтесь, пожалуйста, другим». Клиент послушно переходит к соседнему, а злоумышленник остается устанавливать табличку «Не работает». Когда клиент, сделав все необходимое, покидает зону банкоматов, преступник снимает деньги с его счета, завершая прерванную операцию в первом банкомате.
Такие и подобные им кражи привели к ряду изменений в конструкциях банкоматов{29}. Сначала было введено правило, согласно которому операция продолжается лишь до тех пор, пока карта находится в картоприемнике, чтобы никакие люди официального вида не могли закончить ее за клиента. В дальнейшем были внесены коррективы в работу расчетных банковских систем, которые сделали невозможным одновременное проведение нескольких транзакций по одному счету. Однако «авторитетные» взломы на этом не прекратились. Появились более грубые схемы, например такая, распространенная в Индонезии: подставной менеджер в присутствии клиента якобы звонил в офис банка и аннулировал его карту, после чего убеждал ее отдать.
Еще один тип взлома, скимминг, предполагает кражу информации с карты для создания и использования ее дубликата. С годами этот способ стал весьма популярным и изощренным. Каноническая версия скимминга заключается в размещении второго устройства для считывания магнитной полосы над слотом картоприемника таким образом, чтобы клиент невольно предоставлял свою карту шпионскому считывателю. Добавьте к этому скрытую камеру или датчик клавиатуры, и вот в вашем распоряжении имеется PIN-код. В одном из вариантов скимминга предполагается установка в общественном месте, например в торговом центре, отдельно стоящего «банкомата». Выглядит он совсем как настоящий, но все, что может, – это только считывать информацию с магнитного слоя карт, собирать PIN-коды и выводить сообщение «Банкомат не работает», чтобы отогнать оставшихся ни с чем клиентов.
Скимминг использует несколько уязвимостей. Во-первых, клиент не обладает достаточным опытом, чтобы заметить установленный скиммер или отличить поддельный банкомат от настоящего. Во-вторых, карта с магнитной полосой легко дублируется. И в-третьих, систему аутентификации, применяемую в банкоматах, – владение картой и знание PIN-кода, – сложно назвать надежной.
Следующий тип взлома банкоматов называется джекпоттингом{30} и направлен исключительно на программное обеспечение. Его задача – заставить банкомат выплевывать купюры, словно игральный автомат жетоны. При этом не требуется красть ни карту, ни PIN-код. В 2016 г. подобный взлом был организован на Тайване, а затем волной прокатился по Азии, Европе и Центральной Америке, что привело к убыткам в десятки миллионов долларов. Разработчиками были приняты меры, но в 2020 г. европейские хакеры нашли{31} новую уязвимость в программном обеспечении, благодаря чему атаки такого типа продолжаются по всему миру до сих пор.
Джекпоттинг состоит из нескольких этапов. Первый этап – исследование технической стороны вопроса, что предполагает разборку и изучение подержанного банкомата. Сегодня достать такой банкомат не проблема, даже на eBay их продается великое множество. Разобравшись в деталях, хакеры приступают к работе с действующими банкоматами: открывают панель управления, подключаются к USB-порту, загружают вредоносное ПО на компьютер и устанавливают удаленный доступ к банкомату. Провернуть все это помогает переодевание: преступник в форме техника может сделать это, не вызывая подозрений. Затем, подготовив аппарат, преступник уступает место своему сообщнику с большой сумкой, в которую после получения удаленной команды банкомат выплевывает всю наличность.
Нет точных данных о том, сколько денег похищается таким образом, ведь банки не любят предавать огласке подробности такого рода. Но нам известно, что Секретная служба США начала предупреждать{32} финансовые учреждения об угрозе джекпоттинга в 2018 г. То есть спустя восемь лет после того, как в 2010 г. исследователь в области безопасности Барнаби Джек продемонстрировал джекпоттинг{33} на хакерской конференции DEF CON. Его атаки не требовали физического вмешательства в работу банкомата, а базировались на уязвимостях программного обеспечения, которые он мог использовать удаленно.
Ричард Харрис работал в Комиссии по надзору за игорным бизнесом штата Невада, где он проверял новые игральные автоматы перед тем, как их разместят в залах казино. Имея доступ к начинке автоматов, он заменял установленные производителем чипы на свои собственные. Они были запрограммированы таким образом, что определенная последовательность монет, которые игрок опускал в автомат, инициировала выплату джекпота. В период с 1993 по 1995 г. Харрис модифицировал более 30 автоматов{34} и «выиграл» сотни тысяч долларов при помощи группы сообщников, которые просто совершали необходимые действия на указанных им игральных автоматах. Но в какой-то момент один из сообщников потерял осмотрительность, и Харрис был пойман.
Точно так же, как и банкомат, современный игральный автомат – это обычный компьютер, напичканный деньгами. Конечно, когда его изобрели в 1895 г., это было механическое устройство, но с 1980-х гг. весь процесс контролирует компьютер, а вращающиеся барабаны с картинками несут исключительно психологическую нагрузку. Во многих аппаратах даже нет настоящих барабанов – они имитируются на дисплее компьютера.
Игральные автоматы хакали с самого их появления. Некоторые из машин старого образца можно было просто толкнуть, чтобы изменить результат вращения барабанов. Другие было легко обмануть монетой на ниточке. Многие автоматы считают монеты, которые выдают, с помощью оптического датчика; заслоняя этот датчик монетой на ниточке, вставленной в монетоприемник, можно было добиться больших выплат.
Все без исключения игры, которые предлагают казино, были когда-то хакнуты. Некоторые из этих хаков стали нормой. Я не имею в виду, что теперь эти хаки разрешены, но они давно на слуху и перестали быть чем-то инновационным или даже попросту интересным. Подсчет карт в блек-джеке когда-то был хаком; сегодня публикуются книги о том, как это делать, и правила для того, чтобы помешать успешному подсчету.
Идея прогнозирования исхода игры в рулетку возникла в 1950-х гг. Колесо вращается с постоянной скоростью, крупье имеет привычку закручивать шарик на один и тот же манер, так почему же, проведя определенные вычисления, не выяснить, к каким числам шарик будет более благосклонным?
В 1960-х гг. для этой цели был создан переносной компьютер, который крепился на теле, управлялся ножными переключателями{35} и выводил результаты подсчетов в виде звуковых сигналов через наушник. Пользователь буквально вводил данные пальцами ног. Эта информация позволяла компьютеру рассчитать скорость вращения колеса, скорость, с которой крупье обычно подбрасывал шарик, и т. д. Через наушник оператор компьютера узнавал, какие числа выпадут с большей вероятностью. В более поздних моделях были улучшены ввод данных и скорость вычислений, но только в 1970-х гг. группе аспирантов Калифорнийского университета в Санта-Крузе наконец удалось получить стабильную прибыль от своего ножного компьютера.
Этот хак не был чем-то незаконным: лишь в 1985 г. штат Невада запретил использование устройств{36} для предсказания исхода игр в казино. Но настоящей защитой стали изменения в правилах игры, благодаря которым крупье прекращали принимать ставки до того, как колесо рулетки приходило в движение.
В блек-джеке хакеры пошли путем подсчета карт. Надо сказать, что это весьма непростая задача, тем более для того, кто не обладает необходимыми навыками. Метод базируется на том факте, что игроки имеют преимущество перед казино, когда в колоде остается больше десяток. Поэтому игрок внимательно следит за картами и увеличивает ставки, когда у него появляется преимущество. Да, это преимущество незначительное – всего около 1 % по сравнению с шансами казино, – но вполне реальное. Однако, чтобы постоянно вести такой учет карт, от игрока требуется недюжинная концентрация.
Казино реагировали на это по-разному{37}. Первый тип реакции заключался в усложнении процесса подсчета карт. В одних казино стали тасовать вместе сразу шесть колод (это делают автоматические тасовщики) и сдавать только две трети колоды, чтобы уменьшить вероятность преимущества игрока. В других карты стали тасовать после каждой раздачи. Известно, что в Лас-Вегасе и Атлантик-Сити пит-боссы подходят к предполагаемым счетчикам карт и вступают с ними в разговор, чтобы отвлечь и даже слегка напугать.
Казино пытались вывести подсчет карт в разряд преступных деяний, но так и не смогли убедить регуляторов, что эта стратегия равносильна жульничеству. Государственные органы ограничились принятием законов, запрещающих использование устройств для подсчета карт{38}. Все, что могут сделать казино сегодня, поймав счетчика карт, – запретить ему появляться в заведении. Раньше таких клиентов вычислял персонал казино, проинструктированный о типичном поведении счетчиков карт. Появившиеся в последнее время камеры, которые отслеживают движение каждой карты, делают это автоматически. Поскольку казино являются частным бизнесом{39}, они, как правило (это зависит от штата), могут отказать в обслуживании кому угодно, если при этом не наблюдается признаков дискриминации.
Другой тип реакции казино на счетчиков карт состоял в том, чтобы принять их как издержки бизнеса. Людей, полагающих, что они умеют считать карты, куда больше, чем тех, кто способен на это в действительности. На самом деле казино только выигрывают от распространенного мнения, что блек-джек – это единственная игра, в которой можно преуспеть, ведь в результате они зарабатывают больше денег на желающих считать карты, чем проигрывают настоящим профессионалам-счетчикам. Завлекая игроков, некоторые казино даже упоминают в рекламе, что используют при игре в блек-джек только одну колоду.
Впрочем, бывают и исключения. В 1980-х гг. группа ученых из MIT и Гарвардского университета{40} изобрела инновационный способ подсчета карт. Охотясь за счетчиками карт, казино ищут людей, которые: а) постоянно выигрывают и б) меняют размер своих ставок таким образом, что становится очевидным наличие у них стратегической информации. Чтобы избежать обнаружения, группа ученых разделила задачи по подсчету карт между разными игроками. Счетчики сидели за столами и никогда не меняли суммы своих ставок. Крупные игроки-бетторы тоже не меняли размера ставок – они просто переходили от одного стола к другому, направляемые сообщниками, которые получали сигналы от счетчиков. В общей сложности группа заработала примерно $10 млн{41}, прежде чем оставить этот бизнес. Воистину крутой хак.
В 1999 г. парень по имени Дэвид Филлипс купил 12 150 стаканчиков с пудингом Healthy Choice. Зачем? Чтобы хакнуть программу для часто летающих пассажиров.
Предложения для часто летающих пассажиров стали популярны в 1981 г., когда компании American, United и Delta впервые представили свои программы. Теперь они есть у каждого авиаперевозчика. Это программы лояльности, поощряющие клиентов летать самолетами одной авиакомпании и снижающие вероятность их перехода в другую. До COVID-19 я регулярно летал. Мне известны все тонкости и нюансы этих программ, и я утверждаю со знанием дела: все они были взломаны с самого начала.
Один из первых хаков назывался «мили за пробег». Мили, начисляемые пассажирам в зависимости от расстояния их рейсов, по сути являются частной валютой, которую можно обменять на билеты. Умный хакер будет искать способы арбитража двух валют, то есть такие ситуации, когда за небольшие деньги можно получить много миль. Так, например, за беспосадочный перелет из Нью-Йорка в Амстердам начисляется 3630 миль, а за перелет с пересадкой в Стамбуле – 6370 миль. При условии, что тот и другой билеты стоят одинаково, а вам больше нечем заняться, это отличная сделка.
Мили за пробег определенно нарушали цели, ради которых авиакомпании запускали программы лояльности. Дальнейшие хаки стали еще более странными. Программы, как правило, включают в себя несколько уровней вознаграждения: к примеру, налет за год 50 000 миль резко повышает ценность программы для пассажира. Поэтому последние порой занимались тем, что покупали билеты на долгие и сложные, но дешевые рейсы туда и обратно, с шестью и более пересадками, только для того, чтобы накопить мили. Некоторые даже не удосуживались покидать аэропорты, в которых оказывались.
Авиакомпании годами игнорировали подобные хаки, но в 2015 г. они начали вносить изменения в свои программы поощрения часто летающих пассажиров{42}, чтобы налет сам по себе не был способом заработать мили. Многие компании ввели минимальный порог расходов для получения элитного статуса и в конечном счете изменили само понятие «миля» в рамках программ, чтобы оно зависело от потраченных долларов, а не от расстояния, которое пролетел пассажир.
Существуют хаки, использующие другие способы накопления миль{43}, помимо самих полетов. Авиакомпании уже давно сотрудничают с банками, выпуская совместные кредитные карты. За каждую оплату такой картой начисляются мили, но помимо этого они часто начисляются уже при заказе карты. Хак очевиден: оформите много кредитных карт и закройте их до того, как начнутся комиссионные сборы. Один человек открыл такую кредитную карту и сразу купил на $3000 подарочные сертификаты Amazon, чтобы получить свой бонус за регистрацию. Другой заполнил гараж блендерами в рамках акции, предлагающей дополнительные мили за покупку бытовой техники. Некая дама хвасталась, что за пять лет она «оформила более 46 кредитных карт и заработала 2,6 млн миль только в виде бонусов за регистрацию».
Конечно, такой хакинг программ лояльности наносит немалый вред: банки в итоге тратят миллиарды долларов на перелеты клиентов, которые не платят ни комиссию, ни проценты по своим картам. В результате эти расходы перекладываются на потребителей в виде более высоких цен на билеты. Некоторые эмитенты кредитных карт пытаются пресекать подобные взломы. В 2016 г. банк Chase ввел правило{44}, согласно которому клиенту не будет одобрено большинство из кредитных карт, если он уже заказал пять и более кредитных карт в разных банках за последние 24 месяца. American Express теперь аннулирует мили{45} у тех, кто «участвовал в злоупотреблениях, неправомерном использовании или играх, связанных с получением или использованием баллов», что дает компании широкие возможности наказывать клиентов, которые, по ее мнению, злоупотребляют системой.
И тут мы возвращаемся к «парню с пудингом»{46}. Известный среди хакеров программ лояльности, Филлипс обнаружил уязвимость не в плане какой-то конкретной авиакомпании, а в программе Healthy Choice 1999 г. К тому времени большинство авиакомпаний уже предлагали партнерские программы, дающие различным фирмам возможность оптом покупать мили для часто летающих пассажиров и предлагать их своим клиентам в качестве вознаграждения. Конкретно в этой злополучной программе клиенты могли зарабатывать мили на рейсы выбранной ими авиакомпании, покупая продукты Healthy Choice. Филлипс занялся поиском самого дешевого продукта, соответствующего требованиям программы, и в итоге купил 12 150 стаканчиков с пудингом по 25 центов за штуку, получив таким образом 1,2 млн миль за $3150 и пожизненный статус Gold на рейсах American Airlines. (Затем он пожертвовал весь купленный пудинг на благотворительность, дополнительно получив возможность списать $815 при уплате налогов.) Определенно, это не тот результат, на который рассчитывала Healthy Choice, запуская программу, но, поскольку Филлипс не нарушил никаких правил, компания заплатила.
Спорт хакают постоянно. Очевидно, это результат конкурентного давления (а в профессиональном спорте еще и денег) и неизбежно «дырявых» правил.
Несколько историй для примера.
Американский бейсбол, 1951 г. Команда «Сент-Луис Браунс»{47} протащила в состав игрока по имени Эд Гейдел, чуть больше метра ростом. Он сделал всего один выход на поле, который, само собой, закончился «прогулкой»[7]: его страйк-зона была настолько мала, что попасть в нее было почти невозможно. В лиге не существовало официального требования к росту игрока, поэтому технически это был легальный хак. Однако на следующий день президент лиги все равно аннулировал контракт игрока.
Баскетбол, 1976 г. Финал NBA, второй овертайм. До конца остается меньше секунды, «Финикс Санс» отстают всего на одно очко от «Бостон Селтикс». Мяч у «Санс» на дальнем конце площадки, и у них просто нет времени, чтобы доставить его к корзине и бросить. Именно в этот момент игрок «Санс» Пол Уэстфал хакнул правила. Он взял тайм-аут, хотя у его команды этого права уже не осталось. Судьи засчитали фол, а «Бостон Селтикс» получили право на штрафной бросок. Но в данном случае заработанное противником дополнительное очко не имело значения. Важным было другое: после штрафного броска «Санс» получили мяч в центре площадки{48}, что дало им шанс забить двухочковый и выйти в третий овертайм. Что они и сделали. На следующий год NBA изменила правила, запретив командам продвигать мяч на середину площадки с помощью технического фола.
Плавание, 1988 г. Американец Дэвид Беркофф и японец Даичи Судзуки отличились в заплывах на спине{49}, проходя большую часть бассейна под водой и показав поразительный результат. Эту технику вскоре переняли и другие первоклассные пловцы, пока не вмешалась Международная федерация плавания и не ограничила дистанцию, на которой пловец на спине может оставаться под водой.
Американский футбол, 2015 г. «Нью Ингленд Пэтриотс» использовали новый хак{50} против «Балтимор Рэйвенс», перемещая игроков на линии розыгрыша, чтобы манипулировать сложными правилами, определяющими, какие игроки имеют право принимать мяч. Два месяца спустя лига внесла поправки в правила{51}, чтобы сделать этот хак незаконным.
Впрочем, так происходит далеко не всегда. Часто вместо того, чтобы объявлять хаки незаконными, их включают в игру, потому что они действительно ее улучшают. Многие аспекты спорта, которые сегодня являются нормой, когда-то были хаками. В американском футболе пас вперед был когда-то хаком, точно так же, как и приемы нападения «беги и стреляй» (run-and-shoot) и «быстрый рывок» (fast snap), вынуждающий другую команду менять игроков. В бейсболе хаками были приемы «жертвенная муха» (sacrifice fly) и «преднамеренная прогулка» (intentional walk). Ни один из этих приемов не противоречил правилам, просто до определенного момента никому и в голову не приходило, что можно действовать подобным образом. Как только приемы были опробованы, они стали частью игры.
Однако этот процесс не всегда проходит гладко. В баскетболе бросок под названием «верняк» (слэм-данк) когда-то был хаком{52}. Никто и представить себе не мог, что игрок способен прыгнуть настолько высоко, чтобы положить мяч в корзину сверху. В первые десятилетия развития баскетбола прием вызывал горячие споры. Разные лиги пытались запретить данкинг, но с середины 1970-х гг. он стал неотъемлемой частью этого вида спорта, поскольку зрелищные броски неизменно приводили в восторг болельщиков.
В крикете, в отличие от бейсбола, отбивающий игрок может заработать очки, отбив мяч не только в сектор, расположенный перед ним, а в любую сторону, поскольку его позиция находится в центре поля. Больше века традиционным способом отбивания мяча считалось таковое в сторону подающего боулера, как в бейсболе, или же краем биты в направление позади отбивающего. В начале 2000-х гг. некоторые игроки в крикет догадались{53}, что могут опасно «зачерпнуть» или «накатить» мяч над собственной головой. Этот удар полностью соответствовал правилам, но требовал особой смелости и хакерского мышления (один из игроков утверждал, что придумал его, играя на узких улочках Шри-Ланки). Немало знаменитых побед было одержано с помощью этой техники, и теперь это стандартный прием в игре.
Кража знаков в бейсболе допускается, но с многочисленными ограничениями и оговорками в ответ на продолжающийся хакинг этой системы. Игроку второй базы и тренеру третьей разрешено пытаться читать знаки кетчера, а вот бэттеру – нет. Камеры, установленные с этой целью вне поля, запрещены. Когда «Хьюстон Астрос» в 2017–2018 гг. читали знаки при помощи камеры, они скорее мошенничали, чем хакали систему, поскольку это правило уже действовало.
Большинство спортивных хаков становятся очевидными после применения. Невозможно скрыть тот факт, что ты плыл под водой или отбил мяч для крикета ударом над головой. Как только первый игрок или команда применяет хак, об этом узнают все. Исключение составляют виды спорта, где чисто технически можно что-то спрятать. К ним относятся все разновидности гонок на механических транспортных средствах (автомобилях, яхтах и т. д.). Кроме того, отдельной областью является допинг, стимулирующий людей и животных.
Гонки «Формула-1» постоянно изобилуют хаками. Сначала члены одной команды находят лазейку в существующих правилах, чтобы повысить эффективность своих болидов. Затем об этом узнают другие команды и либо копируют идею, либо протестуют против нововведения. Наконец, Международная автомобильная федерация (FIA) вмешивается и делает одно из двух: запрещает хак или же включает его в технические спецификации следующего сезона.
Так, например, в 1975 г. команда Tyrell построила шестиколесный автомобиль{54}: два колеса сзади и четыре спереди. Этот хак увеличил производительность, но снизил надежность. В ответ другие команды построили аналогичные прототипы, но в 1983 г. FIA постановила, что все автомобили могут иметь не более, но и не менее (это уже на всякий случай) четырех колес. В 1978 г. команда Brabham обошла правило{55} о том, что ни один автомобиль не может иметь подвижные аэродинамические элементы, такие как пропеллеры, установив один из них рядом с радиатором и назвав его охлаждающим устройством. Эта машина была добровольно снята с соревнований, и в результате правила не пришлось изменять. В 1997 г. в конюшне McLaren разработали автомобиль с двумя педалями тормоза{56}, вторая из которых управляла только задними колесами. Я недостаточно разбираюсь в автомобильных гонках, чтобы понять все детали, но это давало водителю преимущество. Сначала такая инновация была разрешена, но затем ее запретили после жалоб других команд.
В 2010 г. McLaren обошла запрет на подвижные аэродинамические элементы, проделав в кокпите дыру{57}, которую водитель мог закрывать и открывать ногой. В качестве аргумента приводился довод, что в отверстии нет движущихся частей, поэтому оно разрешено правилами. Однако водитель, двигая ногой, создавал тот же эффект, и хак быстро запретили. В 2014 г. Mercedes изменила конструкцию турбокомпрессора своего двигателя для «Формулы-1»{58}, разделив турбину и компрессор и разместив их по разные стороны двигателя. Конструкция не была признана незаконной, и ее использование стало причиной того, что команда Mercedes доминировала в гонках в течение следующих шести лет. В 2020 г. Mercedes добавила на рулевое колесо новую функцию{59}: нажатие на рулевую колонку меняло угол схождения передних колес. Правила запрещают добавлять какие-либо функции на руль; законность этого хака зависит от точного определения системы рулевого управления, а также от того, рассматривается ли эта функция как вспомогательное средство именно этой системы или же как элемент устройства подвески. FIA прикрыла эту лазейку в 2021 г.
И, наконец, последний пример, к которому мы еще вернемся в этой книге. Раньше хоккейные клюшки были плоскими. Затем кто-то обнаружил, что изогнутой клюшкой игроки могут наносить броски с куда более высокой скоростью. Теперь изогнутые клюшки – это норма и существуют точные ограничения на кривизну клюшки. Во время игр NHL 1993 г. игрок «Лос-Анджелес Кингс» Марти Максорли был пойман с клюшкой, изогнутой не по правилам{60}.
Вирион SARS-CoV-2 в ширину около 80 нм. Он прикрепляется к белку под названием ACE2, который встречается на поверхности многих клеток нашего организма: в сердце, кишечнике, легких и носовых проходах. В нормальном состоянии ACE2 принимает участие в процессах регуляции артериального давления, снятия воспалений и заживления ран. Но у вируса есть особый наконечник, который может захватывать белок, сплавляя воедино мембраны клетки и вируса, что позволяет РНК вируса проникнуть в клетку. Затем вирус подрывает механизм производства белка в клетке-хозяине, перехватывая процесс, чтобы штамповать копии самого себя, которые затем заражают все новые и новые клетки. Другие части РНК вируса создают белки, остающиеся в клетке-хозяине. Один из них не позволяет клетке посылать сигналы иммунной системе о том, что она подверглась атаке. Другой побуждает клетку высвобождать новые вирионы. Третий помогает вирусу противостоять врожденному иммунитету клетки-хозяина. Все это привело к появлению болезни, которая с 2020 г. доминирует в нашей жизни: COVID-19.
COVID-19 – это хакер. Как и все вирусы, SARS-CoV-2 ловко использует иммунную систему нашего организма, нарушая ее работу ценой здоровья и жизни более 6 млн человек во всем мире. ВИЧ – еще один хакер. Он заражает Т-хелперные клетки в нашей крови, внедряя свою ДНК в ДНК клетки, а затем реплицируясь внутри нее. В конце концов инфицированная клетка высвобождает новые вирионы ВИЧ в кровоток, продолжая процесс своего размножения.
В целом хакинг как явление носит паразитический характер. И ВИЧ, и SARS-CoV-2 являются паразитами: они живут в организме другого вида, извлекая из этого выгоду, как правило, за счет хозяина. Система существует для достижения определенных целей, поставленных обычно ее разработчиками. Хакер взламывает эту систему для достижения иных целей, которые могут противоречить первоначальным.
Это очевидно при хакинге банкоматов, азартных игр, программ лояльности и планов междугородних звонков. Целью того, кто управляет банкоматом, является выдача наличных клиентам банка и списание соответствующих сумм с их счетов. Цель хакера – получить наличные, не списывая деньги со своего счета (или вообще не имея такового). Точно так же цель казино – обеспечивать честную игру (что, впрочем, означает равенство шансов между игроками, а вовсе не между игроками и казино). Цель хакера, напротив, состоит в том, чтобы получить преимущество.
В спорте и онлайн-играх это менее очевидно. Цели спортивной лиги могут состоять в том, чтобы получать прибыль, развлекать болельщиков, продвигать соревновательность как социальное качество, в некотором смысле быть оплотом справедливости и обеспечивать «хорошую игру», что бы это ни значило. Цель спортсмена – выигрывать любой ценой, индивидуально или в команде, и, возможно, зарабатывать деньги.
Цели онлайн-игры Club Penguin заключались в том, чтобы обеспечить пользователям безопасный и интересный опыт и законным путем повысить прибыль корпорации Disney. Целью хакеров Club Penguin было более свободное общение с другими игроками, независимо от того, был ли хакер шестилетним ребенком, ищущим, с кем поболтать, или же троллем в поисках жертв. С точки зрения системы и тот и другой были паразитами, хотя и совершенно разных видов.
Спам – это хак электронной почты. Когда создавались интернет-протоколы и закладывалась система электронной почты, никто о нем не думал в принципе, не говоря уже о намеренном пресечении таких попыток, хотя сами по себе нежелательные почтовые рассылки – давняя американская традиция. Рассылка подобных электронных писем, в том числе преследующих коммерческие цели, на раннем этапе существования электронной почты никем не осуществлялась. Идея спама возникла в 1990-х гг., причем одновременно и в системе электронной почты, и в популярном тогда сервисе обмена сообщениями Usenet, а серьезной проблемой стала уже в начале 2000-х гг. В те годы около 90 % всей электронной почты было спамом. Это не что иное, как паразитический взлом коммуникационной системы.
Не все паразитические отношения происходят за счет хозяина, и не все хакеры – злодеи. Обычно они ведут себя рационально, преследуя финансовые интересы, как в большинстве приведенных в этой книге примеров. Но они также могут действовать исходя из других интересов: моральных, этических или политических. Иногда хакеры с помощью взлома пытаются улучшить мир. Иногда они просто ищут возможности. Иногда, если система настроена против них, они действуют по необходимости – просто для того, чтобы выжить. Подумайте о людях, которые пытаются получить медицинскую помощь или прокормить себя и свою семью.
Как и любой паразит, подрывая систему хозяина, хак не должен быть чересчур эффективным – ему нужно, чтобы система продолжала существовать. Успешный хакинг банкоматов, хотя и приносит прибыль, полностью зависит от наличия таких банкоматов, которые можно взломать. Если бы какой-то конкретный хак стал слишком успешным, банки просто перестали бы устанавливать подходящие банкоматы. Если бы слишком много людей взломали Club Penguin, чтобы вести беседы, противоречащие концепции безопасности детей, Disney свернула бы эту систему прежде, чем столкнуться с последствиями. Спам уничтожил бы электронную почту, если бы не антиспамовые программы. Слишком эффективный хак может в итоге себя обессмыслить, разрушив базовую систему, от которой зависит.
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 см), но пойманному нарушителю придется испытать на себе малоприятные последствия своего поступка. Единственное «обновление», которое нужно «установить» в этих случаях, – это обучить персонал и убедиться, что каждый пит-босс в казино и каждый хоккейный арбитр на льду знают новые правила и то, как выявлять мошенников, а пойманных с поличным наказать соответствующим образом. Аналогично, законная стратегия ухода от налогов становится незаконным уклонением от их уплаты и в случае обнаружения преследуется по закону (во всяком случае, так должно быть).
Это указывает на другую проблему: мошенников сложно обнаружить. Вспомните, что рулетка оставалась уязвимой до тех пор, пока систему ставок не изменили таким образом, что хакинг просто перестал быть эффективным. Эта проблема характерна для систем, о которых мы будем говорить. Если вы обновите компьютерный код, взлом станет невозможным. Если вы обновите налоговый кодекс, хак все еще будет возможен, просто юридическая лазейка перестает быть таковой, а значит, и хак, по моему определению, перестает быть хаком. Это означает, что вам придется обновить и систему обнаружения, чтобы хакеры, ставшие теперь преступниками, были пойманы и привлечены к ответственности.
Эффективность патчей также снижается, когда управляющий орган функционирует медленно или когда внутри него нет единого мнения, нужен ли патч вообще. Иными словами, когда у системы нет четкой цели. Что, например, означает «исправить» налоговый кодекс? В большинстве случаев это означает принятие нового закона, который закрывает уязвимости действующего. Этот процесс может занимать годы, ведь налоговый кодекс создается в политической сфере – обители конкурирующих представлений о том, чего должна достичь государственная политика. Кроме того, те самые люди, которые используют уязвимости, как правило, стараются хакнуть и законодательные системы, чтобы поддерживать легальность своих действий. Представьте себе, если бы счетчики карт в блек-джеке отвечали за правила казино. Подсчет карт тогда преподносился бы как умный и честный способ победить в игре. Точно так же преподносится сейчас уклонение от уплаты налогов.
В отсутствие исправлений на уровне законодательства можно прибегнуть к весьма специфическому и быстрому патчу, который «ставится» через суд. В компьютерном мире у него есть аналог, известный как хотфикс (hotfix), – быстрое обновление программного обеспечения, предназначенное для устранения конкретной ошибки или уязвимости. Термин «хотфикс» (буквально «горячее исправление») происходит от того факта, что традиционно такие обновления применялись к уже запущенным рабочим системам. Этот метод был более рискованным, поскольку программное обеспечение могло дать сбой, способный повлечь непредсказуемые проблемы. Сегодня хотфикс – обычное явление: обновления для операционных систем, значительная часть которых функционирует в облаке, устанавливаются прямо в процессе их работы, но, когда появился термин, это было не так.
Второй способ защиты – снижение эффективности взлома.
Компрометация деловой электронной почты – это хакерская атака с помощью социальной инженерии, поскольку она использует не технологическую, а человеческую уязвимость. При такой мошеннической схеме жертва получает электронное письмо от источника, которому доверяет, содержащее вполне законный запрос, но с просьбой сделать это не так, как обычно, зачастую вопреки установленному протоколу. Так, бухгалтер получает электронное письмо от поставщика, который просит перечислить деньги на новый банковский счет. Или покупатель жилья получает электронное письмо от компании-застройщика с инструкциями о том, как перевести первый взнос. Или финансовый директор может получить электронное письмо от генерального директора с просьбой срочно перевести многомиллионную сумму на конкретный счет. Счета-получатели принадлежат мошеннику, и жертва, как правило, никогда больше денег своих не видит. Подобные аферы стоят миллиарды.
Иногда такая схема предполагает взлом электронных почтовых ящиков продавцов – это повышает вероятность того, что жертва будет доверять отправителю. Чаще всего электронные письма мошенников представляют собой незначительные вариации настоящих адресов, что-то вроде person@c0mpanyname.com вместо person@companyname.com. (Если вы слушаете аудиокнигу, то буква «о» в первом слове «companyname» заменена на ноль.) Уязвимость здесь заключается в невнимательности, свойственной людям, или неуместном доверии.
Существует масса причин, по которым уязвимость нельзя устранить. В мире политики законодательный процесс, который должен это делать, может оказаться неработоспособным. Или же может не оказаться руководящего органа, который выдает предписание создать патч. В случае хакинга с помощью социальной инженерии, описанного выше, хакеры взламывают работу нашего мозга, а эта уязвимость не поддается исправлению в более короткие сроки, чем определит эволюция.
Когда мы не можем устранить уязвимость, у нас есть три варианта. Первый – перепроектировать систему так, чтобы взломать ее было слишком сложно, слишком дорого, менее прибыльно или же менее разрушительно. Это подход работает и в тех случаях, когда просто объявить хак вне закона недостаточно и мы хотим дополнительно усложнить жизнь хакерам.
Второй вариант – предвидение. Если я расскажу вам о компрометации деловой электронной почты и о том, как это работает, вы станете лучше распознавать ситуации, когда становитесь потенциальной мишенью, и, надеюсь, с меньшей вероятностью попадете в расставленные сети. Именно так мы защищаемся от мошеннических атак по электронной почте и телефону, которые проскальзывают через автоматические фильтры. Именно так потенциальные жертвы могут противостоять эффективным когнитивным взломам, которые играют на универсальных человеческих предубеждениях, таких как страх и доверие к авторитету.
Это подразумевает использование дополнительной системы с целью обезопасить основную. Для противодействия компрометации деловой электронной почты компания может ввести требование, чтобы любые крупные денежные переводы утверждались как минимум двумя людьми. Это означает, что, даже если взлом пройдет успешно и сотрудник будет одурачен, хакер не сможет извлечь выгоду из своего обмана.
Этот вариант защиты часто обсуждается как решение проблемы незащищенных IoT-устройств. Беспокойство вызывает тот факт, что через несколько лет в наших домах и сетях появятся разнообразные уязвимые IoT-устройства, защитить которые будет просто невозможно. Одним из решений является наличие в сетях систем, распознающих эти устройства и ограничивающих их поведение таким образом, чтобы снизить возможность для хакинга. Представьте, что ваш домашний маршрутизатор умен настолько, что распознает IoT-устройства и блокирует их, когда те пытаются делать нечто, чего делать не должны, например если холодильник начинает рассылать спам, добывать криптовалюту или участвовать в DoS-атаках.
Третий вариант защиты – обнаружение хака и восстановление системы постфактум.
В 2020 г. российская служба внешней разведки (СВР) взломала серверы обновлений, принадлежащие разработчику программного обеспечения, под управлением которого работала сеть компании SolarWinds. В числе ее 300 000 клиентов по всему миру было большинство компаний из списка Fortune 500 и члены правительства США. СВР установила бэкдор[8] в обновление одного из продуктов компании, который носил название Orion, и стала выжидать.
Остановимся на секунду. Всего несколько страниц назад я объяснял, что главный в компьютерной индустрии метод защиты от хакеров – это исправления. СВР взломала сам процесс создания патчей, а затем подсунула бэкдор в одно из обновлений продукта. Более 17 000 клиентов Orion скачали и установили хакнутое обновление, предоставив СВР доступ к своим системам. СВР подмяла под себя тот самый процесс, которому ожидаемо все должны доверять, чтобы повысить свою безопасность.
Хак не был обнаружен ни АНБ, ни каким-либо другим подразделением правительства США. Компания FireEye, предоставляющая услуги в сфере сетевой безопасности, случайно наткнулась на него в ходе детального аудита собственных систем.
Как только взлом SolarWinds выплыл наружу, сразу стало ясно, насколько катастрофической (или успешной, в зависимости от вашей позиции) оказалась эта операция. Русские взломали Государственный департамент США, министерство финансов, министерство внутренней безопасности, Лос-Аламосскую и Сандийскую национальные лаборатории, а также Национальные институты здравоохранения. Они проникли в Microsoft, Intel и Cisco. Они взломали сети в Канаде, Мексике, Бельгии, Испании, Великобритании, Израиле и ОАЭ.
После проникновения в эти системы хакеры СВР смогли установить новые средства доступа, не связанные с уязвимостью SolarWinds. Таким образом, даже после того, как компании, подвергшиеся атаке, исправили свое программное обеспечение и устранили проблемы с помощью новых, уже безопасных обновлений, в их сетях все еще оставались неизвестные уязвимости. Единственный надежный способ восстановить безопасность в такой ситуации – выбросить все оборудование и программное обеспечение и начать с нуля. Но ни одной организации не хватило решимости поступить таким образом, и я полагаю, что их сетями по-прежнему можно манипулировать из Москвы.
Из этой истории следует несколько выводов. Во-первых, обнаружить хак бывает непросто. Иногда его удается распознать прямо во время взлома, но чаще всего это происходит уже после, к примеру в процессе аудита. Во-вторых, хак может быть настолько разрушительным, что никакие ответные меры не будут достаточными. В-третьих, может оказаться просто нереальным восстановиться после конкретного взлома. В этом случае восстановление будет заключаться прежде всего в защите системы от дальнейших хакерских атак.
И, наконец, еще об одном способе защиты – поиске уязвимостей до того, как они будут использованы злоумышленником.
Атака «красной команды»[9] – это не что иное, как взлом собственных систем. Можно прибегнуть к услугам компаний, которые специализируются на подобном анализе, а можно поставить задачу разработчикам делать это самостоятельно в рамках процесса контроля качества. И в том, и в другом случае «красная команда» рассматривает систему так, как если бы являлась внешним хакером. Обычно такая команда находит массу уязвимостей (в компьютерном мире они есть всегда), которые исправляются до выхода программного обеспечения.
Эта концепция пришла из армейского арсенала. Традиционно «красной командой» на воинских учениях называли подразделение, игравшее роль врага{61}. Сообщество кибербезопасности взяло этот термин, чтобы обозначить группу людей, обученных думать как враг и находить уязвимости в системах. Это более широкое определение было включено в процесс военного планирования и в настоящее время является неотъемлемой частью военного стратегического мышления и проектирования систем. Министерство обороны США, особенно сектор национальной безопасности, уже давно интегрировало «красную тройку» в процесс планирования. Вот что заявил об этом Научный совет по вопросам обороны США:
Мы утверждаем, что «красные команды»{62} сейчас особенно важны для министерства обороны… Агрессивные «красные команды» необходимы для оспаривания новых оперативных концепций, чтобы обнаружить их недостатки прежде, чем это сделает реальный противник.
Если вы не создаете «красную команду», то, чтобы найти уязвимости в своих системах, вам придется полагаться на своих же врагов. Но если уязвимости находит кто-то другой, как вы можете быть уверены, что они будут устранены, а не использованы? В компьютерном мире основным средством противодействия использованию хакерами плодов своих усилий является признание компьютерного взлома преступлением. Если вы хакер и обнаружили новую уязвимость, то можете использовать ее с риском получить тюремный срок. Но вы также можете продать информацию на черном либо на сером рынке.
Противодействующим стимулом являются поощряющие программы, известные как bug bounties, когда компании-разработчики программного обеспечения выплачивают вознаграждение людям, обнаружившим уязвимости в их продуктах. Идея заключается в том, чтобы заинтересовать исследователей сообщать о своих находках в компанию. Bug bounties неплохо справляются со своей задачей, хотя зачастую хакеры могут заработать куда больше, толкая информацию об уязвимостях преступникам или производителям кибероружия.
В любом случае чем больше вы знаете о системе, тем легче находить новые уязвимости, особенно если у вас имеется доступ к человекочитаемому исходному коду, а не только к объектному коду, читаемому машиной. Точно так же легче найти уязвимости в своде правил, если у вас есть копия самого свода правил, а не только информация о постановлениях на его основе.
Автозапуск – функция, впервые появившаяся в Windows 95. До этого момента вы покупали программное обеспечение на компакт-диске, а затем вручную запускали сценарий установки на своем компьютере. С автозапуском вы могли просто вставить диск в дисковод, и система автоматически находила и запускала сценарий установки. Это значительно упрощало установку программного обеспечения для среднего, технически неграмотного пользователя.
К сожалению, функция автозапуска также использовалась вирусописателями для установки в системы вредоносных программ. Вирус размещался на безобидном компакт-диске или, в более поздние годы, на флешке и автоматически запускался, как только ничего не подозревающий пользователь вставлял его в компьютер. Вот откуда ведет свою историю всем известное предупреждение о небезопасности подключения случайных USB-накопителей к компьютеру.
Обратите внимание, что в данном случае уязвимость не является следствием ошибки. Это была попытка найти баланс между безопасностью и удобством использования. Найденный компромисс, возможно, и выглядел разумным в 1995 г., чего нельзя было сказать о нем десятилетие спустя. Cообщения о системных ошибках, вызванных автозапуском, стали множиться как грибы после дождя, и в 2011 г. Microsoft наконец-то перепроектировала систему для Windows Vista, отключив функцию автозапуска для флешек, сетевых дисков и прочих носителей, оставив ее только для таких вымирающих мастодонтов, как DVD-диски.
Проблема заключается в том, что невозможно создать идеальную защиту от хакеров на этапе проектирования, поскольку, во-первых, безопасность – это лишь одно из свойств, которые должны быть оптимизированы при разработке системы, а во-вторых, методы, которые используют хакеры, их цели и мотивы постоянно меняются по мере развития общества и технологий. Проектировщикам необходимо пересмотреть свои основные подходы к организации и запуску систем. Хороший дизайн системы со временем теряет свои преимущества, и хакеры всегда найдут способы использовать его в своих целях.
Вместо того чтобы находить уязвимости в системе до того, как она будет взломана, мы можем попытаться создать систему с меньшим количеством уязвимостей, то есть сделать так, чтобы они не существовали изначально. В сфере информационной безопасности это называется проектированием безопасных систем.
Впрочем, сказать намного легче, чем сделать. В сложноорганизованном компьютерном коде невозможно найти все скрытые лазейки. Простые смертные не могут создать программное обеспечение без ошибок и уязвимостей. У нас до сих пор нет теории проектирования безопасного программного обеспечения, не говоря уже о методологии такого процесса. Но главная причина, по которой мы не повышаем качество в этой сфере, заключается в том, что писать безопасный и надежный код – трудно, медленно и дорого, а значит, как правило, для этого нет экономического стимула. За такими редкими исключениями, как электронные системы самолетов и космических кораблей, большая часть программного обеспечения пишется в спешке и кое-как. Но базовые принципы проектирования, которые минимизируют количество уязвимостей и возможности их использования, у нас все-таки есть.
Простота. Чем сложнее система, тем более она уязвима. Причин тому множество, но, обобщая их, можно сказать, что в сложной системе присутствует куда больше элементов, которые могут сработать не так. Например, у здания офисного центра больше потенциальных уязвимостей, чем у дома на одну семью. Противоядием служит простота. Многие естественные системы сложны по самой своей природе, но что касается искусственных систем, то чем проще они разработаны, тем более безопасными будут в дальнейшем.
Глубокая защита. Основная идея этого подхода заключается в том, что одна уязвимость не должна разрушать всю систему. В компьютерных системах это чаще всего реализуется методом многофакторной аутентификации, когда кроме имени пользователя и пароля, являющихся единой точкой отказа[10], используют несколько методов аутентификации. К примеру, моя электронная почта дополнительно защищена Google Authenticator. Это приложение привязано к моему смартфону, который всегда со мной. Чтобы получить доступ к своей учетной записи, мне нужно разблокировать телефон, открыть приложение и ввести сгенерированный им код. Другие многофакторные системы могут включать биометрию, например отпечаток пальца, или небольшое USB-устройство, подключаемое к компьютеру.
Для некомпьютерных систем глубокая защита – это все, что не позволяет какой-то одной уязвимости стать причиной успешного взлома системы. Это может быть засов на двери в дополнение к основному замку, двойной забор с колючей проволокой вокруг военной базы или требование, чтобы финансовые операции на определенную сумму утверждались двумя людьми. Хак, преодолевающий один из этих барьеров, вряд ли сможет преодолеть и другой.
Компартментализация (изоляция / разделение обязанностей). Умные террористические организации разделяют себя на ячейки. Каждая ячейка имеет ограниченное представление об остальных, поэтому если одна из них скомпрометирована, то другие остаются в безопасности. Это и есть компартментализация, которая ограничивает последствия любой конкретной атаки. Эта же идея лежит в основе того, что в одной организации ключи от всех кабинетов разные, а у каждой учетной записи – свой пароль. Такой подход еще называют принципом наименьших привилегий, когда человеку или подразделению предоставляется только тот уровень доступа, который необходим для выполнения работы. Именно благодаря этому принципу у вас нет главного ключа от всех кабинетов в здании, где вы работаете, ведь у вас нет в нем производственной необходимости.
В компьютерных сетях такой подход называется сегментацией. Он подразумевает разделение сети на части, подобные террористическим ячейкам, чтобы хакерская атака на одну из них не привела к взлому всей сети. Сегментация – это первое, что пытается нарушить злоумышленник после проникновения в сеть. Например, хорошая сегментация не позволила бы СВР использовать уязвимость SolarWinds для доступа к различным частям сети и установить вредоносные программы и бэкдоры.
Эта концепция легко применима и в социальных системах. Она находит отражение, например, в идее, что государственные регуляторы не должны иметь финансовых интересов в отраслях, которые они регулируют. (Впрочем, этот принцип регулярно нарушается в США, благодаря так называемому эффекту вращающихся дверей, когда происходит взаимная ротация кадров между правительством и отраслями.) Или в том, что избирательные округа не должны создаваться выборными должностными лицами, которые могут извлечь выгоду из джерримендеринга[11].
Механизмы защиты от сбоев. Все системы дают сбой, будь то в результате несчастного случая, ошибки или атаки. Мы хотим, чтобы они выходили из строя максимально безопасно. Есть простые решения, например выключатель мертвеца в поезде: если машинист теряет дееспособность, поезд перестает ускоряться и в конце концов останавливается. Есть решения намного сложнее, как в случае с пусковыми установками ядерных ракет, которые имеют всевозможные надежные механизмы, гарантирующие, что боеголовки никогда не будут запущены случайно.
Социальные системы также могут иметь механизмы защиты от сбоев. Многие наши законы содержат нечто подобное. Убийство незаконно, независимо от используемых средств, даже если вы придумаете хитрый способ взломать систему для его совершения. Альтернативный минимальный налог (АМТ) в США должен был служить в качестве предохранительной меры, чтобы граждане платили минимальный налог независимо от того, сколько и какого рода лазеек они обнаружили. (То, что АМТ не сработал так, как это задумывалось, демонстрирует сложность поставленной задачи.)
Все перечисленные контрмеры также снижают эффективность хакинга.
Пока что я не сказал ничего нового. Большую часть этой темы я уже освещал в своей книге 2000 г. «Секреты и ложь»{63}. Другие авторы писали об этом и до меня, и после. Но понимание подходов безопасного проектирования имеет решающее значение для ограничения эффективности взлома. Чем больше фундаментальных принципов безопасности вы сможете включить в дизайн вашей системы, тем надежнее она будет защищена от хакеров.
Используют компании эти методы или нет, зависит от конкретной отрасли. Можно предположить, что такие гиганты, как Apple и Microsoft, тратят гораздо больше денег на обеспечение безопасности своих программных продуктов, чем разработчики игр для мобильных телефонов. Точно так же можно ожидать, что компания, создающая программное обеспечение для самолетов, автомобилей и медицинских приборов, потратит значительно больше средств и усилий на обеспечение безопасности, чем компания, выпускающая программируемые игрушки. И хотя всегда есть исключения, в основном такая картина верна.
В 1971 г. некто, купивший билет на имя Дэна Купера, хакнул Boeing 727, использовав кормовой трап весьма нетривиальным способом: после успешного захвата самолета и получения выкупа в размере $200 000 наличными он выпустил пассажиров, заставил пилотов взлететь и выпрыгнул с парашютом, чтобы навсегда исчезнуть для правоохранителей, которые так и не смогли установить его личность. За Купером последовало множество подражателей, и в итоге компания Boeing изменила конструкцию этой модели, убрав кормовой трап и тем самым устранив возможность выпрыгнуть в полете. Это было эффективное, но дорогостоящее исправление уязвимости. Однако почему она вообще существовала? Вероятно, компания считала эту угрозу или нереальной, или слишком отдаленной, чтобы от нее защищаться.
Моделирование угроз – это термин из области системного проектирования, означающий последовательное перечисление всех возможных угроз для системы{64}. Если в качестве системы вы рассмотрите свой дом, то для начала стоит перечислить, что в нем наиболее ценное: жильцы, семейные реликвии, оригинал Пикассо, дорогая электроника. Затем нужно перечислить все способы, которыми посторонний может проникнуть в дом: незапертая дверь, открытое окно, закрытое окно и т. д. После этого вы рассмотрите разные типы людей, которые могут захотеть проникнуть в дом: профессиональный взломщик, соседский ребенок, преследователь, серийный убийца. Не стоит забывать об угрозах от людей, которым не нужно взламывать дверь, например о возможном насилии со стороны интимного партнера. И, наконец, вы используете всю эту информацию для построения модели, подробно описывающей то, о каких угрозах стоит побеспокоиться, а какие можно проигнорировать, сколько усилий нужно потратить на смягчение конкретных угроз и т. д. Ваша домашняя безопасность будет иметь свою специфику, если вы владеете оригиналом Пикассо, являетесь президентом страны или живете в зоне боевых действий.
Экономические соображения необходимы для понимания того, как строить защиту от хакинга. Определите размер убытков в случае взлома системы. Определите стоимость и эффективность конкретных методов безопасности. Проведите анализ затрат и выгод, чтобы понять, стоит ли каждый метод потраченных на него средств. В некоторых случаях нет смысла внедрять защиту. Например, существует множество потенциальных мер безопасности, которые могут снизить количество взломов банкоматов, но они не применяются, поскольку раздражают законных клиентов. Такие методы, как сканирование отпечатков пальцев или система распознавания лиц, многие клиенты сочтут нарушающими конфиденциальность. Если эти меры ощутимо снизят частоту использования банкоматов, то сделают их менее прибыльными, несмотря на то что повысят уровень безопасности.
Еще одно понятие из области экономики, которое важно для понимания хакинга и защиты от него, – это экстерналии. Экстерналией называется внешний эффект от экономической деятельности, который сказывается на людях, непосредственно не вовлеченных в эту деятельность. Помните владельца фабрики, решившего загрязнить реку? Люди, живущие ниже по течению, в результате могут заболеть, но владелец живет в другом месте, и ему все равно.
Конечно, все не так однозначно. Ниже по течению могут жить работники фабрики и ее клиенты. Экологические активисты могут разоблачить факт загрязнения, пресса – опубликовать критические статьи, а общественное мнение – обернуться против владельца. Тем не менее в нашем системном мышлении загрязнение реки является экстерналией.
Хакинг вызывает внешние эффекты. У этих эффектов есть цена, которую платит общество. Это похоже на воровство в магазинах: все должны покупать по более высоким ценам, чтобы компенсировать потери или оплатить меры, предпринимаемые магазином для борьбы с воришками.
Мы знаем, как решить проблемы, вызванные внешними эффектами: нужно преобразовать их в проблемы, которые затрагивают человека, владеющего системой и принимающего решения. Для этого мы налагаем на систему правила извне, чтобы перенести затраты внутрь самой системы.
В идеальном мире такой подход работает блестяще. В реальности его эффективность зависит от правоприменения и наказаний, от юристов и результатов судебных разбирательств. Она зависит от действий регулирующих органов, на которые влияют представители власти, лоббисты, стремящиеся смягчить нормы, а также доноры избирательных кампаний со своими программами. Она зависит от результатов исследований, финансируемых промышленностью и научными кругами, которые могут искажаться в интересах политических сил. Она зависит от граждан, которые должны не только понимать, что подобные затраты существуют, но и то, как и кого именно заставить понести их.
Технические системы становятся небезопасными при изменении модели угроз. По сути, любая система проектируется в соответствии с реалиями своего времени. Затем в какой-то момент ее использования что-то меняется. Какова бы ни была причина изменений, старые предположения, положенные в основу безопасности, больше не верны, и система становится незащищенной. Уязвимости, которые когда-то были неважными, превращаются в критические. Критические уязвимости, напротив, перестают быть актуальными. Хаки становятся то проще, то сложнее, то более прибыльными, то менее, то распространенными, то единичными.
Возможно, самым наглядным примером этого служит сам интернет. Как бы смешно это ни звучало сегодня, но интернет создавался без учета требований безопасности. Еще в конце 1970-х – начале 1980-х гг. он не использовался для каких-то важных дел, а чтобы получить к нему доступ, нужно было быть сотрудником исследовательского учреждения. Многопользовательские мейнфреймы, подключенные к интернету, имели свои собственные системы безопасности. По этим причинам первые разработчики интернета намеренно игнорировали соображения безопасности в пользу более простого протокола и оставляли их на усмотрение многопользовательских конечных точек.
Мы все знаем, чем закончилась эта история. Сначала к интернету стали подключаться однопользовательские персональные компьютеры без систем безопасности, но разработчики сетей предположили, что эти компьютеры имеют такой же уровень безопасности, как и старые мейнфреймы. Затем изменилось все, что касается использования интернета. Изменилась его скорость. Изменился масштаб. Изменилась область его применения. Изменилась и вышла на первый план его роль в обществе. Взломы, о которых раньше никто и помыслить не мог, внезапно стали критически важными. Изменилась модель угроз. А это означало, что анализ затрат и выгод стал тоже иным.
В области компьютерной безопасности мы хорошо знаем, что такое динамичные среды. Кажется, что каждые несколько лет меняется абсолютно все и методы безопасности должны меняться тоже. Спам в системе электронной почты является проблемой в той мере, в какой стала экономически невыгодной почта бумажная, поскольку отправлять электронные письма намного дешевле.
Поддержание безопасности в этой динамичной среде требует работы на опережение хакеров. Вот почему мы занимаемся исследованиями в области компьютерной безопасности, проводим конференции, выпускаем журналы, создаем программы для выпускников университетов, устраиваем хакатоны. Мы обмениваемся информацией о том, что предпринимают хакеры, и делимся передовыми методами защиты. Мы пытаемся понять, где появятся новые уязвимости, до того, как это произойдет, и как именно хакеры будут реагировать на них.
Для того чтобы законы поспевали за хакерами, они должны давать регуляторам необходимую гибкость в вопросах запрета новых хаков и наказания хакеров. Закон о компьютерном мошенничестве и злоупотреблениях был принят в 1986 г. и стал результатом обеспокоенности тем, что существующие на тот момент законы не охватывали все преступления, связанные с компьютерами. Например, этот закон, среди прочего, квалифицирует доступ к чужой компьютерной системе без разрешения или превышение уровня авторизованного доступа как преступление. Такая формулировка оказалась настолько широкой, что в 2021 г. Верховный суд США сократил ее. Однако смысл закона остался прежним – он позволяет обвинению заявить: «Хотя система и дала возможность осуществить хак, но такие действия явно не были предусмотрены, и ответчик знал, что поступает неправильно. И потому его действия незаконны».
Для многих наших социальных систем возможность исправления самих себя заложена не только внутри, но и на внешнем уровне более общих правил, по крайней мере в некоторой степени. Остается открытым вопрос: как мы осуществляем управление жизненным циклом некомпьютерных систем? Как часто мы должны проверять на уязвимости наши демократические институты и то, соответствуют ли они своему назначению? И что делать в случае, если это не так? Каждые несколько лет мы покупаем новый ноутбук или смартфон, справедливо полагая, что новые устройства более безопасны. Но как нам сделать то же самое с социальными институтами?
Системы норм отличаются от сводов правил. В самой природе нормы заложено, что ее невозможно взломать; в случае нормы хак – это всего лишь другое слово для обозначения ее нарушения. С другой стороны, поскольку нормы более неформальны, чем правила, и не кодифицированы, существует больше возможностей для интерпретаций. Это приводит к тому, что мотивированный человек может легче перейти границы норм или оптимизировать свои действия для достижения определенного результата. А поскольку эти системы требуют от людей реагировать на атаки, нормам намного проще развиваться, чтобы, в частности, делать хаки легитимными.
В качестве примера можно взять недавние события, когда Дональд Трамп смог успешно выступить против социальных и политических норм. Я стараюсь не иллюстрировать Трампом те или иные тезисы этой книги по той причине, что он политически заряжен. Но здесь я сделаю исключение, поскольку пример слишком показателен, чтобы его игнорировать. У общества есть механизмы исправления мягких нарушений социальных норм – публичное посрамление, политический откат, журналистика и прозрачность. И все эти механизмы неплохо справлялись, пока Трамп не перегрузил их. В очень короткий срок возникло слишком много скандалов. Механизмы, которые корректировали поведение государственных служащих, оказались неэффективными перед лицом такого кандидата, как Трамп. Нормы работают только в том случае, если существуют последствия их нарушений, а общество просто не успевало реагировать на такой натиск. Таким образом, Трамп смог раздвинуть границы норм сразу во многих направлениях. И в некоторых случаях это разрушило сами нормы[12].
Однако, подобные вызовы системам норм могут повысить их устойчивость. Нормы – это что-то неявное и достаточно гибкое, поэтому их легко изменить. Для того чтобы оспорить и изменить систему норм, не нужны деньги, юридические знания или технологии, хотя все это, конечно, может помочь. Наши социальные модели поведения и неявные ожидания могут быть оспорены каждым, кто готов высказаться о них и имеет для этого платформу. И такой вызов скорее поможет нормам развиваться и совершенствоваться, чем сломает их.
Устойчивость является важной концепцией, которая применима ко всему: от человеческого тела до планетарной экосистемы, от организационных систем до систем компьютерных. Это способность системы восстанавливаться после возмущений, в число которых входят и хаки.
Устойчивость – это то, почему при строительстве подвесных мостов используют натянутые тросы, а не цельнометаллические стержни: вторые разрушаются внезапно и катастрофически, а тросы рвутся медленно и громко. Именно ради устойчивости наши мозг и тело знают так много разнообразных способов адаптации к любым обстоятельствам, в которых мы оказываемся. Хорошие таксисты знают, как объехать популярные достопримечательности как минимум четырьмя маршрутами, и это тоже устойчивость. И даже то, что в округе Ориндж, штат Калифорния, функционирует окружное правительство, объявившее о своем банкротстве в 1994 г.[13], – факт, иллюстрирующий тот же принцип.
В сфере безопасности устойчивость – это эмерджентное, то есть не сводимое к сумме ее компонентов, свойство системы, которое может сочетать в себе такие аспекты, как непроницаемость, гомеостаз, избыточность, маневренность, смягчение и восстановление. Устойчивые системы более безопасны, чем хрупкие. Многие из мер безопасности, которые мы обсуждали в предыдущих главах, направлены на повышение устойчивости системы к взлому.
Здесь стоит упомянуть еще один момент. Мы говорили о защите от хакинга в основном абстрактно, однако любое обсуждение такой защиты должно ответить на несколько конкретных вопросов. Кто от кого защищается? Кто решает, полезен взлом или нет? И, самое главное, кто отвечает за безопасность и за то, насколько защитные меры стоят затраченных усилий и средств?
Примеры, которые я приводил до сих пор, были довольно простыми: за системой стоит некий человек или организация, и они же отвечают за ее безопасность. Например, руководство Microsoft решает, является ли конкретный хак Windows проблемой и как эту проблему решить. Как правило, все решается установкой патча. Если поставить патч оказывается сложно, система живет с уязвимостью какое-то время, как это было в случае с функцией автозапуска. У нас есть примеры, когда уязвимости после взлома быстро исправлялись, и есть другие, когда хаки оставляли нетронутыми, потому что защита от них оказывалась слишком дорогим удовольствием. Если потери от мошенничества меньше, чем затраты на исправление системы, то компании, обслуживающие кредитные карты, позволят мошенничеству продолжаться. Магазины часто позволяют шоплифтерам[14] уходить с украденными товарами, потому что сотрудники, пытаясь остановить их, могут пострадать физически, а ложное обвинение людей в краже – привести к дорогостоящим судебным разбирательствам.
Поскольку мы пытаемся построить социальные и политические системы, способные защищать себя от хакеров, необходимо подумать о балансе между написанием законов законодателями и их исполнением регуляторами. С одной стороны, регулирующие органы не несут прямой ответственности перед людьми в той же мере, что и законодатели. С другой стороны, мы не хотим, чтобы законодатели увязали в деталях реализации законов до их принятия. Чем больше законодательные органы могут делегировать реализацию законов регуляторам, тем более гибкой и устойчивой к взломам будет созданная система.
Защита социальных систем от хакинга – это не только проблема разработчиков данных систем. Это проблема, стоящая перед всем обществом, перед каждым, кто желает социальных изменений и прогресса в целом.