Секреты и ложь. Безопасность данных в цифровом мире
Шрифт:
Отправляя браузеру cookies, а затем запрашивая их обратно, сервер как бы вспоминает, кто вы. «А, конечно, вы – пользователь 12467, вот ваша корзина». Cookies позволяют браузеру добавлять возможность идентификации к протоколам Интернета. Это выглядит, как огромная рассредоточенная база данных, фрагменты которой хранятся в миллионах браузеров.
До сих пор я рассказывал о пользе cookies. Они, главным образом, полезны, если сервер, их разместивший, играет по правилам. Сервер устанавливает, сколько времени действителен cookie: хорошее значение – несколько дней. Сервер может установить ограничения на доступ к cookie. Сервер может ограничивать доступ к другим серверам в том же домене; это значит, что если ваш cookie пришел с inchoate-merchant com, то только inchoate-merchant com может иметь к нему доступ.
Проблемы возникают при нарушении правил
Еще более серьезные проблемы вас ожидают, если вы оставите свой электронный адрес на каком-то из этих сайтов, а они отошлют эту информацию в DoubleClick. Все, что от вас требуется – один раз набрать этот адрес, заказать одну-единственную вещь, и он останется у них навечно. (Или до окончания срока cookies, что может затянуться на годы.)
Такие действия не являются большим секретом. DoubleClick открыто признает, что собирает данные и использует их, чтобы направлять рекламу определенным пользователям. До 2000 года они отрицали создание идентификационных баз данных, но в конце концов признали это после сообщения в USA Today. С тех пор они отступили от идеи связывать cookies с именами и адресами. (Хотя, возможно, выплывут новые факты в результате какой-нибудь публикации.)
Идем дальше. Сайты способны послать вам по электронной почте cookie, при помощи которого они могут вас идентифицировать, если вы позже посетите этот сайт. Вот как это работает: сайт посылает вам сообщение в формате HTML. (Это предполагает, что вы пользуетесь программами для электронной почты, поддерживающими сообщения HTML; среди таких программ – Microsoft Outlook и Outlook Express, Netscape Messenger и Eudora.) Сообщение содержит уникальный URL, скрытый графикой, который сайт может использовать, чтобы послать вам cookie. Если URL имеет вид www gotcha com/track-cgi=schneier@counterpane com/pixels gif, значит, у них в cookie – ваш адрес электронной почты. Тогда, если вы просматриваете сайт в какой-то последующий день, сайт может по cookie определить ваш адрес электронной почты и отследить ваши перемещения в Интернете.
Сами cookies не умеют осуществлять активных действий. Они не могут похитить информацию из вашего компьютера. Cookies – это просто некоторые данные, которые сервер сообщает браузеру, а браузер позже возвращает. Cookies не могут украсть у вас пароли или файлы. (ActiveX, Java и JavaScript в этом отношении гораздо более опасны.) Cookies не в силах похитить номера ваших кредитных карт, но может оказаться так, что «глупые» сайты включат в cookie номер вашей кредитной карты.
Из всего вышесказанного можно сделать вывод, что cookies – по своей сути полезный инструмент, но при неумелом обращении они могут работать на злоумышленников. Это простейший способ, позволяющий веб-программистам контролировать взаимосвязи. Большинство браузеров допускают полное отключение cookies, можно купить дополнительные программы, позволяющие лучше управляться с ними. Хотя некоторые сайты – например, Hotmail и Schwab Online – не соединяются с браузерами, не принимающими cookies.
Мишенью всех атак, рассмотренных выше, является компьютер пользователя, а сейчас речь пойдет об атаке, направленной на сервер.
Общий шлюзовый интерфейс (Common Gateway Interface, CGI) – это стандартный способ, которым веб-сервер передает запрос клиента размещенным на нем приложениям и отсылает ответ пользователю. Если вы посылаете поисковый запрос на веб-сайт – например, на сайт розничной электронной торговли, –
Сложности при работе со сценариями CGI в том, что каждый из них – потенциальная прореха в системе безопасности. Манипулируя сценариями CGI, можно совершать самые неожиданные веши. Вот ряд примеров (все они действительно имели место): загрузка файла с веб-сервера, просмотр всего содержимого базы данных, загрузка списка покупателей и их персональных записей, кража денег у клиентов электронного банка, торговля чужими контрольными пакетами акций и просмотр системных журналов веб-сервера, в которых записаны договоры клиентов.
Другие похожие атаки проводятся путем помещения исполняемого кода (обычно сценарии Perl или код JavaScript) в текстовые поля. Таким путем можно заставить веб-сервер внести изменения в домашнюю страницу, показать секретный ключ SSL или доставить другие неприятности, о которых сказано в предыдущем абзаце. Этот метод также позволяет использовать переполнение буфера и другие ошибки программирования (см. главу 13), чтобы вызвать поломку веб-сервера или, что еще лучше, захватить этот сервер в свои руки.
Один пример: в 1998 году в результате атаки против Hotmail стало возможным увидеть учетные записи электронной почты других людей. eBay также подвергся атаке; злоумышленники поместили троянского коня, написанного на JavaScript, в поле описания товара. Это поле видел любой, кто просматривал товары, выставленные на продажу, и в результате злоумышленники получали информацию о тысячах учетных записей.
Один недостаток CGI позволил злоумышленникам загружать секретную персональную информацию с различных сайтов. Другие сценарии CGI использовались, чтобы взломать веб-сервер. В конце 1999 года были предприняты две атаки – атака Poison Null («отравленный» нуль), позволившая хакерам просматривать и изменять файлы на веб-сервере, и атака Upload Bombing (бомбежка при пересылке), наводнившая веб-серверы бесполезными файлами, которые очень быстро превращались в атаки-сценарии, так что любой мог при желании их использовать [35] .
35
Атаки образца конца 1999 года, актуальные и поныне (для подобных атак уязвимы до 80% интерактивных веб-сайтов). Upload Bombing работает на сайтах с запросом на загрузку файлов (агентства по трудоустройству, доски объявлений, почтовые серверы и т. д.). Смысл в том, что в ответ на предложение загрузки сервер заваливается множеством файлов, переполняющих диски, текстовых, графических, любых, и вызывает переполнение дисков. Название Poison NULL byte произошло от байта с нулевым значением, служащего ограничителем строки на многих языках программирования. – Примеч. ред.
Включения на стороне сервера (Server Side Includes, SSI) – это указания для вебсерверов, встроенных в HTML-страницы. Непосредственно перед отправкой страницы браузеру веб-сервер выполняет все SSI, содержащиеся на странице, и помещает на нее результаты своей работы. Атаковать SSI так же выгодно, как и все остальное.
Можно атаковать уязвимые места в стороннем программном обеспечении: на специфических веб-серверах, в их приложениях. Сюда относятся приложения для баз данных, программы «корзины», сервер транзакций и другие. Эти атаки зависят не от того, как сайт использует приложение, а от самого приложения (СУБД Oracle, например). Злоумышленники могли бы загрузить исходную программу с веб-сервера, разрушить сервер, получить привилегии доступа на уровне администратора для входа на сервер, запустить на сервере произвольную программу и т. п. В отличие от прорех безопасности, вызванных сценариями CGI, установление уязвимых мест в дополнительных приложениях не находится под контролем сайта; это обязанность поставщиков стороннего программного обеспечения.