Безопасность веб-сайта на CMS

Безопасность веб-сайта на CMS

Современные требования к Web-узлам обязывают использовать новый подход к разработке. Информация, размещаемая на Web-узлах должна быстро обновляться. Для решения этой проблемы создаются системы управления содержимым (CMS), которые позволяют легко изменять наполнение сайта через интуитивно понятный интерфейс. «Система управления сайтом», или CMS — последнее время один из самых распространенных способов администрирования Web-портала.

Существуют следующие способы работы CMS:

— Генерация страниц по запросу. Системы такого типа работают на основе связки «модуль редактирования -> база данных -> модуль представления». Модуль представления генерирует страницу с контентом при запросе на основе информации из базы данных. Информация в БД изменяется с помощью модуля Изменения. Страницы заново создаются сервером при каждом запросе, а это создает нагрузку на сервер. Но эта нагрузка может быть многократно снижена при использовании методов кэширования, которые имеются в современных Web-серверах.

— Генерация страниц при редактировании. Системы этого типа при редактировании страниц вносят изменения в содержание сайта и создают набор статичных страниц. При таком способе теряется интерактивность между посетителями сайтов и контентом данного сайта.

— Смешанный тип. Как понятно из названия, этот тип сочетает в себе преимущества первых двух. Может быть реализован путем кэширования — модуль представления генерирует страницу один раз, в дальнейшем она по прохождению некоторого времени будет в несколько раз быстрее загружаться из кэша. Второй подход — сохранение определенных информационных блоков на этапе редактирования сайта и сборки страниц из этих блоков при запросе соответствующей страницы пользователем.

Система управления содержимым во многих случаях является причиной получения несанкционированного доступа к Web-серверу. Постоянно публикуются все новые уязвимости популярных CMS, возможность эксплуатации которых ставит под угрозу безопасность всего сервера. Защита системы управления содержимым позволит значительно повысить защищенность сервера от внешних угроз.

Все существующие CMS не гарантируют безопасности Web-сервера. Эти проблемы связаны с уязвимостью системы управления содержимым. Нужно постоянно обновлять систему управления, следить за правильностью функционирования и работоспособностью. Для поддержки системы управления постоянно требуется системный администратор, что значительно увеличивает расходы на эксплуатацию и не гарантирует полной безопасности. Огромное значение имеет человеческий фактор, поскольку администратор всегда может забыть установить необходимое обновление. Таким образом задача разработки максимально защищенной системы управления стоит сегодня особенно остро.

Главными недостатками бесплатной системы управления является полное отсутствие поддержки и большая задержка выхода обновлений, что делает систему управления опасной. Однако ежедневно значительное количество сайтов создается на бесплатных системах управления содержанием. Прежде всего это связано с непониманием всех масштабов угроз для компании.

Используя коммерческую систему управления содержимым, возможно повысить уровень безопасности корпоративного Web-сервера, однако далеко не все производители CMS заботятся о безопасности должным образом. Это связано с тем, что основные усилия компаний направлены на разработку интерфейса. Действительно, почти все компании, покупая CMS, оценивают ее только с точки зрения удобства интерфейса, совершенно забывая о безопасности.

Среди всех систем управления, используемых в Украине можно выделить наиболее популярные и бесплатные (Joomla, PHPNuke, e107, WordPress, Joostina, DLE, Kasseler, Limbo, Sawanna,) и коммерческие системы управления (Amiro CMS, NetCat, Bitrix, Twilight CMS, CMS СЕКУНДА).

Следует помнить, что высокий уровень безопасности для CMS является необходимым, но важным фактором все равно остается интерфейс. Поэтому оценку систем управления следует проводить по различным параметрам касающимся безопасности, пользовательского интерфейса и стоимости.

Рассуждая о системах управления содержанием, следует учитывать, что часто от пользователей этого класса программного обеспечения не требуется специальной технической квалификации. Впрочем, любой пользователь, будучи живым человеком, не застрахован от совершения ошибочных действий в повседневной работе. Предмет исследования — то, как различные CMS реагируют на ошибочные действия пользователей. Преимущественно все программы — участники списка в различных ситуациях либо не допускают ошибочных действий, либо сообщают о них.

