14 декабря 2005
М. Савельев. Средство от головной боли.
М.
Савельев
Connect. Мир связи., № 5, 2005
Под корпоративной информационной системой зачастую подразумевается «набор» серверов, пользовательских компьютеров, коммутаторов, концентраторов, маршрутизаторов и т.п. Операционные системы и функционирующие приложения воспринимаются как само собой разумеющееся. Но именно они составляют «костяк» информационной системы. По опыту аудиторских компаний в информационных системах эксплуатируется в среднем 100 приложений.
Важные оговорки
Сразу определимся с предметной областью.
Под уязвимостью информационной системы понимается любая ее характеристика, использование которой злоумышленником может привести к нарушению работоспособности информационной системы и/или информации, обрабатываемой в ней, и нанесению другого ущерба.
Таким образом, когда мы говорим о безопасности информационной системы, то прежде всего должны думать о безопасности приложений, функционирующих в ней.
Под термином «безопасность приложений» каждый, в зависимости от рода своей деятельности, может понимать:
- отсутствие в приложениях уязвимостей;
- надежное функционирование приложений (системы резервирования, восстановления данных и т. п.);
- защиту авторских прав разработчиков приложений.
Каждая из этих проблем достойна самостоятельной статьи. Настоящий обзор мы посвятим первому понятию, более привычному для специалистов по информационной безопасности.
Откуда ждать неприятностей
Согласно устоявшимся классификациям, по условиям появления уязвимости приложений и программного обеспечения можно разделить на следующие: проектирования; реализации; конфигурации; эксплуатации.
Уязвимости реализации – самый сложный вид. Такие уязвимости, заложенные непосредственно в реализованные алгоритмы, обнаруживаются и устраняются с большим трудом.
Уязвимости реализации привносятся в приложения на этапе создания и зачастую связаны с неверной обработкой входных данных, а также передаваемых между компонентами ПО, либо с неверной реализацией алгоритмов. Эти ошибки относительно легко устраняются производителем ПО. Их исправление выпускается в виде обновлений и патчей.
Уязвимости конфигурации – ошибки, обусловленные действиями администратора, который настраивает программное обеспечение вопреки требованиям политики безопасности и здравого смысла.
Уязвимости эксплуатации возникают по вине пользователя, уклоняющегося от выполнения требований корпоративной политики безопасности.
Кроме того, не будем забывать, что невозможно рассматривать сами приложения, равно как и вопросы их безопасности, в отрыве от инфраструктуры, в которой они функционируют.
На разработчиков надейся, а сам не плошай
К сожалению, одной из главных причин возникновения уязвимостей является недостаточное знание разработчиками ПО безопасных методов программирования.
Кроме того, постоянное изменение программно-аппаратного обеспечения и состава пользователей корпоративной сети приводит к тому, что администраторы просто не успевают отслеживать ситуацию и постепенно она выходит из-под контроля – никто не знает, что и где находится.
Другая проблема, с которой сталкивается практически любая организация, – нехватка человеческих ресурсов на выполнение всех задач, которые возложены на подразделение, отвечающее за информационную безопасность. Более того, даже те администраторы, что уже есть в компании, не всегда обладают достаточными знаниями и квалификацией, необходимыми для работы с разнообразным сетевым оборудованием, операционными системами, СУБД, CRM, ERP и прочими приложениями.
При размещении заказа на разработку нового программного обеспечения требования по его собственной защищенности можно включить в техническое задание и проконтролировать их выполнение при помощи независимых экспертов.
Для повышения безопасности уже существующих приложений необходимо обеспечить защиту среды, в которой они выполняются, от внутренних и внешних угроз.
Универсальные советы
Безопасность на уровне сети
Топология сети организации должна быть проанализирована с точки зрения сетевой безопасности. Используемые межсетевые экраны должны максимально (но в соответствии с корпоративной политикой безопасности) ограничивать возможности установления соединений между внутренними и внешними сетевыми узлами.
Следует позаботиться и о безопасности самих межсетевых экранов. На соответствующих серверах целесообразно устанавливать и активизировать лишь необходимые для работы экрана компоненты ОС. Последнее замечание, кстати, касается всех компонент системы защиты, о которых пойдет речь. В последнее время многие производители средств защиты выпускают свои продукты в виде программно-аппаратных решений, решая тем самым проблему безопасной настройки материнской операционной системы.
Естественно, что по сравнению с простыми пакетными фильтрами лучше использовать межсетевые экраны, способные работать на верхних уровнях модели OSI. Их возможности по фильтрации данных на прикладном уровне создадут дополнительный рубеж обороны на пути злоумышленника.
Шифрование сетевого трафика
Следующий шаг – позаботиться о защите всех данных, которые пересылаются по внешним каналам связи. Использование средств VPN, как для защиты информационного обмена между территориально распределенными подразделениями, так и для доступа внешних пользователей к общедоступным корпоративным ресурсам, усложнит задачу злоумышленника по сбору информации о вашей системе и используемых в ней приложениях.
Системы обнаружения атак
В последнее время повысилась эффективность использования систем обнаружения атак, которые могут оказать нам большую помощь. В первую очередь это связано с тем, что осуществляется переход от сигнатурных методов обнаружения атак к поведенческим: система обнаружения атак следит за отклонениями в поведении приложений и сетевых узлов (например, резкий всплеск сетевой активности). Это позволяет выявлять факты получения злоумышленником контроля над компонентами вашей информационной системы даже тогда, когда он использует новые, еще не описанные методы взлома.
Эволюция систем обнаружения атак в системы предотвращения атак (появление функционала, способного блокировать выявленные атаки) позволяет более оперативно защищать уязвимые приложения: от обнаружения уязвимости до выпуска соответствующего исправления может пройти много времени – от нескольких дней до нескольких недель. Технология, получившая название Virtual Path, стала неотъемлемой частью систем предотвращения атак, позволяет блокировать любые попытки использовать данную уязвимость уже через несколько часов после выхода соответствующей сигнатуры.
Обеспечение безопасности на уровне узла
Не меньшее значение для безопасности приложений имеет безопасность серверов, на которых выполняются эти приложения. Ведь порой злоумышленнику легче воспользоваться уязвимостью операционной системы и получить контроль над сервером, чем пытаться прорваться сквозь систему защиты приложения. Необходимо тщательно контролировать все настройки, связанные с безопасностью, следить за тем, чтобы были развернуты только необходимые для работы приложения компоненты ОС.
Сами приложения должны быть настроены в точном соответствии с инструкциями по обеспечению безопасности.
Приложения и операционные системы должны обновляться по мере выхода соответствующих обновлений от производителей. Не стоит забывать о тестировании обновлений перед их установкой. Не исключено, что установка обновления ОС сервера может нарушить работоспособность функционирующих на нем приложений.
Антивирусные программы
Не следует ограничиваться антивирусным сканированием серверов и рабочих станций пользователей. В сканировании нуждается весь сетевой трафик, особенно поступающий в корпоративную сеть извне.
Необходим грамотный подход и к политике обновления антивирусных продуктов: любой компьютер, подключенный к сети, должен иметь самую последнюю версию антивирусной базы.
Архивация данных
Архивация и восстановление предотвращают потерю важной информации не только в случае злонамеренных действий, но и при технических сбоях. Защита архивов и резервных копий должна осуществляться столь же тщательно, а может, даже и более, чем защита самих серверов и приложений.
Разграничение доступа
По возможности необходимо не только задействовать все встроенные в приложения и операционные системы механизмы защиты, но и следить за их эффективным использованием с целью минимизации полномочий пользователей по доступу к функционалу приложения и обрабатываемой информации.
А что же требовать от разработчика?
Если в настоящее время вы заказываете или планируете заказывать специализированное ПО для своей организации, то мы готовы дать несколько советов, на что следует обратить особое внимание.
Безопасность приложений должна обеспечиваться с самого начала процесса разработки. Требуйте, чтобы помимо безопасности собственного кода разработчики учитывали возможности и защищенность окружения, в котором будет функционировать создаваемое ими ПО. Безопасность должна быть отдельной статьей, равноправной с другими частями проекта. Ведь если вопросы обеспечения безопасности, разграничения доступа и т. п. не заложены на начальной стадии создания продукта, то их реализация в дальнейшем с большой долей вероятности окажется невозможной.
Проверка данных пользовательского ввода
По статистике, самые распространенные уязвимости приложений обусловлены неправильной обработкой вводимых пользователями данных. Необходимо, чтобы внутри кода приложения осуществлялась проверка данных на предмет:
- их типа (дабы исключить, например, передачу исполняемого кода вместо простого текста);
- диапазона значений (особенно при обработке числовых параметров);
- длины текстовых строк;
- объемов данных (при работе с файлами) и т. п.
Следует избегать любой обработки данных на стороне пользователя с выдачей результатов серверу приложений – отправляемые данные могут быть легко модифицированы.
Разграничение полномочий
Желательно, чтобы каждое приложение имело собственные механизмы аутентификации пользователей и схему разграничения доступа к обрабатываемым данным.
Протоколирование событий
Все действия пользователей, связанные с попытками получить доступ к информации, авторизации в системе и т. д., должны фиксироваться в журналах, защите которых от модификации также следует уделить внимание. Обработка ошибок
При возникновении штатных (отсутствие запрашиваемой страницы на web-сервере) и нештатных (например, разрыв связи с обрабатываемой базой данных и т. п.) ошибок в работе приложения они должны обрабатываться без аварийного сбоя в работе приложения.
Не допускается выдача пользователю информации о модулях, в которых произошла ошибка. Подобные ситуации рекомендуется обрабатывать штатно, с возможностью либо повторить обработку запроса, либо корректно завершить работу приложения.
Комплексная проверка
В процессе приемки приложения стоит просканировать компьютеры, на которых развернуты его компоненты, «со стороны сети». Вас должен насторожить любой неописанный в документации открытый на прием входящих соединений порт. Особое внимание следует обращать на функции удаленного управления и используемые при этом механизмы аутентификации.
Вместо заключения
Надеемся, что изложенные в статье рекомендации помогут вам в обеспечении безопасности приложений, а как следствие – безопасности данных, обрабатываемых в информационной системе. Самое главное, не стоит забывать, что защита информации – это прежде всего совокупность предпринимаемых в компании мер по защите, а не набор отдельных, пусть даже самых лучших, продуктов.
Об авторе: М.С. Савельев - начальник отдела продвижения решений компании "Информзащита".
Источник: Infosec.Ru