Глава 11. Безопасность в протоколах прикладного уровня, web-технологиях Информационная безопасность – комплексный, бесконечный процесс, значимость которого сложно недооценить. Но, к сожалению, часто ему не уделяется должного внимания. Именно халатное отношение к безопасности Web-приложений в частности может привести к значительным потерям для компании – как репутационным, так и к экономическим. Известен факт, что многие компании полагаются на профессионализм разработчиков Web-приложений. Считается, что если разработчик высококвалифицированный, то он сумеет создать приложение, которое максимально защищено от любых внешних угроз. Однако это не так, всегда найдутся уязвимости. Ответ лежит в плоскости психологии: на практике основные усилия разработчиков направлены на оптимизацию, эффективность приложения и удобство пользователей, в то время как злоумышленник ищет скорее изъяны, несоответствия политикам безопасности. Не лишним будет упомянуть и теорему Тихонова, которая гласит, что чем больше программный код, тем больше в нем уязвимостей. В связи с тем, что приложения сегодня создаются на языках высокого уровня, вероятность того, что будут найдены ошибки, очень велика.
Одним из основных мифов и главных источников разочарования можно считать убеждение, что Web-приложение безопасно благодаря использованию firewall, IDS/IPS и т.п. средствам обеспечения информационной безопасности. Вся защита многих компаний во время использования HTML-кодов сводится лишь к установке нескольких пакетных фильтров. То есть по большому счету просматриваются лишь первые четыре уровня эталонной модели OSI. При этом известно, что пакетный фильтр принципиально не может ни определить содержимое запросов, ни провести анализ содержимого (content analysis). Особенно критичной эта проблема стала, когда активно начали использоваться базы данных, сценарии (скрипты), технологии Java, flash, ActiveX, JavaScript и т.п. С их появлением и распространением вся прежняя идеология защиты стала, по сути, почти бесполезной.
Первые web-серверы фактически реализовывали банальный read-only файловый доступ к статичному содержимому по протоколу http. Никакой динамики, никакого содержимого, формирующегося «на-лету», никаких активных страниц. Когда-то даже вопрос: «Может ли открытие страницы сайта или текста сообщения электронной почты привести к каким-либо неприятным последствиям?» вызывал улыбку. Ну как может навредить простое чтение обычного текста?
Сценарии JavaScript, встраиваемые в код страниц, вначале рассматривались как любопытное дополнение, позволяющее придать интерактивность веб-страницам. Сейчас это важнейшее и большое направления развития веб-технологий, с возможностью создания сценариев, работающих не только на стороне клиента, но и на стороне сервера. С использованием javascript создают уже даже т.н. браузерные операционные системы: например, исходный код IndraDesktop WebOS на 75% состоит из JavaScript. 16,4% исходного кода Mozilla Firefox написано на JavaScript. Ясно, что без «погружения» в глубины языка обеспечить адекватный уровень безопасности при его использовании, используя только пакетные фильтры и IDS/IPS – невозможно.
Ещё одной серьёзнейшей угрозой безопасности является технология Cross-Site Scripting (XSS), позволяющая злоумышленникам манипулировать содержанием и действиями интернет-приложений в пользовательском браузере, без взлома самих сайтов. К этой же категории относятся связанные с XSS уязвимости, включая Script Insertion и Cross-Site Request Forgery. Уязвимости Cross-Site Scripting часто используются против определенных пользователей Web-сайтов для кражи их учетных записей или организации атак от чужого имени. Другая серьезная угроза – утечка информации. Опасно давать пользователю больше информации, чем ему надо знать. Например, недопустимо при какой-либо ошибке выводить в диагностике часть SQL-запроса или имя служебного файла. Подобные утечки создают фундамент для будущих атак. И чем меньше знает пользователь о том, как работает приложение, тем лучше.
Базовое решение проблем безопасности Web-приложений должно сводиться к двум факторам: к обеспечению, во-первых, технологической безопасности, а во-вторых, административной. Причем второй фактор занимает иногда до 80% всей системы безопасности. Именно от административных решений зависит во многом надёжность системы информационной безопасности и Web-приложений, в частности. Всегда важно помнить, что разрабатываемое или настраиваемое приложение должно соответствовать основным нормативным документам и политике безопасности предприятия. Изначально компании необходимо выстроить свою вертикаль системы безопасности, прописать политику безопасности, благодаря которой каждый сотрудник сможет увидеть, что ему разрешено, а что нет. У каждого должен быть свой список должностных инструкций и регламент поведения. Без этих базовых вещей технологическая часть просто бессмысленна.
Что касается технологической стороны, то здесь в обязательном порядке должен быть прописан регламент разработки Web-приложений, в котором, например, указаны пути миграции данных. Также необходимо проводить аудит Web- и внутренних ресурсов, реализовать строгую аутентификацию пользователей, четко разграничивать права доступа к ресурсам как внешних, так и внутренних пользователей, использовать Web Application Firewall, host based intrusion prevention system или HIPS в дополнение к сетевой IPS.
С развитием и распространением Web-технологий, включающих в себя множество самых разнообразных протоколов, языков программирования, методик, определились два основных направления угроз: атаки на клиентские системы и атаки на веб-сайт (сервер).
Атаки на клиентскую систему могут включать в себя похищение учётных данных (паролей) пользователя, организации атак от имени похищенной учётной записи, рассылка спама. Чрезвычайно популярным в последнее время, в основном в России и на Украине, стали т.н. SMS-вымогатели – при заходе на определённую страницу сайта у пользователя на экране возникает «неудаляемое» окно с предложением отправить SMS для разблокирования, т.е. таким способом реализуется DoS-атака на клиента.
Вариантов атаки на веб-ресурс существует большое количество. Целью может быть удовлетворение от демонстрации своих возможностей, политика (взлом сайтов нескольких московских судов тому пример), материальная выгода. Список некоторых распространённых атак на веб-сайты:
Deface (deface — уродовать, искажать) — тип атаки, при которой главная (или другая важная) страница веб-сайта заменяется на другую — как правило, вызывающего вида (реклама, предупреждение, угроза…). Зачастую доступ ко всему остальному сайту блокируется. Некоторые взломщики делают deface сайта для получения признания в хакерских кругах, повышения своей известности или для того, чтобы указать администратору сайта на уязвимость.
Удаление файловой системы — вся информация удаляется, что становится фатальным в случае отсутствия сохранённой копии ресурса (отсутствия резервной копии, backup). Пропасть может и база клиентских паролей, и база данных кредитных карт, и прочие данные, имеющие критичную ценность.
Подмена информации — злоумышленники могут подменить телефон или другие данные организации. В этом случае ваши клиенты автоматически становятся клиентами злоумышленников.
Размещение троянских программ — в этом случае визит хакера будет замечен не сразу, по крайней мере хакер будет стараться провести атаку максимально скрытно. Внедрённые вредоносные программы могут выполнять самые разнообразные функции — осуществлять переадресацию на сайт злоумышленников, воровать персональные данные клиентов, заражать посетителей вирусами и так далее.
Рассылка спама — ваш сайт могут использовать для рассылки спама, в этом случае ваша «настоящая» корреспонденция может не доходить до адресата, так как домен вашей организации попадёт в «чёрные списки» базы данных спамеров.
Создание высокой нагрузки на сайт — отправление в адрес веб-сервера заведомо некорректных запросов или иные действия извне, результатом которых будет затруднение доступа к сайту или падение операционной системы сервера. Такой вид атаки очень широко распространен в интернете. Часто запросы оправляются с большого количество распределённых сетевых узлов, организуя DDoS (Distributed Denial of Sevices).
|