Виды информационных угроз и способы борьбы с ними


Информационные системы стали неотъемлемой частью нашей жизни. Важность сохранения безопасности собственных данных очень велика, а уровень компетенции, даже среди IT специалистов, далек от совершенства. Чтобы знать как защитить свои данные, следует прежде всего понять как они могут быть повреждены. Из собственного опыта работы в сфере IT пришло понимание в необходимости систематизированного подхода к изучению информационных угроз.

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

Содержание
Аутентификация (Authentication)
Раздел, посвященный аутентификации описывает атаки, направленные на используемые Веб-приложением методы проверки идентификатора пользователя, службы или приложения.
Подбор (Brute Force)
Описание
Подбор – автоматизированный процесс проб и ошибок, использующийся для того, чтобы угадать имя пользователя, пароль, номер кредитной карточки, ключ шифрования и т.д.
Существует два вида подбора: прямой и обратный. При прямом подборе используются различные варианты пароля для одного имени пользователя. При обратном перебираются различные имена пользователей, а пароль остается неизменным.

Решение
Традиционным методом борьбы с подбором пароля является, ограничение на количество ошибочных вводов пароля. Существует множество вариантов реализаций этой идеи, от самых простых – статическое ограничение, например не более трех ошибок, до сложно реализованных динамических, с увеличивающимся промежутком времени запрета между запросами.
Недостаточная аутентификация (Insufficient Authentication)
Описание
Эта уязвимость возникает, когда Веб-сервер позволяет атакующему получать доступ к важной информации или функциям сервера без должной аутентификации. Интерфейсы администрирования через Веб – яркий пример критичных систем. В зависимости от специфики приложения, подобные компоненты не должны быть доступны без должной аутентификации.

Пример
Многие Веб-приложения по умолчанию используют для административного доступа ссылку в корневой директории сервера ( /admin/ ). Обычно ссылка на эту страницу не фигурирует в содержимом сервера, однако страница доступна с помощью стандартного браузера. Поскольку пользователь или разработчик предполагает, что никто не воспользуется этой страницей, так как ссылки на нее отсутствует, зачастую реализацией аутентификации пренебрегают. И для получения контроля над сервером злоумышленнику достаточно зайти на эту страницу.

Решение
Решение достаточно просто – при входе в администраторскую часть сайта, пользователь обязан провести дополнительную аутентификацию, не смотря на общую на сайте.
Небезопасное восстановление паролей (Weak Password Recovery Validation).
Описание
Эта уязвимость возникает, когда Веб-сервер позволяет атакующему несанкционированно получать, модифицировать или восстанавливать пароли других пользователей.

Пример
Многие серверы требуют от пользователя указать его email в комбинации с домашним адресом и номером телефона. Эта информация может быть легко получена из сетевых справочников. В результате, данные, используемые для проверки, не являются большим секретом. Кроме того, эта информация может быть получена злоумышленником с использованием других методов, таких как межсайтовое выполнение сценариев или фишинг (phishing).

Решение
Наиболее эффективным является следующее решение: пользователь нажимает кнопку "Восстановить пароль" и попадает на страницу, где у него спрашивают его логин в системе и почтовый ящик, указанный при регистрации. Далее на почтовый ящик высылается уведомление о запросе восстановления пароля и уникальная псевдослучайно сгенерированная ссылка на страницу смены пароля. В таком случае пароль изменить может действительно только владелец почтового ящика, на который зарегистрирован аккаунт.
Авторизация (Authorization)
Данный раздел посвящен атакам, направленным на методы, которые используются Веб-сервером для определения того, имеет ли пользователь, служба или приложение необходимые для совершения действия разрешения.
Предсказуемое значение идентификатора сессии (Credential/Session Prediction)
Описание
Предсказуемое значение идентификатора сессии позволяет перехватывать сессии других пользователей. Подобные атаки выполняются путем предсказания или угадывания уникального идентификатора сессии пользователя.

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

Решение
Средствами борьбы являются правильное конфигурирование Веб-сервера, и более надежный способ – создание собственного механизма сессий.
Недостаточная авторизация (Insufficient Authorization)
Описание
Возникает, когда Веб-сервер позволяет атакующему получать доступ к важной информации или функциям, доступ к которым должен быть ограничен. То, что пользователь прошел аутентификацию не означает, что он должен получить доступ ко всем функциям и содержимому сервера.