Оценка безопасности коммерческих систем управления содержимым является очень трудоемкой задачей. Прежде всего это связано с отсутствием документации по архитектуре систем управления и закрытыми исходными кодами, поскольку все коммерческие CMS написанные на PHP и закодированные с помощью Zend Optimizer.

Однако для оценки безопасности CMS можно воспользоваться статистическими данными по нахождению различных уязвимостей. Здесь следует понимать, что большинство разработчиков тщательно скрывают все найденные ошибки в безопасности, чтобы не подорвать коммерческий успех продуктов.

Однако общая статистика среди лидеров рынка такова, что менее популярные системы управления имеют меньшее количество уязвимостей. Прежде всего это связано с количеством затраченного времени на поиск уязвимостей. Но, рассматривая статистику найденных уязвимостей, есть возможность спроектировать систему управления сайтом так, чтобы полностью исключить появление большинства типов уязвимостей. Здесь важно правильно выбрать технологию и платформу для разработки системы.

Для безопасности и простоты использования системы управления содержимым большое значение имеет выбор платформы разработки.

Платформы разработки и архитектуры современных систем управления содержанием. Для разработки системы управления содержимым необходимо использование 3-х составляющих:

— Web-сервер (Apache, IIS, NGINX);

— Платформа разработки (PHP, PERL, ASP);

— Сервер базы данных (MYSQL, PGSQL, MSSQL, ORACLE).

Для выбора платформы разработки и сервера базы данных нужно исходить из следующего:

— Крупнейшей распространенности на различных Web серверах;

— Показателей производительности;

— Возможностей масштабируемости;

— Уровня безопасности;

— Стоимости использования.

Для разработки CMS наиболее рациональным является использование связки Apache + PHP + MYSQL.

Основными преимуществами такой связи являются:

— Возможность бесплатного использования;

— Легкая настройка;

— Высокая производительность;

— Достаточный уровень безопасности.

Почти все коммерческие и бесплатные системы управления работают именно на Apache, PHP и MYSQL. Поэтому анализ архитектуры нужно проводить с учетом того, что система будет разработана именно на этой платформе.

Много дорогих систем управления имеют версию на более совершенных платформах, которые используют как базу данных Oracle и MSSQL. Но поскольку изначально все системы проектируются так, чтобы было возможно использовать их на бесплатных платформах, то выбор более дорогих платформ ведет лишь к повышению производительности большинства CMS.

Важно отметить то, что все обращения к базе данных и запросы проходят через модуль безопасности запросов. Тем самым повышается уровень безопасности системы, однако есть и ряд недостатков этой схемы. Поскольку еще достаточно много уязвимых модулей элементов CMS, таких как модули новостей и каталоги, система безопасности должна полностью контролировать каждый из модулей и процессов.

Существует несколько типов атак на системы управления содержанием.

Во-первых, атакующий может осуществить модификацию строки запросов так, чтобы вызвать SQL-injection или PHP-including. Почти для всех CMS реализаций PHP-including полностью невозможно. Однако реализация SQL-injection возможна во многих случаях.

Во-вторых, в каждой CMS есть модуль, позволяющий оставить любую информацию на сайте. Здесь возможно обойти проверку введенной информации и опубликовать на сайте специальный код, тем самым реализовав XSS атаку.

Также существуют уязвимости, связанные с разграничением прав администраторов различного уровня доступа.

Недостатки и уязвимости современных систем управления содержанием.

Атаки SQL-injection. Внедрение SQL-кода (англ. SQL injection)-один из распространенных средств взлома сайтов и программ, работающих с базами данных. Средство основано на внедрении в запрос произвольного SQL-кода.

В зависимости от типа СУБД, используемой и условий внедрения, это средство может дать возможность атакующему выполнить произвольный запрос к базе данных (например, прочитать содержимое любых таблиц, удалить, изменить или добавить данные), получить возможность чтения и (или) записи локальных файлов и произвольных команд на сервере.

Атака типа SQL injection может быть возможным по причине некорректной обработки входящих данных, используемых в SQL-запросах.

Главным недостатком большинства CMS является динамическая адресация.

