Коллектив авторов - Защита от хакеров корпоративных сетей
SRC=“left.gif”></TD>
<TD WIDTH=90%><IMG hspace=“0” vspace=“0” VALIGN=“bottom”
WIDTH=500
HEIGHT=20 SRC=“midsmall.gif”></TD>
<TD><IMG hspace=“0” vspace=“0” ALIGN=“right”
SRC=“right.gif”></TD>
</TR>
</TABLE>
</BODY>
</HTML>Если читатель хоть раз задумывался о строке состояния, по крайней мере во время работы с Internet Explorer, то он мог заметить, что она состоит из уникальной небольшой полоски слева, обычно небольшого пустого места посередине и нескольких полей справа. Поэтому для отображения строки состояния нужно скопировать подходящий шаблон пикселов в нужное место экрана. В языке разметки HTML предусмотрены стандартные средства растяжения строки состояния по левой и правой границам окна, но в данном случае в этом нет необходимости. Имитируя окружающую среду, можно обмануть пользователя, подсунув ему строку состояния из неожиданного для него источника. Пользователь думает, что пикселы строки состояний формирует система, а на самом деле это просто другая часть Web-страницы.
Совершено новый вид переполнения буфера: опасность выравнивания к правой границе. Все это ужасно. Возможно, читатель обратил внимание на слишком большое число случайных переменных в адресе URL при вызове popup_ie.html. На самом деле никто не пытается перейти по адресу http://www.doxpara.com/x10/webcache.html . Вместо этого указан адрес http://www.doxpara.com/x10/webcache.html?site=https://www.x10.com/hotnewsale/webaccessid=xyqx1412&netlocation=241&block=121&pid=81122&&sid=1 . Браузер игнорирует лишние параметры, посылая их Web-серверу как вспомогательную информацию для регистрации в журнале. Беды в этом нет, потому что никакой вспомогательной информации для статической Web-страницы, предназначенной только для привлечения внимания, не требуется. Но клиент не знает истинного предназначения вспомогательной информации, а оно состоит в следующем. При помещении новых символов на место старых данных, которые могла содержать адресная строка, в текстовое поле с левой стороны записываются адреса потерянных символов. Размер адресной строки устанавливается косвенно при определении в файле popup_ie.html размера окна, а используемый для отображения адреса шрифт практически фиксирован (исключая странные браузеры, которые можно выделить по их способности постоянно вносить мусор в исходящие заголовки HTTP). Это позволяет вполне правильно определить точное число и стиль символов, которые следует удалить из адресной строки. В данном случае http://www.doxpara.com/x10?. Достаточно было разместить замаскированные под мусор переменные и удостовериться, что это выглядит как еще одна страница со слишком большим числом внешних параметров.
В отдельности каждая из этих проблем не опасность, а всего лишь небольшая неприятность. Но когда они сливаются воедино – это смертельная угроза. Рисунок 12.2 показывает то, что видит пользователь, а рис. 12.3 – то, что произошло на самом деле.
Рис. 12.3. Фальсифицированное всплывающее окноАбсолютный контроль: фальсификация всего окна. Одной из интересных возможностей обеспечения безопасности, встроенной в ранние виртуальные машины Java отличных от Microsoft компаний, было то, что все окна, которые не получили статус доверенного окна, должны были иметь строку состояния, уведомляющую пользователя о том, что данное диалоговое окно запущено удаленным сервером и фактически не отражает локальную систему.
Отсутствие этой возможности обеспечения защиты информации было одним из наиболее значимых упущений для среды Microsoft Java.
Некоторые системы предусматривают настройку, позволяющую при переходе к безопасному сайту отображать в диалоговом окне краткое уведомление. Пример подобного уведомления показан на рис. 12.4.
Рис. 12.4. Окно уведомления о работе протокола SSLК несчастью, это окно – всего лишь массив пикселов, которые легко фальсифицировать при использовании реализованной в браузере Internet Explorer возможности отображения бесцветных всплывающих окон (chromeless popup). Пример такого всплывающего окна представлен на рис. 12.5.
Рис. 12.5. Пример произвольного сетевого диалогового окна уведомленияНа самом деле это не окно. Об этом свидетельствуют некоторые признаки, например изображение текста без зубцеобразного дефекта (antialiased) в строке заголовка с плавным изменением цвета. Этого достаточно, чтобы понять, что показано графическое изображение. HTML, Java и особенно Flash предоставляют вполне богатые инструментальные средства для фальсификации интерфейса компьютерной графики CGI, по крайней мере по одному окну за раз. Пользователь доверяет пикселам, а сеть их предоставляет. В рассмотренном случае пользователь ожидает появления дополнительных пикселов, для того чтобы отличить данные, предоставляемые сетью, от данных своей системы. Благодаря ошибке или алгоритму работы системы существуют методы удаления пикселов, что в результате позволяет сетевым средствам делать все, что они пожелают. Все, что потребовалось сделать в примере, – это установить в функции popup две противоречащие друг другу опции. Сначала переменная fullscreen была установлена в 1, увеличивая окно и удаляя его границы. А затем переменная resizable была установлена в 0 (resizable=0), что привело к отмене полноэкранного режима. Заметьте, что к этому времени границы окна были уже удалены. Из-за ошибки или из-за того, что так было предусмотрено при проектировании, но в результате бесцветное окно оказалось подготовленным к какой угодно фальсификации цвета.
Замаскированные под неустойчивые отказы атаки на протокол SSL. Иногда, когда пользователь теряет бдительность, можно внушить ему неверную мысль о нахождении его на безопасном сайте. Для этого нет необходимости делать что-то сверхъестественное. Что, если в одном случае из тысячи кто-то пытался подключиться к своему банку или биржевому маклеру через свою Web-страницу, которая в этот момент не была защищена протоколом SSL?
Было ли это ошибкой? В некотором смысле, потому что в адресной строке был пропущен символ s после названия протокола http, а значок замка внизу экрана размером 16 х 16 пикселов был удален. Но это одноразовая ошибка. Очередная перезагрузка восстановит работу протокола https.
Эту ошибку кто-нибудь когда-нибудь обрабатывал?
Возможно, что кто-нибудь когда-нибудь звонил в службу технической поддержки и спрашивал совета по поводу возникшей ситуации. Скорее всего, ему советовали перезагрузить страницу и посмотреть, не исчезла ли проблема.
Причиной проблемы является то, что нельзя зашифровать или заверить весь трафик. У страницы нет способа самостоятельно обеспечить безопасную загрузку своих данных, говоря при этом: «Если я не поддерживаю шифрование, то у меня нет возможности сообщить пользователю, чтобы он не пересылал в мой адрес секретных данных». (Даже если путем установки какого-нибудь признака у страницы была бы такая возможность, то злоумышленник мог бы легко его сбросить.) Неготовность пользователя читать незашифрованный и неудостоверенный трафик означает, что любой, у кого есть возможность перехватить его соединение и фальсифицировать содержимое ответа от банка или биржевого маклера, может любым способом помешать доставке страницы с указанием упомянутого статуса небезопасности....Примечание
Вероятно, лучшее решение состоит в том, чтобы добавлять значок блокировки (замок) под знаком указателя мыши и/или справа от него при навигации по безопасной странице. Достаточно при этом соблюсти меру, чтобы не казаться чрезмерно навязчивым. Нельзя прерывать передающий важную информацию поток данных и, что более важно, нельзя заслонять поле просмотра в момент получения информации от браузера по безопасным линиям. Конечно, следовало бы подумать о вещах типа «кометы курсора», позволяющей фальсифицировать даже курсор мыши… Таким образом, гонка вооружений продолжилась бы.
...Мы верим в пиксели: это чистая правда
«Веблен (Veblen) предложил, чтобы психология престижа управлялась тремя „покупаемыми за деньги канонами вкуса“: выставленный напоказ досуг, выставленные напоказ расходы и выставленное напоказ расточительство. Символы положения в обществе выставлены напоказ. Их не обязательно страстно желают только потому, что они полезны или привлекательны (галька, маргаритки и голуби кажутся красивыми, когда их открывают заново или когда они восхищают малышей). Они выставлены напоказ лишь потому, что настолько редки, расточительны или бессмысленны, что только богатый может их себе позволить. К символам положения в обществе относятся слишком тонкая, большая, узкая или пачкающая, не приспособленная для работы одежда, слишком хрупкие для повседневного использования или сделанные из недоступных материалов вещи, бесполезные предметы, для изготовления которых потребовались потрясающие усилия, энергия и украшения, бледная кожа в странах, где плебеи работают в поле, и загар, если они работают в закрытом помещении. Логика перечисленного заключается в том, что хотя нельзя увидеть все богатство и имущественное положение богача (его счет в банке, земли, союзников и лакеев), тем не менее в его ванной можно увидеть золотую сантехнику. Этого не может себе позволить тот, кто вынужден на всем экономить. Таким образом, все знают, что он богат».