Пример
В прошлом многие Веб-серверы сохраняли важные ресурсы в "скрытых" директориях, таких как "/admin" или "/log". Если атакующий запрашивал эти ресурсы напрямую, он получал к ним доступ и мог перенастроить сервер, получить доступ к важной информации либо полностью скомпрометировать систему.
Некоторые серверы, после аутентификации, сохраняют в cookie или скрытых полях идентификатор "роли" пользователя в рамках Веб-приложения. Если разграничение доступа основывается на проверке данного параметра без верификации принадлежности к роли при каждом запросе, злоумышленник может повысить свои привилегии, просто модифицировав значение cookie.

Решение
Методы борьбы – четкое разграничение прав пользователей и их возможностей.
Отсутствие таймаута сессии (Insufficient Session Expiration)
Описание
В случае если для идентификатора сессии или учетных данных не предусмотрен таймаут или его значение слишком велико, злоумышленник может воспользоваться старыми данными для авторизации.

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

Решение
Метод борьбы – ограничение таймаута сессии.
Фиксация сессии (Session Fixation)
Описание
Используя данный класс атак, злоумышленник присваивает идентификатору сессии пользователя заданное значение.
К сожалению, системы, использующие cookie, являются наиболее уязвимыми. Большинство известных на настоящий момент вариантов фиксации сессии направлены именно на значение cookie.
В отличие от кражи идентификатора, фиксация сессии предоставляет злоумышленнику гораздо больший простор для творчества. Это связанно с тем, что активная фаза атаки происходит до входа пользователя в систему.
Атаки на клиентов (Client-side Attacks)
Этот раздел описывает атаки на пользователей со стороны Веб-сервера.
Подмена содержимого (Content Spoofing)
Описание
Используя эту технику, злоумышленник заставляет пользователя поверить, что страницы сгенерированы Веб-сервером, а не переданы из внешнего источника.

Решение
Для защиты от данного вида атак нужно лишь отказать от использования фреймов и самое главное никогда не передавать в параметрах абсолютные или локальные пути, к каким бы то ни было файлам.
Межсайтовое выполнение сценариев (Cross-site Scripting, XSS)
Описание
Наличие уязвимости Cross-site Scripting позволяет атакующему передать серверу исполняемый код, который будет перенаправлен браузеру пользователя. Этот код обычно создается на языках HTML/JavaScript, но могут быть использованы VBScript, ActiveX, Java, Flash, или другие поддерживаемые браузером технологии.

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

Существует два типа атак, приводящих к межсайтовому выполнению сценариев: постоянные (сохраненные) и непостоянные (отраженные). Основным отличием между ними является то, что в отраженном варианте передача кода серверу и возврат его клиенту осуществляется в рамках одного HTTP-запроса, а в хранимом – в разных.

Осуществление непостоянной атаки требует, чтобы пользователь перешел по ссылке, сформированной злоумышленником (ссылка может быть передана по email, ICQ и т.д.). В процессе загрузки сайта код, внедренный в URL или заголовки запроса, будет передан клиенту и выполнен в его браузере.
Сохраненная разновидность уязвимости возникает, когда код передается серверу и сохраняется на нем на некоторый промежуток времени. Наиболее популярными целями атак в этом случае являются форумы, почта с Веб-интерфейсом и чаты. Для атаки пользователю не обязательно переходить по ссылке, достаточно посетить уязвимый сайт.

Решение
На данный момент самый распространенный вид атаки, в связи с ростом популярности Веб 2.0 интернет наполнился различными формами обратной связи, к сожалению многие из них не фильтруются должным образом, особую сложность представляют формы, в которых разрешены некоторые теги или какие-либо конструкции форматирования, защитится же от XSS можно только путем тщательного анализа и фильтрации пришедших в запросах данных.
Расщепление HTTP-запроса (HTTP Response Splitting)
Описание
При использовании данной уязвимости злоумышленник посылает серверу специальным образом сформированный запрос, ответ на который интерпретируется целью атаки как два разных ответа. Второй ответ полностью контролируется злоумышленником, что дает ему возможность подделать ответ сервера.
В результате успешной реализации этой атаки злоумышленник может выполнить следующие действия:
  • Межсайтовое выполнение сценариев.
  • Модификация данных кэша сервера-посредника.
  • Межпользовательская атака (один пользователь, одна страница, временная подмена страницы).
  • Перехват страниц, содержащих пользовательские данные.
Выполнение кода (Command Execution)
Эта секция описывает атаки, направленные на выполнение кода на Веб-сервере. Все серверы используют данные, преданные пользователем при обработке запросов. Часто эти данные используются при составлении команд, применяемых для генерации динамического содержимого. Если при разработке не учитываются требования безопасности, злоумышленник получает возможность модифицировать исполняемые команды.
Переполнение буфера (Buffer Overflow)
Описание
Эксплуатация переполнения буфера позволяет злоумышленнику изменить путь исполнения программы путем перезаписи данных в памяти системы.
Переполнение буфера может вызывать отказы в обслуживании, приводя к повреждению памяти и вызывая ошибки в программах. Более серьезные ситуации позволяют изменить путь исполнения программы и выполнить в ее контексте различные действия. Это может происходить в нескольких случаях.

