Главная / Информационная
безопасность / Статьи
Технология
cookies давно находится
в поле зрения специалистов по защите
информации. Одной из основных причин
является то, что много антишпионские
программы содержат средства поиска
«вредоносных» cookies и
внушительные базы сигнатур для
реализации такого поиска. Детектирование
cookies в качестве одной
из разновидностей шпионского ПО в
свою очередь вызывает множество
вопросов у пользователей – насколько
это опасно и следует ли применять
особые меры защиты. Задачей данной
статьи является рассмотрение
технологии Cookie,
создаваемых ей потенциальных угроз,
методик анализа и противодействия.
Назначение
cookies
Итак,
стоит начать с ответа на вопрос "что
такое cookies". Cookies - это текстовая
информация небольшого объема, которая
сохраняется на компьютере пользователя
по запросу WEB сервера
и предается ему при повторных
посещениях. Основным назначением
cookies является:
1.
Организация сессий в ходе работы
пользователя с On-Line
магазинами, форумами и иными
интерактивными системами с Web
интерфейсом, например с системами
документооборота или почтовыми
сервисами с web
интерфейсом. В этом случае в cookie
хранятся некоторые параметры сессии,
например ее уникальный идентификатор;
2.
Хранение различных параметров
пользователя. Часто в cookie
хранятся не сами данные, а некий
идентификатор, позволяющий программному
обеспечению web сервера
опознать пользователя;
3.
Идентификация пользователя в
рейтинговых системах, счетчиках,
системах баннерного показа, on-line
голосованиях. Часто применяется как
элемент защиты от так называемой
«накрутки» счетчиков посещения
Существуют
три способа создания cookie:
При помощи поля в заголовке HTTP
ответа. В этом случае сервер передает
в HTTP ответе одно или
несколько полей Set-Cookie: <определение
cookies> . Пример заголовка HTTP
ответа сервера:
HTTP/1.0
200 OK
Date:
Thu, 22 Dec 2005 06:41:30 GMT
Expires:
Thu, 01 Jan 1970 00:00:01 GMT
Content-type:
image/gif
Set-Cookie:
ruid=AjkABppKqkPzAAAAAZEAnFyrv; path=/; domain=.rambler.ru;
expires=Sun, 20-Dec-15 06:41:30 GMT
При помощи META тега в заголовке HTML
страницы. Тег имеет вид <META
HTTP-EQUIV="Set-Cookie"
CONTENT="
определение cookies",
причем в одной странице таких
тегов может быть несколько. Данный
тег эквивалентен полю Set-Cookie
в заголовке HTTP ответа;
При помощи скриптов HTML страницы.
В JavaScript, к примеру, для доступа к
cookie предусмотрено
свойство document.cookie.
Рассмотрим простейший скрипт,
который выводит на странице текущее
значение document.cookie, а затем создает
cookie с именем
«test-cookie-1»
<html>
<head>
<SCRIPT
LANGUAGE="JavaScript">
document.write("Cookie
text = '" + document.cookie+"'");
document.cookie
= "data=test-cookie-1-data; expires=Thursday, 14-Feb-2007
18:49:21 GMT";
</script>
</head>
<body>
</body>
</html>
Первый
запуск примера должен отобразить
пустую строку, второй и последующие
– строку «data=test-cookie-1-data».
Файл с данным примером прилагается
к статье, имя файла - cookie-1.htm. Пример
еще пригодится для тестирования
анализатора cookies, речь
о котором пойдет далее.
При
создании cookie может
быть указано время ее хранения при
помощи параметра expires. В данном
параметре указывается дата и время,
до которого браузеру рекомендуется
хранить cookie. Важно
отметить, что именно рекомендуется
– браузер не обязан хранить cookie
с течение заданного времени. Если в
момент создания cookie
выяснится, что в параметре expires
задана дата меньше текущей, то cookie
с таким именем будет удален. Кроме
того, существуют так называемые
сеансовые cookie – у них
не задано время хранения и они
существуют только в течение сеанса
работы. Сеансовые cookie
часто применяются как средство
поддержания сессии пользователя.
Передача
cookie web-серверу
производится в заголовке HTTP
запроса, в поле Cookie:, вот пример
типового HTTP запроса:
GET
http://top100-images.rambler.ru/top100/banner-88x31-rambler-black2.gif
HTTP/1.0
Accept:
*/*
Referer:
http://virusinfo.info
Accept-Language:
ru
Proxy-Connection:
Keep-Alive
User-Agent:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Host:
top100-images.rambler.ru
Pragma:
no-cache
Cookie:
ruid=yQAAAEBPWkIOagAAAawJAAA=
Подробную
спецификацию cookie на
английском языке можно найти по
адресу
http://wp.netscape.com/newsref/std/cookie_spec.html
Хранение
cookies
Методика
хранения cookie зависит
от браузера. Internet
Explorer сохраняет данные
cookies в виде отдельных
текстовых файлов в папке Cookies,
расположенной в профиле пользователя.
Единственным средством защиты данной
папки является наличие у нее атрибута
«Системный», что делает ее невидимой
для проводника. Сами файлы имеют
расширение txt и могут
быть просмотрены при помощи обычного
блокнота.
Браузер
Mozilla Firefox
хранит cookie в профиле
пользователя, в файле Application
Data\Mozilla\Firefox\Profiles\<имя профиля>\cookies.txt.
Этот файл имеет весьма простую
структуру – комментарии начинаются
с символа #, данные cookie
идут по одной на каждую строку,
разделителем полей является знак
табуляции.
Примеры
web
программирования с применением
cookie
Для
иллюстрации базовых приемов работы
с cookie к статье приложено
четыре простых примера CGI
программ на языке Delphi
(в виде исходных текстов и
откомпилированных программ).
Откомпилированные программы
необходимо разместить в каталоге
WEB сервера, для которого
разрешено выполнение CGI
программ. В случае с Microsoft
IIS для изучения примеров
рекомендуется создать отдельную
папку, в настройках для нее разрешить
запуск сценариев и исполняемых
файлов.
Пример
номер 1 (cookies1.exe) является примером
простейшего CGI
приложения, создающего и считывающего
cookie. Второй пример
несколько сложнее и демонстрирует
возможность создания, получения и
удаления cookie под
управлением CGI программы.
Пример номер три демонстрирует
работу с сеансовыми cookie,
имитируя механизм простейшей
идентификации пользователя и
поддержания сессии. Наконец пример
4 демонстрирует создание счетчика
посещений с простейшей защитой он
«накрутки» при помощи cookie.
Примеры
подробно комментированы и могут
быть откомпилированы на любой версии
Delphi начиная с 5.0.
SpyWare
cookies
и Tracking
Cookies
Два
данных названия как правило относятся
к примерно идентичному типу cookies,
применяемых разработчиками различных
рейтинговых и баннерных систем для
отслеживания посещения пользователем
страниц, содержащих элементы этих
систем. Cookie в данном
случае используется для своеобразной
«пометки» пользователя, причем
подобная «пометка» как правило не
может быть ассоциирована с конкретным
пользователем и его персональными
данными, так как является простым
уникальным идентификатором. Схема
работы уже упоминалась в статье про
SpyWare, она показана на
рисунке 1
Предположим
для определенности, что пользователь
посещает два сайта, содержащих на
своих страницах счетчик одной и той
же рейтинговой системы. Будем считать,
что у браузера пользователя разрешены
прием и передача cookie.
При
посещении сайта A
произойдет две операции – загрузка
страницы с сайта A (шаг
1) и обращение к сайту рейтинговой
системы (шаг 2) для получения рисунка
с данными счетчика или логотипом
рейтинговой системы. Если это первое
обращение пользователя к сайту
рейтинговой системы, то на его
компьютере нет ее cookies.
Не получив cookie
рейтинговая система, в свою очередь,
присваивает пользователю уникальный
идентификатор и в заголовке HTTP
ответа передает поле Set-Cookie,
предписывающее браузеру сохранить
cookie для сайта рейтинговой
системы. Классическим примером может
послужить рейтинг rambler.ru,
который использует единственный
cookie вида «ruid=<уникальный
идентификатор, присвоенный
пользователю>».
Затем
пользователь посещает сайт B
(шаг 3) и происходит повторное обращение
к сайту рейтинговой системы (шаг 4),
в ходе которого передается cookie,
сохраненный на шаге 2. Получив и
проанализировав cookie
рейтинговая система «узнает»
пользователя по его уникальному
идентификатору. В результате
рейтинговая система может не просто
фиксировать факт посещения сайта,
но и отслеживать «траекторию»
переходов пользователя по сайтам
(естественно только по сайтам,
страницы которой содержат счетчики
этой рейтинговой системы).
Далее
предположим, что пользователь
повторно посетил сайты A
и B. В этом случае
рейтинговая система фиксирует
факт повторного посещения, что
позволяет построить защиту от
«накрутки» счетчика, производить
учет количества уникальных посетителей
ресурса за единицу времени и вычислять
среднестатистическое количество
постоянных пользователей ресурса.
Важно
отметить, что при помощи cookie
любой сайт может регистрировать
факт повторного посещения, но не
может определить никаких персональных
данных пользователя. Исключеним
является случай, когда пользователь
сам передал какие-либо данные,
заполняя формы регистрации на сайте
– но даже в этом случае подобные
данные очень редко хранятся
непосредственно в cookie.
Обычно подобные данные заносятся в
базу данных на стороне WEB
сервера. Однако здесь все зависит
от WEB программистов,
создающих посещаемые пользователем
сайты – далее описана утилита,
позволяющая проверить cookies
на своем компьютере.
Пути
утечки хранящейся в cookies информации
Рассмотрим
несколько наиболее типичных путей,
по которым хранящаяся в cookie
информация может быть получена
злоумышленниками:
Межсайтовый скриптинг. Это наиболее
простой и популярный метод похищения
cookie. Он основан на
внедрение в легитимную WEB
страницу небольшого троянского
скрипта, передающего доступные узлу
cookie злоумышленнику.
Особенностью межсайтового скриптинга
является то, что с его помощью можно
похитить сеансовые cookie;
Эксплуатация уязвимостей браузера.
Внедрение на компьютер пользователя
троянской программы, которая
проанализирует содержащуюся в
cookes информацию и
передаст ее создателям. Как
вариант, троянская программа может
не только проанализировать cookie,
но и модифицировать их. Создать
такую программу достаточно
просто, так как Internet
Explorer и Mozilla
Firefox хранят cookie
в открытом виде;
Использование компьютера в местах
публичного доступа (библиотеки,
Интернет-кафе и т.п.). Многие
пользователи не задумываются о
необходимости удаления журналов
работы и cookies при
завершении работы
Перехват cookie при
помощи средств анализа сетевого
трафика.
Регистрация данных cookie
в протоколе proxy-сервера.
В зависимости от настроек proxy-сервер
может производить запись не только
полного URL, но и
заголовков HTTP запроса
и ответа
Основные
угрозы, создаваемые cookie
C
cookie связано несколько
основных видов угроз:
Утечка конфиденциальной информации.
Может произойти в случае получения
злоумышленником хранящихся в cookie
данных любым способом;
Несанкционированный доступ
злоумышленника к некоторым Web
сервисам от имени пользователя. Это
в первую очередь связано с получение
хранящегося в cookie
идентификатора сессии, хранимого
в cookie имени и пароля
пользователя или их эквивалента;
Проведение анализа, какие узлы
посещались пользователем в последнее
время. В данном случае cookie
наряду с журналами браузера и кешем
страниц позволяют получить достаточно
полную картину о том, какие сайты
посещались пользователем. Подобный
анализ обычно производится
специалистами спецслужб или службы
безопасности в качестве одного из
элементов изучения компьютера.
Поиск
cookie,
содержащих конфиденциальную
информацию
Для
оперативного анализа содержимого
Cookies можно применить
антивирусную утилиту AVZ,
содержащую средство поиска заданных
текстовых фрагментов в содержимом
cookies, сохраняемых
браузерами Internet
Explorer и Mozilla
Firefox. Окно системы
поиска вызывается из меню «Сервис/Поиск
cookies». Особенностью
системы поиска является то, что поиск
может вестись одновременно по
нескольким текстовым образцам (при
этом образцы разделяются пробелом
или «;»). Поиск ведется с учетом того,
что данные в cookie могу
быть представлены в формате Base64,
UUE, url-encoding
или quoted-printable.
Анализируемые форматы можно выбрать
на закладке «Настройки», по умолчанию
ведется попытка поиска во всех
форматах.
Для
проведения анализа в строке «Образец»
необходимо ввести фрагменты e-mail
адресов пользователя, применяемые
для регистрации на Интернет сайтах
имена и пароли, фрагменты номеров
кредитных карт или иную информацию,
которая вводилась в WEB
формы и утечка которой, по мнению
пользователя, представляет для него
угрозу. При указании образцов поиска
следует учитывать, что по сути ведется
поиск вхождения указанных образцов
в данных cookie, поэтому
часто для эффективного поиска
достаточно указать уникальные
фрагменты, например “newvirus”
вместо «newvirus@z-oleg.com»
или последние 5 цифр номера кредитной
карты вместо ее полного номера.
После
задания образцов необходимо нажать
кнопку «Пуск» для запуска поиска.
Поиск может занять некоторое время,
как правило, не более 10-20 секунд.
После завершения поиска формируется
протокол, в котором указано, в каких
cookie встречались
указанные образцы. На закладке
«Найденные Cookies» можно
просмотреть список найденных Cookies,
при нажатии кнопки «Просмотреть
Cookie» на экран выводится
содержимое текущего Cookie
для детального анализа.
Проверить
работу анализатора можно при помощи
приложенного к статье примера –
после запуска test-cookie-1.htm
можно провести поиск по образцу
“test-cookie-1-data”.
Данный
анализатор позволяет пользователю
узнать, какие сайты сохраняют в
cookies критичную для
него информацию - в последствии
для этих сайтов можно создать правила,
блокирующие прием от них cookies.
Настройка
параметров работы с Cookie
для IE
6
Настройка
параметров работы с cookies
в IE производится на
закладке «Конфиденциальность» в
свойствах обозревателя. По умолчанию
установлен уровень конфиденциальности
«Средний», в это режиме часть сторонних
cookie (различные счетчики,
рейтинги) блокируется. Максимальным
уровнем является «блокировать все
cookie”, что блокирует
прием cookie и передачу
уже существующих на компьютере. При
установке минимального уровня
разрешается прием cookie
от всех узлов.
Кнопка
«Узлы» позволяет задавать исключения.
Это очень полезная функция, так как
исключения имеют приоритет над
автоматическим анализом. Кнопка
«Узлы» недоступна при выборе
минимального и максимального уровня
конфиденциальности, так как не имеет
для них смысла.
Нажатие
данной кнопки вызывает окно,
позволяющее ввести адрес узла и
выбрать применяемое для него действие
– «Блокировать» или «Разрешить»,
что позволяет вручную запретить или
разрешить cookie для
определенных узлов. В частности,
можно установить высокий уровень
конфиденциальности и затем разрешить
прием cookie для определенных
узлов.
Кнопка
«Дополнительно» позволяет перекрыть
автоматическую обработку файлов
cookie и однозначно задать
реакцию браузера на «основные»
(создаваемые для узла, с которого
открывается страница) и «сторонние»
cookie (создаваемые
элементами, размещенными на других
узлах – в частности, это относится
к баннерам и счетчикам).
Можно
отметить, что в случае перекрытия
автоматической обработки рекомендуется
запретить прием сторонних cookie
и разрешить работу с сеансовыми (они
хранятся только в течении сеанса и
поэтому не представляют особой
опасности).
Если
в ходе просмотра WEB
страницы IE блокирует
cookie, то в его строке
статуса отображается значок, при
щелчке по которому выводится список
заблокированных cookie
Контекстное
меню списка позволяет задать политику
работу с cookie для любого
из отображенных в списке узлов –
можно запретить прием cookie
или разрешить его.
Удаление
всех хранящихся cookie
производится при нажатии кнопки
«Удалить cookie» на
закладке «Общие» в свойствах
обозревателя.
Говоря
про настройки конфиденциальности
в IE стоит упомянуть
про протокол P3P
(Platform for Privacy Preferences, http://www.w3.org/P3P).
Этот протокол поддерживается в IE6,
идея P3P
состоит в том, что создатели WEB
ресурса описывают «политику
приватности» своего сайта в XML
формате и размещают в файле
/w3c/p3p.xml. Этот файл может быть загружен
браузером для анализа и сравнения
с действующей политикой безопасности,
что помогает принять решение о том,
принимать cookie от
данного узла или отклонить их. Пример
P3P
описания можно посмотреть, загрузив
такой файл с одного из крупных
российских сайтов, например
http://www.rambler.ru/w3c/p3p.xml,
http://top.mail.ru/w3c/p3p.xml.
Анализируя P3P
файлы следует обратить внимание на
присутствующую в них ссылку на
развернутое описание политики,
которое размещается в отдельном
файле, ссылка на который дается в
тэге POLICY-REF (для Rambler
это файл http://www.rambler.ru/w3c/p3p.rambler.xml).
Настройка
параметров работы с Cookie
для Mozilla
Firefox
Настройка
параметров работы с cookie
для Firefox несколько
отличается от настроек IE
– все связанные с приватностью
настройки (журналы, управление
сохраненными данными форм и паролями,
настройка работы с cookies)
собраны в группе «Приватность» окна
настроек.
Настройки
Firefox
позволяют включать/выключать прием
cookies,
при включенном приеме можно
разрешить прием cookie
только с того-же сайта, что и открываемая
страница (это аналог блокировки
сторонних cookie в IE).
Кроме того, можно принудительно
управлять сроком хранения cookie.
По умолчанию они хранятся в соответствии
с указанным при их создании временем
действия, можно включить хранение
cookie до закрытия окна
Firefox. В настройке можно
задать исключения (данная настройка
аналогична настройке IE)
и просмотреть имеющиеся cookies.
Окно просмотра cookies
вызывается при нажатии кнопки
«Просмотр Cookies».
Наличие
возможности просмотра принятых
cookies является очень
полезной функцией Firefox
– для каждого cookie
можно увидеть расшифровку всех его
параметров, в частности срок действия
и значение.
Кнопка
«Удалить cookie» позволяет
избирательно удалять любой cookie,
кнопка «Удалить все cookies”
производит удаление всех хранящихся
на компьютере cookie.
Особое
внимание стоит уделить переключателю
внизу окна – его включение позволяет
автоматически создавать правила
блокировки для сайтов, которым
принадлежат удаляемые cookie.
Заключение
В
данной статье описана технология
cookies и представляемые
ей потенциальные угрозы. Анализ
показывает, что при правильной
настройке браузера cookie
не представляют существенной
опасности.
В
заключение можно сформулировать
ряд советов для пользователя:
1.
Не следует уделять большого внимания
сообщениям антишпионских программ,
рапортующих об обнаружении на
проверяемом компьютере множества
«шпионских» cookie – в
большинстве случаев это cookie
различных счетчиков, рейтингов и
баннерных рулеток, и их наличие не
представляет для пользователя
существенной угрозы;
2.
Рекомендуется периодически
анализировать хранящиеся на компьютере
cookie на предмет наличия
в них конфиденциальной информации.
Создающие такие cookie
сайты стоит внести в черные списки,
разрешив для них только сеансовые
cookie;
3.
После завершения работы на компьютере
в местах публичного доступа
рекомендуется удалить все cookie;
4.
Настраивая браузер можно запретить
прием сторонних cookie.
Это, как правило, не сказывается на
просмотре WEB сайтов,
но существенно уменьшает количество
сохраняемых cookie;
|