Такая адресация страниц позволяет тому, что атакующий легко изменять значения переданных переменных, что ставит под угрозу всю систему безопасности. Также использование динамической адресации является нежелательным для регистрации сайта поисковиками.

Почти во всех CMS для решения этой проблемы используется modrewrite, однако не всегда поддерживается компаниями, предоставляющими услуги хостинга.

Однако использование modrewrite не позволяет защитить CMS от передачи модифицированных переменных. В этом случае вся обработка и выявление атак ложится на систему управления.

Это допускает возможность использования довольно широкого спектра атак, реализующих SQL-injection таким образом.

Атаки XSS. XSS (Cross Site Sсriрting) — тип уязвимости интерактивных информационных систем. XSS возникает, когда в страницы, которые генерирует сервер, по какой причине попадают скрипты пользователей. Специфика подобных атак заключается в том, что вместо непосредственной атаки на сервер они используют уязвимый сервер в качестве средства атаки на клиента.

Уязвимость, типа XSS, возникает в ситуациях, когда данные, которые были введены пользователем, выводятся без надлежащей фильтрации в тексте html документа, сгенерированный сервер. Например, может быть ситуация, когда данные, отправленные одним пользователем без фильтрации выводятся другим пользователям. Типичной системой такого рода является чаты, форумы, различные системы управления.

Вторым вариантом уязвимости, является ситуация, когда часть HTTP GET запроса выводится на этой же html странице тому же пользователю без надлежащей фильтрации. Как правило — это ситуации, когда без надлежащей фильтрации выводится идентификатор сессии или другие GET параметры. В первую очередь имеется в виду SQL-инъекция с возможностью внедрения benchmark () функции, таким образом, что один запрос сильно нагрузит уязвимый сервер. Об уязвимости типа SQL-инъекция и в том числе об использовании функции benchmark в SQL запросе для проведения DOS атаки, рассказано в этой статье.

Концепция защищенной системы управления.  Для разработки концепции защищенной системы управления необходимо также рассмотреть недостатки систем управления, наиболее часто встречаются.

Любая система управления содержит уязвимости и зачастую администраторы забывают об обновлении системы управления. Это может служить причиной взлома сайта и всего сервера. Обновление системы управления является достаточно сложной процедурой. Большинство систем управления не позволяют осуществить обновление полностью автоматически. Требуется их доработка руками администратора, что вызывает боязнь обновлений системы управления.

Эту проблему возможно решить лишь при помощи системы активных обновлений. Т.е. обновление происходит автоматически. В большинстве систем управления автоматические обновления осуществляются частично по запросу администратора из системы управления.

Большинство CMS осуществляют неполный анализ параметров, передаваемых. Именно на этом уровне можно защитить систему управления от атак SQL-injection и PHP-including.

Для осуществления надежной фильтрации необходимо отбрасывать все специальный символы и оставлять только буквы латинского алфавита и арабские цифры. Тем самым можно гарантировать невозможность осуществления некорректных запросов SQL еще на уровне ядра системы управления.

Основные требования к безопасности современных систем управления содержанием. Проведенный анализ современных систем управления содержанием и механизмов реализации атак позволяет выработать требования, которым должна удовлетворять безопасная CMS. Прежде всего система управления должна быть полностью защищена от модификации строки запроса. Это позволит полностью избежать довольно широкого класса атак SQL-injection.

Очень часто системы управления не позволяют использовать полностью статические адреса и используют прямую передачу значения переменных в запросе. Эту проблему необходимо полностью решить, используя обработку ошибки 404.

Для реализации анализа строки запроса должно быть реализовано следующее:

1. Полное удаление специальных символов. В результате выполнения подобного фильтра должны оставаться только символы латинского алфавита в нижнем регистре, арабские цифры и «/».

2. Далее должен быть проведен логический анализ подобного запроса на предмет существования указанной страницы, директории или модуля.

3. В случае, если указанная страница существует, происходит генерация ее кода на основании информации, полученной из базы данных.

Выводы. Количество модулей, осуществляющих публикацию информации, полученной от посетителей сайта, должна быть сведена к минимуму.

Проверка публикуемой информации должна производиться качественно. Необходимо полностью исключить размещение javascript и различных файлов с внешних серверов. Это даст практически полную защиту от реализации XSS атак.

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.