Buch lesen: «Защита систем. Чему «Звездные войны» учат инженера ПО»
© Беленкович В. М., перевод на русский язык, 2025
© Манжавидзе Д. Ю., иллюстрация на обложку, 2025
© Оформление. ООО «Издательство «Эксмо», 2025
Об авторе
Адам Шостак – ведущий эксперт по моделированию угроз. Он также является дизайнером игр, выступает в роли консультанта и судебного эксперта. Много лет он посвятил разработке безопасных продуктов и систем. В мире бизнеса диапазон его опыта охватывает самые разные области, от основания стартапов до почти десяти лет работы в Microsoft.
Ниже перечислены некоторые из его достижений.
• Помог создать CVE (Common Vulnerabilities and Exposures, база данных общеизвестных уязвимостей информационной безопасности); в настоящее время является почетным членом ее консультативного совета.
• Исправил автозапуск для Windows XP и Vista.
• Руководил разработкой и реализацией инструмента моделирования угроз Microsoft SDL (v3).
• Создал игру по моделированию угроз Elevation of Privilege и участвовал в создании игры Control-Alt-Hack.
• Автор книги Threat Modeling: Designing for Security («Моделирование угроз: проектирование для обеспечения безопасности») и соавтор книги The New School of Information Security («Новая школа информационной безопасности»).
Помимо консультирования и преподавания, Шостак выступает в качестве советника многих компаний и академических учреждений. Он является аффилированным профессором в Школе компьютерных наук и инженерии имени Пола Г. Аллена при Вашингтонском университете.
Подробнее о нем можно узнать на сайте shostack.org.
Благодарности
Эта книга была бы совершенно иной, если бы Джордж Лукас не придумал свой потрясающий и многогранный мир и если бы команда и актерский состав «Звездных войн» не воплотили его в жизнь. Если бы эта первая команда не вникала в детали, мы могли лишиться очень многого.
Эта книга – результат пятилетней миссии «Как объяснить инженеру, что такое безопасность». В 2017 году один джентльмен из Купертино задал мне простой вопрос: «Где я могу узнать больше об этих угрозах?» Я не записал его имя, но, если вы читаете этот текст, спасибо за вопрос, и извините, что так долго не отвечал.
В процессе исследований я говорил с сотнями людей о том, что «должен знать каждый инженер». Я хочу поблагодарить их всех за вклад в создание этой книги. А все ошибки, которые остались, принадлежат мне.
Моя замечательная команда преподавателей из Shostack + Associates (Валерий Берестецкий, Джейми Дикен и Кэролайн Эммотт) также прочитала весь черновик (иногда не по одному разу) и помогла убедиться, что многое из того, чему мы научились у наших студентов, вошло в книгу и что на многие вопросы, которые они задавали, даны ответы.
Параллельно с написанием книги я также работал над набором курсов в LinkedIn Learning. С командой, в которую в том числе входили Алисса Пратт, Рэй Хойт и Эндрю Проберт, у нас сложились теплые отношения, они поддерживали и наставляли меня на протяжении всего этого времени. Работа с ними над набором курсов по STRIDE одновременно с работой над книгой помогла улучшить и то и другое.
Лорен Конфельдер сделала больше, чем просто создала мнемоническую схему STRIDE (вместе с Преритом Гаргом), которая легла в основу этой книги. Она также прочитала бóльшую часть этой книги в черновом варианте, и я высоко ценю наши долгие беседы о деталях, а также о структуре.
Дин Триббл и Джонатан Шапиро напомнили мне о работе Марка Миллара «Власть» (Authority) как о способе выхода из беспорядочных размышлений о привилегиях и разрешениях. Этот ужас мог положить конец всей затее. Точно так же глава о синтаксическом анализе стала намного понятнее и богаче, когда я прочитал работу сообщества LangSec. Джефф Уильямс вдумчиво просмотрел первые черновики. Изар Тарандах внимательно прочитал текст, хотя его книга отчасти конкурирует с моей. Джим Белл объяснил, как космические аппараты на Марсе отслеживают время.
Некоторые из первых улучшений относились к тексту, который изменился настолько, что эти улучшения больше не видны. Я чрезвычайно благодарен этим людям, потому что они помогли книге не очень заметным, но очень важным образом: Майкл Ройтман предложил форматы дат для устойчивости канонизации, и их гораздо легче анализировать, чем мои примеры URL-адресов. Ким Вуйтс помог с определением предсказуемости и ее воздействии на неприкосновенность частной жизни.
Спасибо также Джону Калласу, Крису Энгу, Марку Френчу, Тому Гэлхагеру, Шону Эрнану, Джеффу Джармоку, Аррону Джонсону, Кристофу Клаассену, Лаки Манро, Даниэлю Остермайеру, Яну Пойнтеру, Джону Пулену, Моргану Роману, Ананту Шривасте, Пелеусу Ули, Таре Уилер и Чарльзу Уилсону.
Дуг Барнс, адвокат и киберпанк, был тем другом, который написал фразу «Включать в свои протоколы этап „а потом появляются полицейские“ – это сомнительная идея», цитируемую в главе об отказе от ответственности. Предложение и абзац были сложными, и поэтому я благодарю его здесь.
Неоднократно авторы использовали «Звездные войны» для иллюстрации своих теорий: The Ultimate Star Wars and Philosophy («Путеводитель по „Звездным войнам“ и философия») [Wiley, 2015], «Звездные войны. Психология киновселенной» (Star Wars Psychology) [Sterling, 2015] и «Мир по „Звездным войнам“» (The World According to Star Wars) [Sunstein, 2016]. Я многому научился у каждого из них и использую «Звездные войны» более целенаправленно и детально благодаря тому, что они указали мне путь. Келлман Мегу отметил, что в сцене перед появлением Дарта Вейдера имперские войска проводят довольно серьезное совещание по реагированию на вторжение, но я не нашел способа включить это в текст. И, говоря о содержании «Звездных войн», я особенно хочу поблагодарить читателей, которые не очень с ним знакомы: они отметили места, где я переусердствовал с погружением в тему. Они предпочли остаться анонимными, хотя ни в чем меня не подвели.
И последнее, но не менее важное: я хочу поблагодарить мою команду в издательстве Wiley. Джима Минателя за то, что он снова и снова задавал провокационные вопросы, пока я не сообразил, что пишу что-то не то, а затем советовал, как написать книгу, которая опирается на любимую вселенную. Келли Тэлбот – фантастический редактор проектов, принимавшая все проблемы с юмором. Ким Уимпсетт тщательно отредактировала все, что было необходимо, и исправила то, что не стоит называть. Кстати, о неназванных: было много людей, с которыми мне так и не довелось встретиться. Подобно безымянным повстанцам, которые так часто появляются на заднем плане, вы помогли сделать общее дело.
Адам Шостак
Предисловие
Откуда R2-D2 знает, кто такой Бен Кеноби? Как он принимает решение воспроизвести запись принцессы Леи Бену, а не Люку? Как принцесса Лея сообщает R2 о своих намерениях? Эти три вопроса затрагивают фундаментальные аспекты безопасности: аутентификацию, авторизацию и дизайн пользовательского интерфейса (usability). (Фанаты узнаю´т ответ на первый вопрос из приквелов, но Лея его не знает.) Более того, использование компьютеров и технологий в мире «Звездных войн» может стать знакомой основой для изучения работы технологий в нашем мире.
Я был фанатом «Звездных войн» до того, как написал первую строку кода, и задолго до того, как взломал первую систему. Когда я стал экспертом по компьютерной безопасности, мне стало ясно, что мы в силу своей деятельности много лучше пишем код, чем истории, и хотя так и подмывает сказать: «Потому-то у нас ничего не получается», рассказывать истории получше – не единственная наша надежда. Когда я думал о «Звездных войнах», я понял, что сразу после титров камера показывает нам корабль принцессы Леи, который преследуют из-за… украденной запись с данными! Я понял, что «Звездные войны» – это не только история героического путешествия Люка и его взросления, но также история о раскрытии информации и последствиях этого. Последние десять лет я использовал «Звездные войны», чтобы рассказывать истории о компьютерной безопасности, потому что эпические истории дают нам опорные точки и иллюстрируют важные проблемы.
В этой книге почти все ссылки – на оригинальную трилогию. Есть материал, для которого я мог бы использовать и «Изгой-один», и приквелы, и сиквелы, и телевизионные сериалы, книги и так далее. Но я предполагаю, что большинство читателей смотрели и пересматривали только три эпизода оригинальной трилогии: «Звездные войны: Новая надежда», «Империя наносит ответный удар» и «Возвращение джедая».
Как Cила является свойством каждого живого существа, так и безопасность – это свойство всех технологических систем. И так же, как Cила имеет две стороны – светлую и темную, у безопасности есть защита и атаки. Эта книга в основном про атаки, угрозы, проблемы. Вы должны понимать, в чем угроза, прежде чем выберете подходящую защиту. Сцена, когда император Палпатин пускает в Люка Скайуокера фиолетовые молнии Cилы, очень драматична, но, если бы Люк был лучше подготовлен, он бы мог распознать угрозу и понять, как лучше от нее защититься. Ни межсетевой экран, ни список доступа не блокируют молнии Cилы.
Если вы хотите сделать свой дом безопасным, вам необходимо подумать о множестве вещей, которые могут причинить вред. Некоторые из них природного происхождения (наводнение), некоторые могут быть и природными, и рукотворными (пожар), а некоторые (воровство) являются действиями разумных существ.
У нас есть неявные модели того, что такое дом, типы домов и общие типы проблем. Эти проблемы могут немного отличаться: на Великих равнинах США – торнадо, в Юго-Восточной Азии – муссоны, на Ближнем Востоке – песчаные бури. Можете попросить список у вашего страховщика. (Они будут в разделах «Дополнительные услуги» и «Исключения».)
Наши неявные модели того, как устроены технические системы, слабее. Технологии разнообразнее и меняются быстрее, чем наши дома или офисные здания. Трехуровневая архитектура не похожа на микросервисы. Развертывание микросервисов в облаке отличается от виртуальных машин, созданных всего лишь лет десять тому назад.
У создателей и защитников технологий есть недостаток: очень трудно не думать о том, как заставить систему работать. Мы все знаем, что сделать это непросто. Что есть уступки и компромиссы, на которые приходится идти, чтобы заставить код работать, доставить его клиентам и даже развернуть его.
В области безопасности есть традиционный призыв: «Думай как злоумышленник!» А это непросто. Я же призываю людей думать как профессиональный шеф-повар, который планирует рассадку сотни обедающих этим вечером. Многие из нас не представляют, с чего начать. Однако мы не обязаны думать как злоумышленники, чтобы получить различные точки зрения на системы, над которыми работаем.
Безопасность также отличается от других потенциальных проблем, потому что нападающие разумны, они умеют учиться и адаптироваться. Представим действия человека, который планирует украсть ваш музыкальный центр. Он может проникнуть за закрытую дверь самыми разными способами: выбить дверь, отжать язычок замка, подобрать отмычку или просто украсть ключ. Некоторые злоумышленники используют уязвимости: у замка может быть слабая наружная накладка, которую легко просверлить из-за дефекта литья. Некоторые используют ошибки проектирования: у замка всего несколько штифтов, поэтому подобрать отмычку легко. Воры могут обойти нашу защиту и залезть в окно. В технологических системах диапазон атак кажется бесконечным и, возможно, непознаваемым – далее в книге мы решим эту проблему.
Одна из причин того, что нам не удается создать защищенные системы, заключается в том, что нападающие обладают огромными преимуществами. Они могут изучить объект нападения, запланировать атаки и запускать их только тогда, когда чувствуют себя уверенно. Они могут делать что захотят, чтобы получить контроль над системой, заставить ее вести себя неправильно или поставить в неловкое положение ее создателя. И кое-что из того, что делают нападающие, действительно очень умно, и все, что они делают, – неожиданно. Это крайне важно. В прекрасном небольшом видео The Death Star Architect Speaks Out («Архитектор „Звезды смерти“ высказывается») архитектор говорит: «Этот выстрел был буквально невозможен без приложения магических сил. Если бы кто-то сказал мне учитывать космических волшебников при проектировании газоотводной шахты, возможно, у нас все еще была бы „Звезда смерти“».
Он дело говорит. Слишком часто исследователи безопасности становятся известными из-за того, что указывают недостатки в уже готовых системах… как инженеры, не знающие, что торпеда не может просто так пролететь сотни миль по трубопроводам – турбулентность собьет ее с курса. Как будто бы эксперты по безопасности тебя судят и на каждый вопрос отвечают, закатывая глаза и повторяя: «Прислушайся к своим ощущениям». Но в этой книге мы сосредоточимся на важных угрозах.
Эксперт по безопасности и писатель Брюс Шнайер однажды признался: «Когда я посещал Агентство национальной безопасности (АНБ), я попросил сотрудников показать мне „Большую книгу атак“. Они мне ответили, что нет одного такого места, где все атаки были бы описаны». Упущение, которое мы намерены исправить. Это важно, потому что «атаки» легче понять, если есть их заранее подготовленный список. Это не попытка классифицировать каждую атаку или сделать список исчерпывающим. Подобное могло бы вас удивить или даже обеспокоить. Однако реальность такова, что проблемы безопасности – это нарушения требований безопасности. Требования для разных систем разные. Следует ли мне учитывать нарушения требований к ядерным бомбам или к печати денег? («Активировать систему может менее двух человек» или «Другой потребитель может использовать такое же бумажное сырье».) Такая полнота не позволит сразу выявить наиболее распространенные атаки и затруднит быстрое определение угроз, которые могут вдохновить вас, позволить вам рассуждать по аналогии и обнаружить атаки на ваши собственные системы. Вся загвоздка в понимании угроз, и до сих пор понимать их было непросто.
Кто-то однажды написал: «Все интересные системы удивляют своего создателя». Это свойство, которое переводит их из полезных в интересные. Проблемы безопасности – это часто сюрпризы. Они используют не только существующие ошибки, но и неспособность архитекторов разработать защиту.
Внимание человека – это суровый хозяин. Трудно воспринять то, чего ты не замечаешь. Мое намерение каталогизировать общие проблемы – это попытка показать, на что нужно обращать внимание. Что нужно рассмотреть, собрать, организовать и представить, чтобы получить некоторую ясность, как выглядит набор вещей, которые «нужно учитывать». Если то, о чем написано в этой книге, проигнорировано, вероятно, следует говорить об ошибке инженера. Это не значит, что мы провозглашаем: «Все остальное игнорировать можно». Точно так же, как пилот должен посадить самолет, а не просто выполнить все пункты обязательных инструкций, или хирург должен вылечить пациента, а не сделать все по порядку, так и то, что следует учитывать, не ограничивается содержанием страниц этой книги.
Внимание человека – и правда суровый хозяин. Даниэль Канеман, лауреат Нобелевской премии и основатель поведенческой экономики, в своей чудесной книге «Думай медленно, решай быстро» (Thinking Fast and Slow) использует один единственный акроним: WYSIATI. What You See Is All There Is (Что ты видишь, то и есть). Важность того, что прямо перед нами, так велика, что она вытесняет наши попытки «оставаться в курсе» и «держать в уме». И все же, как инженер, вы должны делать именно это – держать в уме надежность, производительность, дизайн интерфейсов, эксплуатационные характеристики и великое множество других свойств. У нас есть набор инструментов для того, чтобы управиться с такими вещами, включая автоматизацию, контрольные списки и оценку команд специалистов разного профиля.
При написании этой книги я иду на определенный компромисс и предполагаю, что методы защиты известны и понятны или, по крайней мере, могут быть поняты, как только вы поймете угрозы. Поэтому я сосредоточусь на угрозах и защиты буду касаться только вскользь. Я вынужден пойти на это, чтобы сделать книгу короче и доходчивее.
Введение
Очень многому я учусь у моих студентов. Когда я слышу вопросы, которые они задают, и читаю работы, которые они сдают, я узнаю´, с какими трудностями они встретились, обеспечивая безопасность своих систем. Тому, что я знаю об угрозах, я обязан десятилетиям карьеры, нескольким мудрым учителям и множеству совершённых ошибок. Как я упоминал в разделе «Благодарности», появление этой книги простимулировано простым вопросом «Где я могу узнать больше об этих угрозах?».
Подобно тому, как говорят: «Я чувствую, что в нем есть что-то хорошее» – я чувствовал этот вопрос во многих разговорах. За словом «безопасность» скрывается немало сложностей и нюансов. Я собрался было сказать, что мы узнаём об угрозах благодаря постепенному осознанию, но это неправда. Мы скорее узнаём об угрозах, когда что-нибудь идет не так. Даже когда это «что-нибудь» размером меньше, чем «Звезда смерти», уроки часто бывают травматическими, иногда меняющими карьеру. Трагедия – плохой учитель.
Если мы хотим систематического исследования угроз нашим продуктам, мы должны структурировать то, как мы узнаём об угрозах и как мы учим этому.
Для кого эта книга
Эта книга – для каждого инженера.
Она будет наиболее полезна тем, кто строит или использует сложные системы, насыщенные программным обеспечением. В инжиниринге иногда приходится идти на тяжелые компромиссы, которые становятся еще тяжелее, когда цели обеспечения безопасности неясны или расплывчаты. Книга сфокусирована на системах, которые включают код, но где его нет в наше время? Инженеры, которые работают в более традиционных отраслях (аэрокосмическая, химическая, гражданское строительство, машиностроение), обнаруживают, что элегантные механические системы прежних времен сейчас вытесняются. Ваши системы теперь просто обязаны иметь дело с кодом, и вы должны заниматься его безопасностью.
За последние несколько десятилетий профессия разработки программного обеспечения и эксплуатации систем изменилась. Мы поняли, что надежды со временем дооснастить системы свойствами доступности, надежности и удобства использования дорого нам обходятся и что необходимо внедрять эти свойства с самого начала. С безопасностью то же самое. Выбор, сделанный во время разработки системы, имеет последствия. Необходимо более раннее и целостное решение проблем безопасности.
Эта книга – для профессионалов и энтузиастов в сфере безопасности. Есть множество направлений в разных отраслях, которые ориентированы на безопасность и взломы. Не во всех из них существует обширная структура, помогающая организовать поток информации об угрозах, уязвимостях и эксплойтах, с которыми вы можете столкнуться. Я надеюсь, что моя книга будет полезна и в таких случаях.
Это книга – для каждого инженера, даже если он не поклонник научной фантастики, а если поклонник, то все равно, к какому фандому он принадлежит. Когда я рассказываю о своей книге, поклонники «Звездного пути» выглядывают из туманностей, чтобы спросить: «Почему?» Я тоже люблю «Путь». Мне нравится оптимистический взгляд на будущее, уважительное отношение создателей сериала к науке и профессиональной компетентности, а также сценарий и развитие характеров. Изначально в рукописи было посвящение «Смело защищать то, что еще не защищал ни один человек!» как дань уважения «Звездному пути». Моя команда сказала, что это слишком резко для начала книги, и они были правы.
Какую пользу принесет вам эта книга
Безопасность.
Более конкретно, вы достигнете понимания безопасности такими способами, которые позволят вам строить и эксплуатировать системы, способные работать несмотря на происки врагов. Подобно тому, как понимание силы (в смысле массы, умноженной на ускорение) позволяет нам думать о различных частях мира и применять ее в своих проектах, эта книга обеспечивает вас долговечной основой для прогнозирования угроз.
По традиции здесь приводят бесконечный список просчетов в безопасности в надежде мотивировать читателей. Не похоже, что это помогает, так что я даже не буду начинать. В 2023 году главный вопрос безопасности больше не «Почему?». Теперь это «Что?» и «Как?».
Несколько слов для неинженеров
Эта книга написана для инженеров: людей, которые строят или эксплуатируют сложные технические системы, в особенности алгоритмы, микросхемы, датчики и исполнительные механизмы этих систем. Она написана так ясно, насколько это возможно в разумных пределах, и, если вы не технарь и просто ищете рекомендации, я хочу посоветовать вам сделать три вещи.
Во-первых, включите автоматические обновления для всего, особенно для устройств, операционных систем и веб-браузеров. Подготовленные инженерами обновления очень часто исправляют проблемы безопасности, которые могут быть использованы автоматически. Если ваш поставщик смешивает функциональные изменения и исправления, касающиеся безопасности, громко жалуйтесь. Но этот шаг – решающая защита от подобных уязвимостей.
Во-вторых, используйте менеджер паролей и доверьте ему создавать для вас сложные произвольные пароли. Одна из разновидностей нарушения безопасности – это когда с веб-сайта крадут ваш адрес электронной почты и пароль. Организаторы атак собирают эти списки и торгуют ими, а также проверяют эти комбинации на каждом сайте, до которого могут дотянуться. Они также перебирают варианты. Они знают, что мой пароль для Amazon может быть adamamazon или amazonas1, а компьютеры очень хороши в подборе такого типа комбинаций, наряду с amazon-feb и другими, о которых вы могли подумать. Используйте длинные произвольные последовательности в качестве паролей. Между прочим, я использую в качестве менеджера паролей 1Password компании Agilebits и могу его рекомендовать. (У нас нет деловых отношений с этой компанией.)
В-третьих, доверяйте вашим ощущениям. Если вы чувствуете, что сайт небезопасен, покиньте его. Найдите компанию с помощью поиска или закладки. Если вы думаете, что адрес электронной почты подозрителен, позвоните человеку или организации, от имени которой послано письмо. Используйте номер телефона на обратной стороне вашей банковской карты, чтобы позвонить в банк. В каждом из этих случаев вы сохраняете контроль и используете ресурсы, на которые атакующие не могут повлиять.
Возможно, злоумышленники смогут даже подменить банковскую карту в вашем бумажнике. Если они такие умные, обратитесь за профессиональной помощью. Это не сарказм. Если против вас шпионское агентство, у которого достаточно времени и энергии, чтобы подделать карту и засунуть ее в ваш бумажник, эти советы вас уже не спасут.
Еще два возможных шага, если хотите дополнительной безопасности. Во-первых, заведите особые адреса электронной почты для особых отношений. Заведите адрес типа hiufd-suapre8wafdsjkf@gmail.com и используйте его для банка или всех ваших банков. Это защитит вас, если атакующие завладеют вашим главным почтовым аккаунтом, и поможет отсортировать почту с фишингом. Если вы используете этот адрес только для вашего банка, то любое сообщение от банка в основном аккаунте автоматически становится подозрительным. Смотрите выше замечание о том, что стоит доверять ощущениям.
Наконец, я использую отдельный браузер и профиль пользователя в браузере для онлайн-банкинга. Программное обеспечение браузеров в наше время достаточно надежно, но со всеми этим атаками я чувствую себя более защищенным, используя для этого малоиспользуемый браузер. (В настоящее время один из моих браузеров – Firefox, а другой – Chrome. Когда-то это были два разных аккаунта в Firefox с очень разным визуальным оформлением.)
Это все. Вот мои советы. Спасибо за то, что купили эту книгу. Буду рад, если вы ее прочитаете или передадите технарю или начинающему технарю, которого знаете. В любом случае я буду предполагать, что мой читатель технически подкован, поэтому мы будем говорить на двоичных языках, которые пронизывают ткань как далекой-далекой галактики, так и нашего собственного мира.
Позвольте привлечь ваше внимание к принципу, который лежит в основе этих советов: изоляция. Менеджер паролей изолирует сайты друг от друга, то же самое делает использование двух разных почтовых аккаунтов или двух браузеров. Уход с сайта или звонок в банк позволяют покинуть место атаки. Эта изоляция, отделение частей системы друг от друга, – также причина того, что у нас есть разные учетные записи компьютеров, файрволы и другие методы защиты.
Конечно, за каждый уровень изоляции нам приходится платить удобством. Если вы не позволяете программному обеспечению беспрепятственно взаимодействовать друг с другом, это означает, что вам придется предпринимать определенные усилия, чтобы оно взаимодействовало, и злоумышленникам нужно будет как-то обманом заставить вас сделать это.
Печально, но этот совет вы услышите не от каждого. Нам недостает информации о коренных причинах и истории инцидентов, которые помогли бы нам расставить приоритеты. Об этой проблеме я пишу в другом месте и не буду углубляться в нее в этой книге.
Терминология безопасности
У вас в руках книга об угрозах. Мы все узнаём угрозу, когда слышим: «Гони деньги, не то получишь!» или «Я изменил условия сделки. Молитесь, чтобы… в последний раз». Я использую термин «угроза», имея в виду некоторую будущую проблему, которую часто можно предотвратить, если принять профилактические меры.
В отрасли безопасности слово угроза используется по-разному. Мы называем злоумышленника угрозой или носителем угрозы. В той части отрасли, где занимаются защитой от вредоносного программного обеспечения, угрозой называют каждый вирус или фрагмент вредоносного кода.
Исполнение угрозы – это нападение. Каждая угроза, ее проявление и ее воздействие могут вызывать беспокойство. В законе реальная угроза рассматривается как насилие; ударить кого-то – это «избиение» в словосочетании «нападение и избиение». Это может привести к травме. В кибербезопасности мы часто беспокоимся и об угрозе, и о ее результате. Если кто-то совершает взлом под видом законного пользователя (spoofing), возможно образование по цепочке других угроз, таких как фальсификация или раскрытие информации. Особенно на этапе обучения полезно установление конкретной взаимосвязи между механизмом и воздействием. Риск – это количественное уточнение угрозы, и эти количественные измерения часто включают вероятность успеха и объем последствий, выраженный в долларах или в жизнях.
Злоумышленники используют некоторое средство для получения выгоды от использования уязвимости. Средством эксплуатации уязвимости или просто эксплойтом называют код, который дает использующему его сделать что-либо, что хозяин системы предпочел бы предотвратить. Эксплойт можно применить для намеченной цели. Уязвимость – это либо специфическая проблема (ошибка) в коде, оплошность, допущенная из-за неполного учета проектных требований, либо результат компромисса, сделанного дизайнерами или эксплутационниками. Иногда конкретика вносит ясность, в других случаях она доводит до педантизма.
В компьютерной безопасности широко используют термин доверие (trust), и он легко может сбить с толку. В обычном языке доверие означает «твердую веру в чью-нибудь надежность, честность или способность». Заслуживающий доверия означает кого-то, кто соответствует этим ожиданиям. В компьютерной безопасности доверенный означает нечто способное нарушить вашу безопасность. Профессор Росс Андерсон из Кембриджского университета приводит пример: «Шпион, пойманный на продаже секретов, был доверенным, но не заслуживающим доверия». Другие указывают на то, что это слово часто используется в пассивном залоге или с оруэлловской интонацией. Выражение доверенная система (trusted system) не может сообщить нам, кто доверяет системе. Галактическая Империя часто помечала системы как «доверенные», чтобы не обсуждать их воздействие на людей, которых они касались.
Афоризмы
Есть несколько мудрых выражений, которыми бы я хотел поделиться, поскольку они могут широко использоваться в вашей работе, связанной с безопасностью.
«Атаки становятся только лучше; они никогда не становятся хуже». Брюс Шнайер утверждает, что так поговаривают в Агентстве национальной безопаснасти (АНБ) США. Хотя защита развернута, уроки атаки никогда не забываются. Инструменты, разработанные для ее проведения, не пропадают. Они оттачиваются и шлифуются.
«Теории безопасности возникают из теорий незащищенности», – сказал Рик Прото из АНБ. Атаки становятся лучше, а совокупность атак определяет то, что мы вообще думаем о безопасности.
«Все модели неправильны; некоторые модели полезны». Слова британского статистика Джорджа Бокса.
«Компьютерная безопасность – это извращение. Когда вы хотите, чтобы что-нибудь было трудным, это легко, а когда вы хотите, чтобы что-нибудь было легко, это трудно». (Автор я.) Рассмотрим удаление файла. Когда вы действительно хотите, чтобы файл исчез, это трудно сделать, а когда вы хотите его восстановить, это на удивление сложно. Сложно заставить файл исчезнуть, потому что его удаление обычно означает просто удаление ссылок в файловой системе. Если вы попробуете переписать биты на магнитном диске, окажется, что физические записи на диске различаются по размеру и поэтому их можно прочитать и после перезаписи. А флеш-накопители вообще делают почти невозможным создание записи в том же самом физическом месте. Сходным образом легко найти случайность, когда вы хотите предсказуемости. Компьютеры кажутся непредсказуемыми, и часто встречаются гейзенбаги (ошибки, которые то появляются, то исчезают, или меняют свои свойства при попытке отладки), но вы попробуйте написать безопасный генератор случайных чисел.
«Злоумышленники будут использовать свой бюджет так, как они хотят, а не так, как вы надеетесь». (Опять я.) Вы можете надеяться, что атакующие будут себя вести неким определенным образом, но тогда они бы не были злоумышленниками.
«Безопасность – это системное свойство». Неясно, кто первым это сформулировал. Это справедливое заявление, и означает оно, что безопасность системы часто ограничена слабыми звеньями. Эта книга поможет вам удалить эти слабые звенья.
«Работает то, что доставлено». Это общее изречение в Microsoft. Все новые возможности, которые вы разработали, не имеют никакой ценности, пока не используются вашими потребителями, так что задержка ради добавления нескольких дополнительных возможностей часто неразумна. Аналогично задержка в сдаче разработки в надежде достижения идеальной безопасности означает, что никто не может использовать разработанные вами новые возможности. Я должен сейчас принять такое же решение о сдаче этой книги: я надеюсь, что ее достоинства перевешивают ее недостатки.