У нас есть неявные модели того, что такое дом, типы домов и общие типы проблем. Эти проблемы могут немного отличаться: на Великих равнинах США – торнадо, в Юго-Восточной Азии – муссоны, на Ближнем Востоке – песчаные бури. Можете попросить список у вашего страховщика. (Они будут в разделах «Дополнительные услуги» и «Исключения».)

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

У создателей и защитников технологий есть недостаток: очень трудно не думать о том, как заставить систему работать. Мы все знаем, что сделать это непросто. Что есть уступки и компромиссы, на которые приходится идти, чтобы заставить код работать, доставить его клиентам и даже развернуть его.

В области безопасности есть традиционный призыв: «Думай как злоумышленник!» А это непросто. Я же призываю людей думать как профессиональный шеф-повар, который планирует рассадку сотни обедающих этим вечером. Многие из нас не представляют, с чего начать. Однако мы не обязаны думать как злоумышленники, чтобы получить различные точки зрения на системы, над которыми работаем.

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

Одна из причин того, что нам не удается создать защищенные системы, заключается в том, что нападающие обладают огромными преимуществами. Они могут изучить объект нападения, запланировать атаки и запускать их только тогда, когда чувствуют себя уверенно. Они могут делать что захотят, чтобы получить контроль над системой, заставить ее вести себя неправильно или поставить в неловкое положение ее создателя. И кое-что из того, что делают нападающие, действительно очень умно, и все, что они делают, – неожиданно. Это крайне важно. В прекрасном небольшом видео The Death Star Architect Speaks Out («Архитектор „Звезды смерти“ высказывается») архитектор говорит: «Этот выстрел был буквально невозможен без приложения магических сил. Если бы кто-то сказал мне учитывать космических волшебников при проектировании газоотводной шахты, возможно, у нас все еще была бы „Звезда смерти“».

Он дело говорит. Слишком часто исследователи безопасности становятся известными из-за того, что указывают недостатки в уже готовых системах… как инженеры, не знающие, что торпеда не может просто так пролететь сотни миль по трубопроводам – турбулентность собьет ее с курса. Как будто бы эксперты по безопасности тебя судят и на каждый вопрос отвечают, закатывая глаза и повторяя: «Прислушайся к своим ощущениям». Но в этой книге мы сосредоточимся на важных угрозах.

Эксперт по безопасности и писатель Брюс Шнайер однажды признался: «Когда я посещал Агентство национальной безопасности (АНБ), я попросил сотрудников показать мне „Большую книгу атак“. Они мне ответили, что нет одного такого места, где все атаки были бы описаны». Упущение, которое мы намерены исправить. Это важно, потому что «атаки» легче понять, если есть их заранее подготовленный список. Это не попытка классифицировать каждую атаку или сделать список исчерпывающим. Подобное могло бы вас удивить или даже обеспокоить. Однако реальность такова, что проблемы безопасности – это нарушения требований безопасности. Требования для разных систем разные. Следует ли мне учитывать нарушения требований к ядерным бомбам или к печати денег? («Активировать систему может менее двух человек» или «Другой потребитель может использовать такое же бумажное сырье».) Такая полнота не позволит сразу выявить наиболее распространенные атаки и затруднит быстрое определение угроз, которые могут вдохновить вас, позволить вам рассуждать по аналогии и обнаружить атаки на ваши собственные системы. Вся загвоздка в понимании угроз, и до сих пор понимать их было непросто.