Решение
Тщательно проверять входные параметры CGI скриптов написанных на С++ или С, а также позаботится для защиты от атак подобного типа, это своевременное обновление программ серверов, будь-то Веб-Сервер или СУБД.
Атака на функции форматирования строк (Format String Attack)
Описание
При использовании этих атак путь исполнения программы модифицируется методом перезаписи областей памяти с помощью функций форматирования символьных переменных. Уязвимость возникает, когда пользовательские данные применяются в качестве аргументов функций форматирования строк, таких как fprintf, printf, sprintf, setproctitle, syslog и т.д.

Решение
Не применять передаваемые данные в качестве параметров данных функций, а лучше вообще отказаться от использования этих функций в связи с их потенциальной опасностью.
Внедрение операторов LDAP (LDAP Injection)
Описание
Атаки этого типа направлены на Веб-серверы, создающие запросы к службе LDAP на основе данных, вводимых пользователем. Упрощенный протокол доступа к службе каталога (Lightweight Directory Access Protocol, LDAP) – открытый протокол для создания запросов и управления службами каталога совместимыми со стандартом X.500. Протокол LDAP работает поверх транспортных протоколов Internet (TCP/UDP). Веб-приложение может использовать данные, предоставленные пользователем для создания запросов по протоколу LDAP при генерации динамических Веб-страниц. Если информация, полученная от клиента, должным образом не верифицируется, атакующий получает возможность модифицировать LDAP-запрос.
Запрос будет выполняться с тем же уровнем привилегий, с каким работает компонент приложения, выполняющий запрос (сервер СУБД, Веб-сервер и т.д). Если данный компонент имеет права на чтение или модификацию данных в структуре каталога, злоумышленник получает те же возможности.
Выполнение команд ОС (OS Commanding)
Описание
Атаки этого класса направлены на выполнение команд операционной системы на Веб-сервере путем манипуляции входными данными. Если информация, полученная от клиента, должным образом не верифицируется, атакующий получает возможность выполнить команды ОС. Они будут выполняться с тем же уровнем привилегий, с каким работает компонент приложения, выполняющий запрос (сервер СУБД, Веб-сервер и т.д).

Решение
Решение данной проблемы – правильно настроенный сервер.
Внедрение операторов SQL (SQL Injection)
Описание
Эти атаки направлены на Веб-серверы, создающие SQL запросы к серверам СУБД на основе данных, вводимых пользователем.
Если информация, полученная от клиента, должным образом не верифицируется, атакующий получает возможность модифицировать запрос к SQL-серверу, отправляемый приложением. Запрос будет выполняться с тем же уровнем привилегий, с каким работает компонент приложения, выполняющий запрос (сервер СУБД, Веб-сервер и т.д). В результате злоумышленник может получить полный контроль на сервере СУБД и даже его операционной системой. С точки зрения эксплуатации SQL Injection очень походит на LDAP Injection.

Решение
Еще один из наиболее эксплуатируемых видов атак, средства борьбы – грамотная фильтрация получаемых данных.
Внедрение серверных расширений (SSI Injection)
Описание
Атаки данного класса позволяют злоумышленнику передать исполняемый код, который в дальнейшем будет выполнен на Веб-сервере. Уязвимости, приводящие к возможности осуществления данных атак, обычно заключаются в отсутствии проверки данных, предоставленных пользователем, перед сохранением их в интерпретируемом сервером файле.
Перед генерацией HTML страницы сервер может выполнять сценарии, например Server-site Includes (SSI). В некоторых ситуациях исходный код страниц генерируется на основе данных, предоставленных пользователем. Если атакующий передает серверу операторы SSI, он может получить возможность выполнения команд операционной системы или включить в нее запрещенное содержимое при следующем отображении.

Решение
Противодействие такое же, как и при SQL инъекции.
Внедрение операторов XPath (XPath Injection)
Описание
Эти атаки направлены на Веб-серверы, создающие запросы на языке XPath на основе данных, вводимых пользователем.
Язык XPath 1.0 разработан для предоставления возможности обращения к частям документа на языке XML. Он может быть использован непосредственно либо в качестве составной части XSLT-преобразования XML-документов или выполнения запросов XQuery.

