Аудит безопасности сайта - это комплекс мер, направленных на устранение программных уязвимостей в структуре сайта. Подобные уязвимости открывает доступ к трём возможностям:
- проникновение к закрытой конфиденциальной информации, например, логины и пароли личных кабинетов, содержание закрытых баз данных;
- несанкционированное администрирование и модерирование сайта;
- нарушение работы сайта (замедление, заспамленность, некорректные ссылки, исчезновение некоторых страниц и пр.), вплоть до полного обрушения.
Причины опасности
Безопасность ресурса может находиться под угрозой по разным причинам:
Очень распространенный вариант - конкуренты, многие компании не гнушаются вести в интернете такую скрытую войну
Другой вариант немного конспирологический - разработчики антивирусов, да и сами компании, занимающиеся улучшением безопасности сайтов, сами же создают причину своей повышенной востребованности
Третий вариант объединяет спонтанные хакерские атаки, когда искомый сайт не является целью, а просто «попадает под раздачу»
Четвёртый вариант - банальное воровство, только в онлайн-версии, например, когда воруется прибыль у интернет-магазинов
Стандартная схема аудита безопасности сайта
Важно подчеркнуть, что высокая безопасность сайта не даст стопроцентную защиту. Однако при возможной атаке хорошо защищенный ресурс пострадает гораздо меньше. Аудит безопасности сайта включает в себя следующие компоненты:- Имитация атаки. Одним из лучших вариантов определить брешь в защите будет создание условий взлома, имитирование хакерского нападения. Разумеется, никакого реального вреда такая атака ресурсу не принесёт, но она проводится в режиме реального времени при полностью задействованном сайте, что приближает условия к настоящим. Сценарии атаки обновляются параллельно возникновению новых вирусов и способов взлома. Это позволяет оценить общую безопасность веб-ресурса.
- Мониторинг кода сайта. Здесь проводится всесторонний анализ плагинов и скриптов, особенно плагинов. О чём идёт речь? Структура сайта и его функционирование являются слишком сложными для того, чтобы быть описанными на машинном коде (низкоуровневом языке программирования). Для этого используется высокоуровневый язык программирования. По сути, скрипты и плагины - это программы, которые управляют другими, более простыми программами. Среди объектов высокоуровневого языка программирования множество весьма известных: Java Script, Паскаль, 1С, PHP (этот скриптовый язык активным образом применяется для создания веб-приложений) и т.д. Несмотря на то, что высокоуровневый язык программирования отличается универсальностью, полностью независимыми в структуре сайта являются немногие высокоуровневые программы, как правило, связанные с подсчётами и обработкой данных. Другие при работе вынуждены постоянно обращаться к ядру операционной системы. Однако высокоуровневые программы не заточены под какую-то конкретную ОС. Это возможное несоответствие в коде является одной из потенциальных брешей. Среди скриптов и плагинов плагины выделены неслучайно, поскольку при проблемах со скриптами программа выдаст сообщение об ошибке. А нарушение работы плагина может привести к более серьёзным ошибкам сегментации, когда происходит обращение к закрытым для записи зонам компьютерной памяти, либо при попытке изменить память вне протокола.
- Логическим продолжением является подробный анализ продуктов сторонних разработчиков, которые задействованы на сайте. Хакеры часто используют возникающие конфликты между такими программами и ОС.
- Затем проводится тестирование публикации. Безопасность сайта нередко оказывается под угрозой с момента его создания. Причиной тому - оказавшиеся в открытом доступе файлы бэкапа и системные файлы.
- Проверка хостинга и всего серверного программного обеспечения.
Конкретные примеры опасностей
Теперь более конкретно о возможных проблемах, которые превентивно решаются, когда проводится аудит безопасности сайта:- Анализ возможности удаленного выполнения кода. Сейчас уже известный пример: загрузка изображений извне в библиотеку imagemagick. До обнаружения уязвимости в 2016 году это приложение активно использовалась на многих сайтах. В имени файла картинки может быть прописана Shell-команда, поскольку до недавнего времени imagemagick имел проблемы с фильтрацией имён файлов. Например, вставка такой команды, как https://example.com”|ls “-la, могла дать доступ к перечню файлов в библиотеке сайта. Суть в том, что со стороны в какое-то приложение, программный пакет забрасывается файл с прописанной командой, которая не подвергается фильтрации. Исполнение приложением такой команды приводит к расширению возможностей обычного пользователя до юзера веб-сервера.
- Анализ возможности инъекции SQL-кода. SQL - это язык программирования, предназначенный для управления базами данных и их корректировки. Например, если на сервер будет передан параметр id с элементом 1=1, то это будет ситуация, когда в запрос включили конструкцию языка SQL. Соответственно, изменится SQL-запрос системы. В данном случае, 1=1 может открыть доступ не к одной ячейке в базе данных, а ко всем. Существует множество приемов внедрения во внешние запросы SQL-элементов, которые позволяют не только читать базы данных полностью, но и изменять данные в них.
- Проверка уровня безопасности VIP-аккаунтов.
- Анализ того, насколько высока безопасность относительно внедрений класса Race Condition. Здесь все строится на аутентификации с использованием багов в коде приложений, классическая отправка вредоносных кодов здесь не применяется.
- Анализ защищенности логинов и паролей.
- Анализ надежности процедуры регистрации и многое другое.