Защита систем. Чему «Звездные войны» учат инженера ПО — страница 15 из 68

Если вам не все равно и вы не нацелены на любительский рынок, где это поощряется, вам следует подумать о выявлении слабых мест в вашей системе путем вмешательства в аппаратное обеспечение и особенно в хранилище (часто расположенное на SD-карте) или в оперативную память. Охлаждение оперативной памяти баллончиком со сжатым воздухом позволяет злоумышленнику отключить ее от питания, подключить к новой системе и прочитать содержимое. Это проще, когда оперативная память не припаяна. Существует также важная повторяющаяся проблема с интерфейсами JTAG. JTAG расшифровывается как Joint Test Action Group и относится к специфическому интерфейсу для отладки и тестирования электроники. Интерфейсы JTAG часто остаются доступными после того, как устройства покидают завод, и это позволяет злоумышленникам получить все виды доступа.

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

Вмешательство в ИИ/МО

Злоумышленники, которые могут повлиять на выбор или хранение обучающих данных, могут делать все что угодно с этой выигрышной позиции. Некоторые системы пытаются обновить свои модели, обучая их в полевых условиях. Эти системы подвергаются атакам. Иногда это становится достоянием общественности, как в случае с ботом Tay AI от Microsoft, который после запуска в X (Twitter) быстро начал извергать расистскую тарабарщину. В других случаях это менее заметно. Microsoft публично заявила о загрузке вредоносных программ, разработанных, по-видимому, чтобы повлиять на системы машинного обучения, которые они используют для улучшения обнаружения [Parikh, 2018]. В работу обучающих моделей можно вмешаться там, где они используются. Когда система обучения децентрализована или федерирована, она может стать уязвимой для атак. Эти федерированные модели обучения могут быть уязвимы либо для ложных входных данных, либо для поддельных сообщений между взаимодействующими объектами.

Вмешательство в облако

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

В облаке появились новые возможности для несанкционированного доступа. К ним относятся как код, который вы получаете от других, так и код, который вы создаете сами. Код, который вы получаете от других пользователей, может включать общедоступные образы виртуальных машин, контейнеры Docker и другое программное обеспечение, которое вы используете. Кроме того, есть код, который создаете вы. И то и другое объединяется в рамках вашего собственного процесса развертывания приложений. Как общедоступное, так и частное хранилище может быть взломано. Например, когда вы получаете предварительно созданный Amazon Machine Image, насколько вы уверены в том, что люди, которые его создали и сохранили, дают вам то, что вы ожидаете? Наименее вероятным, но наиболее мощным будет злоумышленник, получивший некоторые права администратора у облачного провайдера. Не зацикливайтесь на этом слишком сильно: ваша способность повлиять на это невелика, и поставщик облачных услуг знает, насколько это может навредить его бизнесу.

Механизмы вмешательства

Обсудив вмешательство в хранилище, связь, время и процессы, а также то, как это проявляется в облаке, интернете вещей и ИИ/МО, давайте обратим внимание на некоторые из задействованных механизмов.

Место вмешательства

Существует множество механизмов, с помощью которых люди могут вмешиваться, и каждый из них требует полномочий того или иного рода. В классическом компьютерном мире наиболее важными привилегиями были запуск кода, возможность делать это в качестве администратора или администратора домена, подключение к корпоративной или физической сети. Быть подключенным к корпоративной сети означало быть «за брандмауэром», по причудливому выражению тех дней, когда существовал единый брандмауэр. Это также означало, что вы могли свободно подключаться ко всем видам ресурсов, которые были как бы частными. Подключение к физической сети означало, что вы могли видеть все проходящие пакеты, потому что они транслировались всем в сети. Имея возможность видеть их, вы также могли изменить их, по крайней мере настолько, чтобы сломать контрольную сумму, а затем отправить вместо них поддельную версию. Проводные сети, в которых когда-то использовался коаксиальный кабель, как правило, были заменены Ethernet на витой паре, с подавлением широковещательных пакетов на коммутаторе. Конечно, если вы управляете коммутатором или маршрутизатором, вы можете модифицировать все, что проходит через него.