Решение
Противодействие такое же, как и при SQL инъекции.
Разглашение информации (Information Disclosure)
Атаки данного класса направлены на получение дополнительной информации о Веб-приложении. Используя эти уязвимости, злоумышленник может определить используемые дистрибутивы ПО, номера версий клиента и сервера и установленные обновления. В других случаях, в утекающей информации может содержаться расположение временных файлов или резервных копий.
Индексирование директорий (Directory Indexing)
Описание
Предоставление списка файлов в директории представляет собой нормальное поведение Веб-сервера, если страница, отображаемая по умолчанию (index.html/home.html/default.htm) отсутствует.

В этой ситуации злоумышленник может получить доступ к данным, не предназначенным для свободного доступа. Довольно часто администраторы полагаются на "безопасность через сокрытие", предполагая, что раз гиперссылка на документ отсутствует, то он недоступен. Современные сканеры уязвимостей, такие как Nikto, могут динамически добавлять файлы и папки к списку сканируемых в зависимости от результатов запросов. Используя содержимое /robots.txt или полученного списка директорий сканер может найти спрятанное содержимое или другие файлы.

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

Решение
Решение достаточно просто – все директории должны содержать файл страницы по умолчанию, хотя бы в виде заглушки, либо для директории должны быть установлены надлежащие права доступа.
Идентификация приложений (Web Server/Application Fingerprinting)
Описание
Определение версий приложений используется злоумышленником для получения информации об используемых сервером и клиентом операционных системах, Веб-серверах и браузерах. Также эта атака может быть направлена на другие компоненты Веб-приложения, например, службу каталога или сервер баз данных или используемые технологии программирования.

Для определения версий клиентских приложений обычно используется анализ HTTP-запросов (порядок следования заголовков, значение User-agent и т.д.). Однако для этих целей могут применяться и другие техники. Так, например, анализ заголовков почтовых сообщений, созданных с помощью клиента Microsoft Outlook, позволяет определить версию установленного на компьютере браузера Internet Explorer.

Решение
Что бы защитится от данной ошибки – необходимо минимизировать, а лучше полностью исключить системную информацию выдаваемую пользователю.
Утечка информации (Information Leakage)
Описание
Эти уязвимости возникают в ситуациях, когда сервер публикует важную информацию, например, комментарии разработчиков или сообщения об ошибках, которая может быть использована для компрометации системы.
Обратный путь в директориях (Path Traversal)
Описание
Данная техника атак направлена на получения доступа к файлам, директориям и командам, находящимся вне основной директории Веб-сервера. Злоумышленник может манипулировать параметрами URL с целью получить доступ к файлам или выполнить команды, располагаемые в файловой системе Веб-сервера.

Решение
Средством противодействия является тщательная настройка Веб-сервера.
Предсказуемое расположение ресурсов (Predictable Resource Location)
Описание
Предсказуемое расположение ресурсов позволяет злоумышленнику получить доступ к скрытым данным или функциональным возможностям. Путем подбора злоумышленник может получить доступ к содержимому, не предназначенному для публичного просмотра. На эту атаку часто ссылаются как на перечисление файлов и директорий (Forced Browsing, File Enumeration, Directory Enumeration).
Логические атаки (Logical Attacks)
Атаки данного класса направлены на эксплуатацию функций приложения или логики его функционирования. В качестве примеров можно привести восстановление пролей, регистрацию учетных записей, аукционные торги, транзакции в системах электронной коммерции. Приложение может требовать от пользователя корректного выполнения нескольких последовательных действий для выполнения определенной задачи. Злоумышленник может обойти или использовать эти механизмы в своих целях.
Злоупотребление функциональными возможностями (Abuse of Functionality)
Описание
Данные атаки направлены на использование функций Веб-приложения с целью обхода механизмов разграничение доступа. Некоторые механизмы Веб-приложения, включая функции обеспечения безопасности, могут быть использованы для этих целей. Наличие уязвимости в одном из, возможно, второстепенных компонентов приложения может привести к компрометации всего приложения. Уровень риска и потенциальные возможности злоумышленника в случае проведения атаки очень сильно зависят от конкретного приложения.

Пример
Примеры злоупотребления функциональными возможностями включают в себя:
  • использования функций поиска для получения доступа к файлам за пределами корневой директории Веб-сервера;
  • использование функции загрузки файлов на сервер для перезаписи файлов конфигурации или внедрения серверных сценариев;
  • реализация отказа в обслуживании путем использования функции блокировки учетной записи при многократном вводе неправильного пароля.
