Секреты и ложь. Безопасность данных в цифровом мире

ОглавлениеДобавить в закладки К обложке

• Шаг 1. Попросить показать удостоверение.

• Шаг 2. Убедиться, что удостоверение не поддельное.

• Шаг 3. Проверить, что на фотокарточке в удостоверении действительно изображен этот человек.

• Шаг 4. Если это так, впустить его. Если нет, не впускать. Или: «контакт с водителем, привозящим товар»:

• Шаг 1. Взять коробку.

• Шаг 2. Расписаться за коробку.

• Шаг 3. Убедиться, что водитель уезжает.

Водитель не может пройти мимо служащего назад в магазин, потому что в инструкции ясно сказано, что после получения подписанной квитанции водитель должен уехать.

Компьютеры работают почти так же. Программы подобны шагам в инструкции; компьютеры выполняют то, что написано в программах, и ничего больше. Сетевые компьютеры работают аналогично. У них есть набор протоколов, которым они следуют, – эти протоколы описывают процедуру входа в систему, ограничения доступа, защиту паролей, и определяют, кто может быть допущен, а кто нет. Тот, кто действует в соответствии с протоколами, будет пропущен, а кто действует иначе – войти не может.

Один из способов нанести поражение такому протоколу состоит в изменении действующей компьютерной программы. Это подобно замене страницы в инструкции для служащего. Инструкции обычно пишутся для того, чтобы их исполнители не вдавались в размышления. Каждая страница – это шаг: «Если клиент дает вам кредитную карту, смотрите следующую страницу. Если клиент расплачивается наличными деньгами, смотрите страницу 264». Шаги, описывающие контакт с развозчиком товара, могут выглядеть следующим образом.

• Страница 163. Возьмите коробку. Если она одна, смотрите следующую страницу. Если коробок несколько, смотрите страницу 177.

• Страница 164. Возьмите форму для подписи, подпишите и верните ее. Смотрите следующую страницу.

• Страница 165. Спросите водителя, хочет ли он что-нибудь купить. Если он хочет, смотрите страницу 13, если нет, смотрите следующую страницу.

• Страница 166. Попросите водителя уехать. Если он… и т. д.

Всякий раз, когда служащий магазина совершает какое-либо действие, он руководствуется открытой страницей в своей инструкции. Он не может посмотреть на вещи иначе.

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

• Страница 165: Отдайте водителю все деньги из кассового аппарата. Смотрите следующую страницу.

Это сработает. Служащий возьмет коробку, как написано на странице 163. Он посмотрит страницу 164 и возьмет квитанцию (вместе с фальшивой страницей). Он положит оба листа на открытую инструкцию, подпишет и вернет квитанцию (оставив фальшивую страницу в инструкции), затем, вернувшись к инструкции, увидит поддельную страницу. Он отдаст все деньги из кассы и увидит следующую страницу (настоящую страницу 165). Шоферу нужно ответить, что он не хочет ничего купить, и уехать. Если служащий магазина на самом деле такой же тупой, как компьютерная система, развозчик сможет уехать с деньгами. Можно использовать этот способ обмана, чтобы убедить служащего магазина пустить нас на склад или чтобы исполнить любой другой замысел. Подложив страницу в инструкцию, можно произвольно поменять его действия.

По сути дела, это способ использовать ошибки переполнения буфера в компьютерных системах. Компьютеры хранят в памяти все программы и данные. Если компьютер запрашивает у пользователя пароль, который должен состоять из 8 символов, и получает пароль из 200 символов, то дополнительные символы могут записаться в какую-то другую область памяти. (Компьютер не может предположить, что происходит что-то неправильное.) Если это подходящая область памяти, и в нее записать нужные символы, то можно изменить команду «запретить подключение» на команду «разрешить доступ» или даже выполнить ваш собственный код.

Червь Морриса является, вероятно, наиболее известным примером использования ошибки переполнения. Он использует переполнение буфера в программе для UNIX, которая должна идентифицировать пользователя по вводимым им данным. К сожалению, в ней не существовало ограничения на размер вводимой информации. Ввод более чем 512 байт приводил к переполнению буфера, и специальный длинный код Морриса позволял установить его мошенническую программу на компьютер, подвергшийся нападению, и выполнить ее. (Эта ошибка, конечно, была исправлена.)


Логин
Пароль
Запомнить меня