Может показаться странным, что мы говорим о проводных сетях в сегодняшнюю эпоху мобильных телефонов и портативных компьютеров, но провода по-прежнему широко используются в сложных условиях работы, например в центрах обработки данных и в таких учреждениях, как посольства, где риск беспроводного прослушивания (или несанкционированного доступа) достаточно высок. Для этих сетей и для многих устройств интернета вещей физический доступ является важной привилегией, необходимой для несанкционированного доступа. Физический доступ традиционно защищается заборами, стенами, а иногда даже корпусами устройств. Все это часто охраняют сторожа и собаки. (Иногда это сторожевые собаки, например доберман-пинчер, а порой просто домашние питомцы, такие как кокер-спаниель.) Эти средства контроля эффективны в разной степени, а также непредсказуемы. Университеты, кафе, отели, церкви и другие гостеприимные пространства шокирующе доступны, на взгляд параноика, а наши дома открыты во время соседских общений, гаражных распродаж или при сдаче в аренду через Airbnb.

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

Наконец, может быть вмешательство в цепочку поставок. Люди, которые проектируют, производят, собирают или поставляют физические вещи, могут поставлять продукты, которые будут не совсем такими, как вы ожидаете, и большинство разработчиков программного обеспечения и инженеров по безопасности мало что могут с этим сделать. Если вы думаете, что сами сможете что-то с этим сделать, читайте The Huawei and Snowden Questions [Lysne, 2018]; в противном случае двигайтесь дальше. Наша общая неспособность создать безопасное программное обеспечение, даже когда мы этого хотим, означает, что большинству злоумышленников не нужно беспокоиться.

Существует также вмешательство в программное обеспечение. Если разработчик компилятора хочет вставить бэкдор в машинный код, создаваемый компилятором, он может это сделать. Они даже могут написать версию своего компилятора, которая распознает, что он компилирует компилятор, и вставить дополнительный код в выходной компилятор. После этого они могут удалить троянский код. Но заглядывали ли вы когда-нибудь в код GCC? Вы можете спрятать там песчаный краулер, и никто никогда его не увидит. Таким образом, удалять его практически не нужно, есть возможность просто все отрицать. Кен Томпсон говорил об этом в своей тьюринговской лекции «Размышления о том, можно ли полагаться на доверие» [Thompson, 1984].

Инструменты для вмешательства

Механизмы намеренного вмешательства варьируются от общих инструментов до специализированных. Если я вошел в систему и могу писать в файл, я могу просто открыть его в текстовом редакторе. Это работает, даже если файл не является текстом, хотя бывает сложно внести нужные изменения, так как ваш редактор может «поправить» неровности в файле. Это означает, что он может вмешиваться в ваше вмешательство. Какая наглость! Таких проблем можно избежать, используя стандартные клиенты: клиент базы данных для файла базы данных, Word для. docx, emacs для. html или gdb и windbg для процесса. Существуют также специализированные клиенты как для анализа, так и для модификации локальных файлов, некоторые из них довольно изящны, например визуализатор файлов Veles или обфускатор кода. (Что вы говорите! Обфускатор нужен не для того, чтобы изменить файл, а для того, чтобы помешать кому-то понять его? Конечно, это так, и он делает это путем вмешательства в его содержание. Считаете, что эти изменения разрешены? Послушайте, как разработчик ругается во время отладки.) Многие из этих инструментов теперь работают в веб-браузере, что не делает их менее специализированными, но снижает нагрузку на установку и настройку.

Для изменения сетевого подключения обычно требуются специализированные инструменты той или иной формы. Существуют средства, предназначенные для изменения сетевых подключений, которыми вы управляете, а также для изменения сетей злоумышленниками. Вы модифицируете свои собственные сетевые подключения, чтобы получить такие возможности, как запись или простое изменение сложных потоков (например веб-сеансов) с помощью прокси-сервера атаки OWASP Zed Attack Proxy (ZAP). Кто-то может захотеть изменить ваши сетевые подключения, как это происходит в большинстве случаев, когда вы останавливаетесь в отеле, или изменить сеть, отправив команды маршрутизации, чтобы перенаправлять весь трафик через свою систему.