Отказ в обслуживании (Denial of Service)
Описание
Данный класс атак направлен на нарушение доступности Веб-сервера. Обычно атаки, направленные на отказ в обслуживании реализуются на сетевом уровне, однако они могут быть направлены и на прикладной уровень. Используя функции Веб-приложения, злоумышленник может исчерпать критичные ресурсы системы, или воспользоваться уязвимостью, приводящий к прекращению функционирования системы.

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

Атаки могут быть направлены на любой из компонентов Веб-приложения, например, такие как сервер СУБД, сервер аутентификации и т.д.

Решение
Очень распространенный вид атак, средствами защиты является, оптимизация кода, и, что более действенно при наличии у злоумышленника неких мощностей, ввод ограничений на количество посылаемых данных в единицу времени.
Недостаточное противодействие автоматизации (Insufficient Anti-automation)
Описание
Недостаточное противодействие автоматизации возникает, когда сервер позволяет автоматически выполнять операции, которые должны проводиться вручную. Автоматизированные программы могут варьироваться от безобидных роботов поисковых систем до систем автоматизированного поиска уязвимостей и регистрации учетных записей. Подобные роботы генерируют тысячи запросов в минуту, что может привести к падению производительности всего приложения.

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

Стандартным средство борьбы с роботами сейчас является CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart).
Недостаточная проверка процесса (Insufficient Process Validation)
Описание
Уязвимости этого класса возникают, когда сервер не достаточно проверяет последовательность выполнения операций приложения. Если состояние сессии пользователя и приложения должным образом не контролируется, приложение может быть уязвимо для мошеннических действий.

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

Решение
Для обеспечения корректной работы подобных функций Веб-приложение должно четко отслеживать состояние сессии пользователя и отслеживать ее соответствие текущим операциям. В большинстве случаев это осуществляется путем сохранения состояния сессии в cookie или скрытом поле формы HTML. Но поскольку эти значения могут быть модифицированы пользователем, обязательно должна проводиться проверка этих значений на сервере. Если этого не происходит, злоумышленник получает возможность обойти последовательность действий, и как следствие – логику приложения.
Вирусы и приложения типа "троянский конь"
Описание
Рабочие станции конечных пользователей очень уязвимы для вирусов и троянских коней. Вирусами называются вредоносные программы, которые внедряются в другие программы для выполнения определенной нежелательной функции на рабочей станции конечного пользователя. В качестве примера можно привести вирус, который прописывается в файле command.com (главном интерпретаторе систем Windows) и стирает другие файлы, а также заражает все другие найденные им версии command.com.
"Троянский конь" – это не программная вставка, а настоящая программа, которая выглядит как полезное приложение, а на деле выполняет вредную роль. Примером типичного "троянского коня" является программа, которая выглядит, как простая игра для рабочей станции пользователя. Однако пока пользователь играет в игру, программа отправляет свою копию по электронной почте каждому абоненту, занесенному в адресную книгу этого пользователя. Все абоненты получают по почте игру, вызывая ее дальнейшее распространение.

Решение
Борьба с вирусами и "троянскими конями" ведется с помощью эффективного антивирусного программного обеспечения, работающего на пользовательском уровне и, возможно, на уровне сети. Антивирусные средства обнаруживают большинство вирусов и "троянских коней" и пресекают их распространение. Получение самой свежей информации о вирусах поможет эффективнее бороться с ними. По мере появления новых вирусов и "троянских коней" предприятие должно устанавливать новые версии антивирусных средств и приложений.
Средства защиты информации
В литературе предлагается следующая классификация средств защиты информации:
  • Средства защиты от несанкционированного доступа (НСД):
    • средства авторизации;
    • мандатное управление доступом;
    • избирательное управление доступом;
    • управление доступом на основе ролей;
    • журналирование (так же называется Аудит);
  • Системы анализа и моделирования информационных потоков (CASE-системы);
  • Системы мониторинга сетей:
    • системы обнаружения и предотвращения вторжений (IDS/IPS);
    • системы предотвращения утечек конфиденциальной информации (DLP-системы);
  • Анализаторы протоколов ;
  • Антивирусные средства ;
  • Межсетевые экраны ;
  • Криптографические средства:
    • шифрование;
    • цифровая подпись;
  • Системы резервного копирования ;
  • Системы бесперебойного питания:
    • источники бесперебойного питания;
    • резервирование нагрузки;
    • генераторы напряжения;
  • Системы аутентификации:
    • пароль;
    • сертификат;
    • биометрия;
  • Средства предотвращения взлома корпусов и краж оборудования ;
  • Средства контроля доступа в помещения ;
  • Инструментальные средства анализа систем защиты:
    • мониторинговый программный продукт.

1 комментарий:

Votix комментирует...

Очень подробная статья. Спасибо!