Безопасность WWW
Злоумышленник, работающий с системой WWW, может преследовать следующие цели:
- атака на компьютер пользователя посредством кода, написанного на JavaScript, Java или загруженного по технологии ActiveX;
- построение ложной копии WWW-сервера с целью ведения пользователя в заблуждение и принуждения его к раскрытию секретной информации;
- атака на HTTP-сервер через CGI-программы и другие средства динамической генерации контента с целью проникновения в его операционную систему или отказа в обслуживании;
- перехват передаваемых данных;
- перехват паролей и получение несанкционированного доступа к ресурсам WWW-сервера или к услугам прокси-сервера.
WWW-браузер может запустить программный код, загруженный с какого-либо сервера. есть два, отличных с точки зрения пользователя, варианта загрузки программного кода.
Первый вариант – пользователь находит на каком-либо сайте ссылку на исполнимую программу и загружает ее. В этом случае имеет место осознанный выбор пользователя, который должен понимать, что загруженная программа может содержать любой вредоносный код.
Второй вариант – автоматическая загрузка кода браузером без ведома пользователя при просмотре последним определенной web-страницы. Таким кодом могут быть встроенные в HTML-текст программы JavaScript, апплеты, написанные на языке Java, и управляющие элементы ActiveX.
Разработчики браузеров предпринимают усилия для того, чтобы обезопасить компьютер пользователя при выполнении таких программ. В частности, Java-апплеты запускаются в специальном окружении (sandbox), препятствующему прямому доступу апплета к файловой системе и выполнению других потенциально опасных действий. Апплет может открыть соединение только с тем компьютером, с которого он был загружен.
Однако, несмотря на все предпринятые меры, для злоумышленников все равно остается определенное поле действий. Основными угрозами безопасности являются обман пользователя и атаки типа «отказ в обслуживании».
Обман пользователя может осуществляться путем вывода на экран окон, выдающих себя за сообщения от других программ. Эти сообщения могут призывать пользователя выполнить какие-либо действия, связанные с раскрытием секретной информации (пароля). Второй вид обмана заключается в фальсификации URL, показываемого в статусной строке браузера, когда пользователь наводит указатель мыши на какую-либо ссылку.
Загрузка Web-страниц со специальным кодом JavaScript может привести к блокированию браузера так, что для продолжения работы требуется его перезагрузка.
JavaScript имеет также возможность отправлять сообщение по электронной почте. Отправка данных может быть инициализирована любым действием пользователя.
Источником серьезных проблем, связанных с безопасностью, для HTTP-сервера являются CGI-программы. CGI-программы должны тщательно проверяться на наличие ошибок, в особенности на переполнение буфера. CGI-программы должны фильтровать ввод клиента, если эти данные используются для системных операций: открытия файлов, запуска программ, обращения к базам данных и т.д. Для любых вводимых клиентом данных разработчик программы должен определить безопасный шаблон, которому данные должны соответствовать. CGI-программы должны запускаться HTTP-сервером от имени пользователя, обладающего ограниченными правами. По возможности следует запретить обращения к файловой системе за пределами некоторого каталога, а также право на запись в файлы. Все CGI-программы следует хранить в одном месте файловой системы. Администратору следует осторожно подходить к возможности разрешения пользователям сервера создавать собственные CGI-программы в своих каталогах.
Проблема перехвата данных злоумышленником, прослушивающим сеть, не решается в рамках протокола HTTP. Если запросы и ответы содержат секретную информацию, следует использовать протокол SSL. Протокол SSL в стеке TCP/IP расположен между транспортным (TCP) и прикладным уровнями. SSL обеспечивает шифрование всех данных прикладного уровня. При установлении соединения сервер предъявляет клиенту сертификат, подтверждающий «личность» сервера.