21 декабря 2000
Атака на web-клиента или чем рискует посетитель виртуального магазина?
Атака на web-клиента или чем рискует
посетитель виртуального магазина?
Крис Касперски, kpnc@aport.ru
Если бы желания были рыбами, мы все
забрасывали бы сети
Френк Херберт Дюна
До появления первых виртуальных магазинов над
вопросами безопасности в Интернете никто
серьезно не задумывался. Повсеместно
использовались незащищенные протоколы и
потенциально уязвимые механизмы аутентификации.
До недавнего прошлого это обстоятельство не
вызывало особого беспокойства, – в сети попросту
не существовало ресурсов, которые бы следовало
надежно охранять. Серверы пускали всех
пользователей без разбора, личная переписка не
содержала ничего конфиденциального, а
подавляющее большинство абонентов сети
придерживалось неписаного закона «не навреди» и,
хотя время от времени возникали инциденты,
нарушающие такую идиллию, в целом ситуация
считалась удовлетворительной.
Требования к сегодняшним системам защиты
кардинально изменились, но переход на новые
стандарты и усовершенствованные протоколы
происходит не так быстро, как этого хотелось бы,
– невозможно единовременно изменить
программную оснастку всех узлов сети. Поэтому,
для достижения обратной совместимости даже
современные сервера вынуждены поддерживать
устаревшие решения десяти-двадцати летней
давности.
Словом, владельцам и разработчикам электронных
магазинов есть над чем подумать. Тот факт, что в
Багдаде не все спокойно, демонстрируют множество
публикаций, посвященных этой тематике. Тем
временем, вопросы безопасности клиентов
большинством авторов (не будем показывать
пальцем) старательно обходятся стороной. Такая
позиция выглядит, по меньшей мере, нелогично. За
безопасностью виртуального магазина есть кому
проследить, (для того и существуют системные
администраторы), но защищает ли кто-нибудь
посетителей этих магазинов? Во всяком случае не
администраторы, и уж точно не милиция,
предпочитающая обходить сетевые махинации
стороной. Выходит спасение утопающих – головная
боль самих утопающих?
Настоящая статья рассказывает о типовых
опасностях, которым подвергаются абоненты сети,
используя кредитные карты или другие средства
электронной оплаты. Если злоумышленнику удастся
похитить номер кредитной карточки жертвы, он без
проблем сможет снять с нее некоторую сумму денег
(варьирующуюся в зависимости от его наглости и
осторожности).
В простейшем случае для этой цели организуется
собственный виртуальный магазин, исправно
собирающий номера кредиток, но не высылающий
покупателям никаких товаров. И такие «ловушки» в
сети действительно есть. Заходя на платный сайт
эротического или порнографического характера
практически никогда нельзя быть уверенными в
том, что с вашего счета не снимут все денежки под
чистую. Вывод, – не посещайте ресурсы
сомнительно происхождения, пользуйтесь услугами
крупных, проверенных поставщиков.
Но как покупателю найти этих самых крупных
поставщиков? В реальной жизни нам помогают
вывески над магазинами, а в Интернете… ну,
конечно же, баннеры. Вот пользователь нажимает на
баннер, попадает на страничку злоумышленника,
содержащую хитрый Java-скрипт, который
переправляет клиента, скажем, на www.amazon.com.
«Хитрый» оттого, что ошибка реализации Java-машины,
присущая даже поздним версиям Internet Explorer и Netscape
Navigator, приводит к возможности выполнения аплетов
злоумышленника в контексте перенаправленного
адреса. Покупателя в настоящий магазин могут и не
пустить, а вывести в окне браузера его точную
копию, отличающуюся от оригинала лишь тем, что
содержимое всех заполненных форм попадает не к
продавцу, а в карман злоумышленника. Но несмотря
на это, адресная строка браузера будет содержать
подлинный адрес магазина, вводя покупателя в
заблуждение.
Другая разновидность той же атаки –
злоумышленник помещает на свою страничку
коллекцию ссылок на виртуальные магазины и
прочие коммерческие ресурсы. При наведении
курсора на любую из ссылок в строке статуса
появляется подлинный адрес выбранного ресурса,
–пользователь, не замечая подвоха, кликает
мышкой и… Откуда же ему знать, что содержимое
строки статуса выводится скриптом
злоумышленника и не соответствует
действительности! А дальше все происходит по
сценарию, описанному выше. Покупателя
перенаправляют на требуемый магазин, доменное
имя которого немедленно отображается в адресной
строке браузера, но дальше порога в магазин не
пускают, подсовывая клиенту динамически
сгенерированную руками злоумышленника
WEB-страницу.
Для защиты от такого вида мошенничества
достаточно кликнуть мышкой по адресной строке
браузера и нажать “Enter”. Тогда браузер извлечет
из нее подлинное доменное имя целевого ресурса и
установит с ним прямое соединение без
посредников. Свыше трех четвертей
злоумышленников обходятся таким тривиальным и
не требующим никаких умственных усилий способом
(в некоторых публикациях рекомендуется изучать
исходный код странички на предмет поиска всяких
«подозрительностей», - не говоря уже о том, что
эта операция требует весьма высокой
квалификации и знаний Java, VbasicScript, DHTML, она
бессильна предотвратить атаки, базирующиеся на
ошибках программных реализаций браузеров, т.к. в
этом случае поведение кода противоречит
здравому смыслу и нормальному ходу вещей).
Впрочем, такая мера не панацея, – ведь прежде чем
подключиться к серверу, необходимо перевести его
доменное имя в IP-адрес, а занимающаяся этим
служба DNS не свободна от ошибок и очень слабо
защищена. Протокол UDP, на который опирается
DNS-сервер, не позволяет идентифицировать
отправителя пакета, т.е. программное обеспечение
жертвы не способно отличить ответы настоящего
DNS-сервера, от подложных пакетов злоумышленника.
Сценарий атаки может быть, например, следующим:
злоумышленник огромным количеством разнородных
запросов, очищает кэш DNS-сервера, а затем посылает
ему запрос с просьбой определить IP-адрес
такого-то доменного имени. Обнаружив его
отсутствие в своем кэше, DNS обращается к серверу
более высокого уровня, а, тем временем,
злоумышленник отправляет ему подложный пакет,
содержащий IP-адрес двойника магазина. Введенный
в заблуждение DNS-сервер (а DNS-сервера общаются
между собой на том же UDP протоколе) доверчиво
помещает фальсифицированный ответ в свой кэш и
впоследствии «раздает» его всем пользователям,
пытающимся попасть в этом магазин.
Конечно, это очень упрощенная схема – на
практике все происходит гораздо сложнее. Так, для
отправки пакетов от чужого имени злоумышленнику
по меньшей мере требуется угадать номер порта
получателя и значение идентификатора
отправителя. Но никаких принципиальных преград
перед атакующим нет! Пускай, подобные взломы все
еще остаются экзотикой, ряд прецедентов уже
имеется. В частности, именно таким образом 28
октября 1996 была подменна главная страница сайта
крупнейшего московского провайдера РОСНЕТ.
Причем ни администратор DNS-сервера, ни владелец
виртуального магазина не способны предотвратить
такую атаку, даже если переведут DNS-службу на
TCP-протокол (если еще переведут – это чрезвычайно
мало документированная и требующая высокой
квалификации операция). Клиентская OC, будь то Windows
или UNIX, первым делом пытается связаться с
DNS-сервером по UDP-протоколу, и только получив
отказ, переходит на TCP (если вообще переходит, –
не каждая из них поддерживают такое
взаимодействие).
До тех пор, пока не будет переписано все
программное обеспечение, прямо или косвенно
связанное с DNS-протоколом, никто не сможет
чувствовать себя в полной безопасности. Впрочем,
это не повод для паники, поскольку (как уже
отмечалось выше), подобные атаки не получили
большого распространения, и чаще всего
злоумышленники (по обыкновению не обремененные
высокой квалификацией) предпочитают действовать
грубой силой и кустарными методами.
Большой популярностью пользуется рассылка
троянских программ под видом полезных утилит или
фотографий красивых девушек. Откроет такую
пользователь и запустит на свой компьютер
шпиона, скажем, отслеживающего нажатие клавиш.
Спустя некоторое время собранная информация
отправляется злоумышленнику, которому остается
всего лишь извлечь из нее номера кредитных карт и
перевести на свой счет некоторую сумму.
Отсюда правило – никогда и ни при каких
обстоятельствах не запускайте программы
неизвестного происхождения. Простые меры
гигиены в подавляющем большинстве случаев
способны предотвратить заражение, но все же
помогают не всегда. Причиной тому служат
вездесущие программные ошибки, позволяющие
передать управление на код злоумышленника без
ведома и активных действий со стороны жертвы.
Конечно, совсем уж без действий, не обходится
(сами собой только кошки, да и то не в жизни, а в
анекдоте), но от жертвы не требуется ничего
экстравагантного, – вполне достаточно посетить
сайт злоумышленника или получить посланное им
письмо (всего лишь получить - читать
необязательно). Ладно, пускай, страницы
сомнительного содержания можно обходить
стороной, но отказаться от электронной почты в
большинстве случаев – немыслимо!
Таким образом, существует принципиальная
возможность атак, приводящих к нарушению
конфиденциальности данных, хранящихся на
компьютере пользователя, набираемых с
клавиатуры и передающихся по сети. И в ближайшем
будущем ситуация улучшаться, похоже не
собирается. Напротив, неотвратимый рост
сложности программного обеспечения порождает
все большее количество ошибок и люков, дающих
«кислород» кибернетическим ворам и вандалам
всех мастей.
Забавно, но лучший способ избегнуть кражи –
отказаться от всех новомодных схем электронных
оплаты и заказывать товар старым-добрым
наложенным платежом. С другой стороны, весь век в
норе не просидишь и премудрым пескарем не
проживешь, – приходится сознательно рисковать,
уповая лишь на то, что вероятность оказаться
обкраденным не сильно повышает шансы погибнуть в
автомобильной катастрофе. Цель статьи состоит
вовсе не в запугивании читателей теми
бедствиями, которые могут свалиться на их голову
при использовании кредитных карт, - автор
стремился показать реальное положение дел в этой
области и развеять существующие иллюзии
относительно высокой защищенности современных
систем on-line торговли. Все решения, предлагаемые
разработчиками, будь то SSL, Virtual Private Network или
службы-арбитры, выступающие гарантом законности
сделки, реализованы поверх базовых протоколов,
принципиально не способных обеспечить
надлежащего уровня защищенности. А на шатком
фундаменте, устойчивой крепости не постоишь. И,
как показывают исследования, фундамент
Интернета, действительно, очень шаткий…
Сергей Баричев
bar@computerra.ru
Источник:
Журнал <<ИНФО БИЗНЕС>>