Безопасность web содержимого
Брянская государственная
инженерно-технологическая
Кафедра информационных технологий
РГР
Тема:” Безопасность web содержимого”
Дисциплина: Информационная безопасность
Выполнил:
Содержание:
Введение3
Опубликование информации на web-сайтах 3
Обеспечение безопасности технологий создания активного содержимого5
URLs и cookies 6
Уязвимости технологий активного содержимого на стороне клиента 7
Уязвимости технологий создания содержимого на стороне сервера10
Список действий для обеспечения безопасности web-содержимого.16
Введение
Двумя основными компонентами безопасности web являются безопасность лежащих в основе приложения сервера и ОС, а также безопасность реального содержимого. Про безопасность содержимого часто забывают. Безопасность содержимого сама по себе имеет два компонента. Наиболее очевидным является правило не размещать частную, классифицированную или другую чувствительную информацию в публично доступном web-сервере, если не предусмотрена защита информации с помощью аутентификации пользователя и шифрования трафика. Менее очевидный компонент безопасности содержимого состоит в компрометации, вызванной некорректным способом обработки конкретных типов содержимого на сервере.
Опубликование информации на web-сайтах
Политика опубликования в web должна содержать следующие элементы:
- Определение типа информации, которая может быть публично доступна;
- Определение типа информации с ограниченным доступом;
- Определение типа информации, которая не должна публиковаться в публично доступном репозитории.
Следует помнить, что web-сайты часто
являются первым источником, где нарушители
пытаются найти значимую информацию.
Например, атакующий обычно читает
содержимое сайта целевой организации
для получения необходимых
Публичный web-сайт обычно не содержит следующую информацию:
- классифицированные записи;
- внутренние правила и процедуры для персонала;
- чувствительную или частную информацию;
- персональную информацию о служащих организации:
- домашние адреса и номера телефонов;
- номера различных социальных карточек;
- детальный биографический материал;
- фамилии руководства.
- номера телефонов, e-mail адреса и т.п.;
- расписание сотрудников организации и их внешние координаты;
- чувствительную информацию, относящуюся к домашней безопасности;
- исследовательские записи;
- финансовые записи (кроме тех, которые всегда публично доступны);
- медицинские записи;
- процедуры физической и информационной безопасности;
- информацию о сети организации и информационной инфраструктуре (например, диапазоны адресов, соглашения именования, номера доступа);
- информацию, которая описывает или подразумевает уязвимости физической безопасности;
- планы, карты, диаграммы и т.п. строений;
- информацию о восстановлении после стихийных бедствий или непредвиденных обстоятельств;
- материалы, защищенные копирайтом, без письменного разрешения собственника;
- политики безопасности, которые указывают типы мер безопасности в той степени, в которой это может быть полезно атакующему.
Никогда нельзя использовать публичный web-сервер для хранения чувствительной информации, которая должна быть доступна только внутренним пользователям (компрометация публичного web-сервера обязательно приведет к компрометации этих данных).
Для гарантирования согласованного подхода организация должна создать формальную политику и описать процесс определения того, какая информация публикуется на web-сервере. Во многих организациях за это отвечает офицер информационной службы (Chief Information Officer — CIO). Такой процесс должен включать следующие шаги.
- Определить информацию, которая должна публиковаться в web.
- Определить целевую аудиторию.
- Определить возможные негативные последствия опубликования информации.
- Определить, кто отвечает за создание, опубликование и сопровождение конкретной информации.
- Создать или отформатировать информацию для опубликования в web.
- Просмотреть информацию на предмет наличия чувствительных данных.
- Определить соответствующий доступ и управление безопасностью.
- Опубликовать информацию.
- Проверить опубликованную информацию.
- Периодически просматривать опубликованную информацию на соответствие текущим требованиям политики безопасности.
Областью web-содержимого, про которую часто забывают, является информация, находящаяся в исходном коде HTML-страницы. Она может быть просмотрена из web-браузера использованием опции меню view source code. Разработчики часто не придают значения содержимому исходного кода их HTML страниц, даже если этот код содержит чувствительную информацию. Он может, например, содержать указатели на контактную информацию и показывать части структуры директории web-сервера. Атакующие могут проанализировать не только очевидное содержимое web-сайта, но также и исходный код; следовательно, web-администраторы должны проверять создаваемые HTML страницы своего web-сервера.
Обеспечение безопасности технологий создания активного содержимого
На ранней стадии развития web большинство сайтов предоставляли текстовую статическую информацию, основанную на ASCII. Никакой интерактивности не существовало между пользователем и web-сайтом за исключением того, что пользователь переходил по гиперссылкам. Однако вскоре появились интерактивные элементы, которые предлагали пользователям новые способы взаимодействия с web-сайтом. К сожалению, эти интерактивные элементы явились основой для появления новых уязвимостей.
Активное содержание на стороне
клиента относится к
Генераторы содержимого бывают
реализованы на стороне сервера
и тем самым представляют угрозу
для самого web-сервера. Опасность
в генераторах содержимого на
стороне сервера состоит в
том, что они могут принимать
вводимые пользователем данные и
выполнять действия на web-сервере. Если
генератор содержимого
Все web-сайты, которые реализуют активное содержимое и генераторы содержимого, должны выполнять дополнительные шаги для защиты от компрометации.
Специальная осторожность также требуется при загрузке заранее созданных скриптов или выполняемых файлов из Интернета. Многие web-администраторы хотят сэкономить время, загружая свободно доступный код из Интернета. Хотя удобства очевидны, риск тоже велик. Существует много примеров вредоносного кода, распространяемого данным способом. В общем случае, никакие скрипты третьих фирм не должны быть установлены на web-сервер до тех пор, пока код не просмотрит доверенный эксперт.
URLs и cookies
URLs являются технологией адресации в Интернете. Существует несколько проблем безопасности, связанных с URLs. Так как URLs посылаются в открытом виде, любые данные, которые хранятся внутри них, могут быть легко скомпрометированы. Например, URLs записываются во многие места, включая логи web-браузера (например, история браузера), логи прокси-сервера и логи НТТР referrer. Тем самым хранить чувствительные данные, такие, как имена пользователей и пароли или указатели на ресурсы сервера, в URL не следует. Безопасность через неясность не является хорошей практикой.
URLs часто содержатся в содержимом web. Хотя эти URLs могут не показываться в браузере пользователя, они могут быть легко раскрыты просмотром исходного кода. Следовательно, никакое содержимое web-страниц не должно включать чувствительных URLs, спрятанных в исходном коде. Многие атакующие осуществляют поиск чувствительных URLs в исходном коде, которыми могут быть:
- e-mail адреса;
- картинки, используемые в качестве ссылок на другие серверы;
- непосредственные ссылки на другие серверы;
- конкретные текстовые выражения (например, userid, password, root, administrator), спрятанные в виде значения формы.
Cookie – есть небольшой блок информации, которая может быть записана на жесткий диск пользователя, когда он посещает web-сайт. Цель cookies состоит в том, чтобы позволить серверу распознать конкретный браузер и, в конечном счете, пользователя при повторном посещении данного сервера. В сущности, они добавляют состояние в НТТР-протоколе, в котором состояние отсутствует. К сожалению, cookies обычно посылаются в явном виде и хранятся в явном виде на хосте пользователя, тем самым, они уязвимы для компрометации. Существуют уязвимости, например, в некоторых версиях IE, которые позволяют нарушителю удаленно собрать все cookies без оповещения об этом самого пользователя. Следовательно, cookies никогда не должны содержать данные, которые могут быть использованы непосредственно атакующим (например, аутентификационная информация, такая, как имя пользователя, пароль).
Существует два типа cookies.
Cookies, которые являются причиной большинства проблем, называются постоянные (persistent) cookies. Эти cookies могут использоваться для отслеживания деятельности пользователя в течение всего времени и на различных web-сайтах. Наиболее общее использование постоянных cookies состоит в сохранении соответствия информации о пользователях между сессиями. Часто запрещается использование постоянных cookies на публично доступных web-сайтах.
"Сессионные (session)" cookies действительны только в течение одной сессии. Эти cookies истекают в конце сессии или по истечению определенного промежутка времени. Так как эти cookies не могут использоваться для отслеживания персональной информации, их применение обычно не запрещается. Тем не менее, они должны быть явно определены и описаны в регламенте web-сайта.
Уязвимости технологий активного содержимого на стороне клиента
Доступны различные варианты технологий активного содержимого на стороне клиента (web-браузера). Каждая технология имеет свои сильные и слабые места, но ни одна не является полностью безопасной. Обсудим некоторые наиболее популярные технологииактивного содержимого и связанные с ними риски. (Однако следует помнить, что в каждый момент времени могут появиться новые технологии.) Web-администратор, который рассматривает развертывание web-сайта с возможностями, требующими технологииактивного содержимого на стороне клиента, должен тщательно взвесить риски и преимущества данной технологии перед ее внедрением. В частности, web-администраторы должны помнить, что даже если содержимое сайта не представляет угрозы для пользователя, активное содержимое других сайтов может представлять угрозу и пользователь может забыть изменить установки безопасности в браузере на более безопасные.
Java – полнофункциональный, объектно-ориентированный язык программирования, который компилируется в платформонезависимый байт-код, выполняемый интерпретатором, называемым Java Virtual Machine (JVM). Результирующий байт-код может быть выполнен в том месте, где он был скомпилирован, или передан на другую поддерживающую Java платформу (например, передан с помощью HTML-страницы как апплет). Java используется для добавления функциональности в web-сайтах. Многие сервисы, предлагаемые популярными web-сайтами, требуют от пользователя иметь поддерживающий Java браузер. Когда web-браузер видит ссылки на Java-код, он загружает код и затем выполняет его, используя встроенную JVM.
Разработчики Java в большинстве случаев успешно решают проблемы безопасности. Язык программирования Java и окружение времени выполнения обеспечивают безопасность первоначально с помощью строгой типизации, при которой программа может выполнять определенные операции только для определенных типов объектов. Java придерживается так называемой модели безопасности sandbox, использующей изолирование памяти и методов доступа, а также поддержку нескольких независимых доменов выполнений. Код Java, такой, как web-апплет, заключается в sandbox, который разработан для предотвращения выполнения неавторизованных операций, например, просмотр или изменение файлов в файловой системе клиента и использование сетевых соединений в обход защиты файлов.
Тем не менее, апплеты хоста представляют угрозы для безопасности, даже если выполняются внутри sandbox. Апплеты хоста могут использовать различными способами не предназначенные для этого системные ресурсы или могут заставить пользователя выполнить различные нежелательные действия. Примеры нежелательных действий апплетов на хосте включают DoS-атаки, подделку e-mail адресов, вторжение в частную жизнь (например, экспорт идентификации e-mail адреса и информации о платформе) и инсталлирование люков (backdoors) в систему. Так как модель безопасности Java является более сложной, пользователю может быть трудно понять ее и управлять ею. Такая ситуация может увеличить риск.
JavaScript –
это кроссплатформенный скриптовый язык
общего назначения, чей код может быть
встроен в стандартные web-страницы для
создания интерактивных документов. Название JavaScript является
неправильным, потому что этот язык не
имеет большой взаимосвязи с технологией Java и
разрабатывался независимо от него. Внутри
контекста web-браузера JavaScript являет
Теоретически ограничение
Visual Basic Script (VBScript) – язык программирования, разработанный Microsoft для создания скриптов, которые могут быть встроены в web-страницы, просматриваемые с помощью браузера IE. Netscape Navigator, однако, не поддерживает VBScript. ПодобноJavaScript, VBScript является интерпретируемым языком, который дает возможность обрабатывать скрипты на стороне клиента. VBScript, который является подмножеством широко используемого Microsoft языка программирования Visual Basic, работает под управлением Microsoft ActiveX. Язык подобен JavaScript и имеет аналогичные риски.
ActiveX – это множество технологий от Microsoft, которые предоставляют инструментальные средства для связывания desktop-приложений с web. Управления ActiveX являются переиспользуемыми программными компонентными объектами, которые могут быть присоединены к e-mail или быть загруженными с web-сайта. Управления ActiveX также могут быть заранее инсталлированы на Windows-платформе. Web-страницы включают управления ActiveX, используя скриптовый язык или с помощью HTML-тега OBJECT.
Модель безопасности ActiveX зн
Перед загрузкой браузером
Рассмотрим риск ActiveX в сравнении с другими популярными технологиями активного содержимого на стороне клиента.
Сравнение риска различных технологий на стороне клиента | |
Технология на стороне клиента |
Степень риска |
JavaScript и VBScript |
Низкая |
Java-апплеты |
Средняя |
Управление ActiveX |
Высокая |
Уязвимости технологий создания содержимого на стороне сервера
В отличие от описанных выше технологий, CGI, ASP и другие аналогичные интерфейсы сервера выполняются на стороне сервера в модели клиент-серверного взаимодействия. Обычное использование технологий создания содержимого на стороне сервера включает:
- доступ к базе данных;
- приложения электронной коммерции и электронного правительства;
- различные чаты;
- дискуссионные группы.
Приложения на стороне сервера могут быть написаны на многих языках программирования. Если эти скрипты не разработаны и не протестированы тщательно, атакующий может найти и использовать бреши в коде для проникновения на web-сервер. Следовательно, скрипты должны быть написаны с учетом безопасности, например, не следует разрешать выполнение произвольных команд в системе или запуск небезопасных программ. Атакующий может найти слабые места посредством проб и ошибок, и у него нет необходимости знать исходный код скрипта, чтобы обнаружить уязвимости.
Генераторы содержимого на стороне сервера могут создать уязвимости на сервере следующим образом:
- они могут преднамеренно или непреднамеренно создать утечку информации о приложении сервера или ОС хоста, что может помочь атакующему в получении доступа к информации вне разрешенной области;
- при обработке данных, полученных от клиента (таких, как содержимое формы, параметры URL), может возникнуть уязвимость, в результате чего пользователь обманет приложение и заставит его выполнить произвольные команды, которые могут содержаться в потоке ввода. Это, в свою очередь, может позволить атакующему модифицировать содержимое сайта или всего сервера.
Идеально, чтобы скрипты
на стороне сервера ограничивали
пользователей небольшим
Уязвимость может потенциально воздействовать на весь web-сервер. Хотя чаще всего подобное происходит в CGI-приложениях, другие интерфейсы и технологии разработки серверных приложений также имеют изъяны. CGI, как наиболее ранний и часто используемый стандарт, приобрел большее значение за последние годы, но то же множество уязвимостей существует при использовании аналогичных технологий web-разработки на стороне сервера.
Common Gateway Interface ( CGI ) – CGI-скрипты определяют механизм, используемый для взаимодействия web-сайтов с базами данных и другими приложениями на стороне сервера. Существуют различные методы обработки информации на стороне сервера, такие, как Microsoft ASP для IIS-сервера, Java-сервлеты и РНР, поддерживаемые большинством web-платформ, включая Apache и IIS. Перечислим основные требования, которым должна удовлетворять лежащая в основе ОС:
- файловая система хоста должна обеспечивать безопасность для CGI-программ;
- web-сервер должен обеспечивать ограничения доступа к CGI-программам с точностью до директории;
- возможности безопасного программирования на Perl больше, чем у других языков (например, С, С++, shell).
Server Side Includes ( SSI ) – ограниченный скриптовый язык на стороне сервера, поддерживаемый большинством web-серверов. SSIпредоставляет множество динамических возможностей, например, включение текущего момента времени или даты последней модификации HTML файла, и является альтернативой использованию CGI-программ для выполнения определенных функций. Когда браузер запрашивает документ со специальным типом файла, таким, как .shtml, это говорит о том, что сервер должен обработать его перед тем, как послать клиенту (web-браузеру). Команды SSI встроены в HTML комментарии (к примеру, <!--#include file="standard.html"--> ). Сервер читает файл и ищет HTML комментарии, содержащие встроенные команды SSI. Когда он находит их, он заменяет часть исходного HTML-текста выходом найденной команды. Например, команда SSI, приведенная выше (#include file ), заменяет весь SSI-комментарий содержимым другого HTML файла. Это позволяет показать соответствующий логотип или другую статическую информацию, подготовленную в другом файле, для реализации унифицированного способа изображения во всех web-страницах. Некоторые доступные директивы дают возможность серверу выполнить произвольные системные команды и CGI-скрипты, которые могут создать нежелательные эффекты на стороне сервера. Вот некоторые проблемы, которые возникают при использовании SSI:
- безопасность SSI является очень слабой, если на сервере разрешена команда exec ;
- выполнение SSI может существенно сказаться на производительности сильно загруженных web-серверов;
- безопасность SSI сильно зависит от безопасности ОС или приложения web-сервера.
Microsoft Active Server Pages (ASP) – скриптовая технология на стороне сервера от Microsoft, аналогичная SSI, может быть использована для создания динамических и интерактивных web-приложений. ASP-страница представляет собой образец HTML, который содержит скрипты на стороне сервера, выполняющиеся, когда браузер запрашивает ресурс *.asp от web-сервера. Web-сервер обрабатывает запрошенную станицу и выполняет любые команды скрипта перед посылкой полученного результата браузеру пользователя. Поддерживаются скриптовые языки Jscript и VBScript, но могут быть включены и другие скриптовые языки, которые поддерживаются ASP-совместимым интерпретатором. Например, доступны скриптовые средства для языков PERL, REXX и Python. Скриптовые возможности могут быть расширены использованием объектов ActiveX, которые могут быть разработаны в различных языках, скажем, Visual Basic, C++, COBOL и Java. Скрипт, который включает объект ActiveX, может создать объект и передать ему необходимые входные параметры. Заметим, что ActiveX является необязательной технологией и не требуется для ASP.
Некоторые проблемы, которые
следует рассмотреть при
- ASP в отношении безопасности полагается на ОС и приложение web-сервера;
- безопасность клиента хорошо интегрируется с сервисами аутентификации web-сервера и ОС;
- ASP не поддерживает выполнение политики безопасности, тем самым, не существует метода ограничения привилегий для различных групп пользователей;
- ASP часто использует СОМ-объекты, которые могут иметь слабую безопасность.
Тем не менее, существуют определенные гарантии от переполнения буфера.
Java Servlets – сервлеты, основанные на технологии Java и являющиеся
Java-программами на стороне сервера. Web-сервер
первым делом определяет, требует ли запрос
пользователя динамически создаваемую сервлетом информац
Основные особенности, которые
следует учитывать при
- хорошая интеграция с возможностями обеспечения безопасности ОС и аутентификацией web-сервера для обеспечения строгой безопасности;
- возможности безопасного программирования:
- возможности безопасности языка Java ;
- строгая модель безопасности, поддерживающая ограничения, которые вводятся разработчиками и администраторами сервера;
- безопасная обработка ошибок.
PHP (Hypertext Preprocessor) – скриптовый язык, используемый для создания динамических web-страниц. Синтаксис РНР аналогичен С, Java и Perl, при этом код РНР встроен в HTML страницы для выполнения на стороне сервера. РНР обычно используется для извлечения данных из базы данных и представления их на web-странице. Большинство web-серверов на Windows и Unix поддерживают данный язык, и он широко применяется вместе с базой данных MySQL. Некоторые проблемы, которые следует учитывать при разработке на РНР:
- старые версии РНР имеют многочисленные уязвимости безопасности, нужно использовать самую последнюю версию;
- большие возможности конфигурирования, что может вызвать у новичков трудности, касающиеся безопасности;
- большинство свободно доступных кодов третьих фирм плохо написаны с точки зрения безопасности.
- При анализе или написании выполняемого активного содержимого или скрипта следует рассмотреть следующие вопросы:
- гарантировать, что выполняемый код является максимально простым. Большой и сложный код с большей вероятностью будет иметь проблемы, связанные с безопасностью;
- ограничить возможность выполняемого кода читать файлы и писать в файлы. Код, который читает файлы, может непредумышленно нарушить ограничения доступа или передать чувствительную системную информацию. Код, который выполняет запись в файлы, может модифицировать повредить документы или внедрить Троянских коней;
- проанализировать взаимодействие кода с другими программами или приложениями. Например, многие CGI-скрипты посылают e-mail в ответ на ввод данных формы, открывая соединение с программой sendmail. Гарантировать, что такое взаимодействие выполняется безопасным способом;
- на Linux/Unix-хостах код должен выполняться без установленного бита suid ;
- код должен использовать полные имена пути при вызове внешних программ. Полагаться на переменную окружения PATH для определения части имени пути не рекомендуется, так как она может быть модифицирована атакующим, в результате чего может выполниться программа атакующего, которая была им вставлена в какой-либо каталог;
- web-серверы (даже если они не используют активное содержимое) должны периодически сканироваться относительно наличия уязвимостей;
- для данных формы следует определить список допустимых символов и фильтровать все остальные символы из введенных данных до того, как будет обработана форма. Например, в большинстве форм возможны только такие категории данных, как буквы a-z, A-Z и цифры 0-9. Имена устройств, например, AUX, COM, LPT, NUL и
PRN должны также отфильтровываться из входных данных; - гарантировать, что динамически создаваемые страницы не содержат опасных метасимволов. Нарушитель может разместить эти теги в базе данных или файле. Когда динамическая страница создается, используя измененные данные, вредоносный код, встроенный в теги, может быть передан браузеру клиента. Затем браузер клиента может быть обманут, что приведет к выполнению программы атакующего. Данная программа будет выполняться в контексте безопасности браузера для соединения не с законным web-сервером, а с атакующим;
- множество символов кодировки должно быть явно установлено на каждой странице. Затем данные пользователя должны быть просканированы относительно последовательностей байтов, которые означают специальные символы для данной схемы кодирования;
- каждый символ в конкретном множестве символов может быть представлен в виде числового значения. Используя это свойство, можно обойти фильтрацию данных. Такое представление становится особенно важным, когда специальные символы являются частью динамических данных. Это представление может быть достаточно трудоемким, поэтому должен соблюдаться баланс между фильтрацией числового представления и другими методами фильтрации данных;
- cookies должны быть проанализированы относительно наличия любых специальных символов. Любые специальные символы должны быть отфильтрованы;
- следует использовать шифрование для паролей, вводимых с помощью форм;
- для web-приложений, которые имеют ограничения по имени пользователя и паролю, никакие web-страницы не должны быть доступны без выполнения соответствующего процесса аутентификации;
- многие web-серверы и некоторое другое ПО web-серверов инсталлируют примеры скриптов или выполняемых программ. Многие из них имеют известные уязвимости и должны быть немедленно удалены.

- Безопасность автомобиля
- Безопасность автомобиля
- Безопасность автомобиля. Экологическая безопасность автомобиля
- Безопасность алкоголя
- Безопасность АСУ ТП
- Безопасность атомных станций
- Безопасность баз данных
- Безопасное поведение на деревообрабатывающем производстве
- Безопасное поведение на транспорте. Как стать грамотным пассажиром
- Безопасное поведение при метерологических катастрофах
- Безопасное поведения подростка
- Безопасности дорожного движения в России
- Безопасность
- Безопасность cерверных web-приложений