Программа обеспечения безопасности внутренних бизнес-приложений в корпорации Microsoft




Как и другие организации большого размера, корпорация Microsoft для выполнения своих повседневных рабочих задач использует самые разнообразные бизнес-приложения, которые функционируют в непростых производственных и правовых условиях. Не менее сложной является и ИТ-инфраструктура, обеспечивающая выполнение этих задач. В результате проблема обеспечения безопасности приложений затрагивает множество различных областей, в том числе:

О подразделении информационных технологий корпорации Microsoft

Организационная структура подразделения


На конец 2002 года в составе подразделения информационных технологий (Operations and Technology Group, OTG) корпорации Microsoft насчитывалось около 2,4 тыс. человек во всем мире, включая штатных работников, подрядчиков и стажеров, отвечающих за работу примерно 57 тыс. пользователей, более чем 150 тыс. настольных компьютеров и тысяч серверов, находящихся в более чем 400 точках в 62 странах.

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


Корпоративная культура

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

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


Задачи, решаемые подразделением

Подразделение информационных технологий выполняет две основные функции.

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


Процесс планирования в подразделении

Для реализации и эксплуатации был использован процесс, аналогичный программе MOF (Microsoft Operations Framework, www.microsoft.com/mof) и направленный на создание группы по разработке принципов и проведению оценки степени безопасности приложений, используемых внутри корпорации.

Программа MOF представляет собой набор советов, рекомендаций, общих принципов, примеров и моделей. В рамках MOF предоставляются стандарты по достижению необходимого уровня надежности, доступности, поддержки и управляемости ИТ-решений. Эти правила и рекомендации собраны с помощью специалистов консультационной службы Microsoft Consulting Services, подразделения информационных технологий корпорации Microsoft, сотрудников библиотеки инфраструктуры информационных технологий (Information Technology Infrastructure Library), а также бизнес-партнеров корпорации Microsoft.


Обоснование необходимого уровня безопасности приложений

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

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


Расходы на восстановление и потери продуктивности

В результате вторжения злоумышленника расходы на устранение повреждений, связанные как с вынужденным простоем, необходимым для восстановления поврежденных баз данных, так и с решением проблемы нарушения системы безопасности, а также ущерб от потери деловой репутации могут быть весьма значительными. Теоретически два дня простоя для интернет-торговца с годовым доходом в один млрд. долл. могут вылиться в миллионы долларов убытков в до-полнение к расходам на вос-становление (1 млрд. долл. дохода : 365 дней ґ 2 дня простоя = 5,5 млн. долл.).

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


Потери данных

Нарушения в системе безопасности могут повлечь за собой сбои в работе отдельных приложений и баз данных. Серьезное вторжение грозит полной потерей данных.

Снижение доверия клиентов

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

Опасность судебного преследования

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

Программа обеспечения безопасности приложений

Для того чтобы управлять процессами оценки и поддержания безопасности всех имеющихся и разрабатывающихся бизнес-приложений, подразделение информационных технологий сформировало группу, в которую вошли различные специалисты из нескольких отделов. Эти специалисты должны были обладать глубоким пониманием не только производственных требований корпорации Microsoft, но и вопросов безопасности информации. Результатом деятельности группы стала разработка программы обеспечения безопасности приложений (Application Security Assurance Program, ASAP), предназначенной для устранения потенциально уязвимых мест во внутренних бизнес-приложениях корпорации Microsoft путем приведения этих приложений в соответствие с принципами безопасности, выдвинутыми подразделением информационных технологий.

Принципы безопасности

Применение основных принципов безопасности на самых ранних этапах разработки жизненно важно для создания безопасных и надежных приложений. Корпорацией Microsoft была принята политика безопасности приложений, направленная на то, чтобы ее внутренние приложения всегда были безопасными. Основу этой политики составляют следующие принципы:
Управление рисками

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

Подразделение информационных технологий одновременно применяет несколько методов снижения риска при внедрении новых внутренних приложений в корпоративную сеть Microsoft:


Стратегия
Тактика
Оперативные действия
Юридические аспекты
Создание программы обеспечения безопасности приложений

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

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

Программа ASAP включает несколько возможных контрольных точек в производственном цикле разработки программного обеспечения. На высшем уровне предусматриваются следующие контрольные точки:

Критерии оценки

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

Определение приложения

Прежде всего согласно программе ASAP необходимо определить, является ли конкретный программный продукт приложением1 . Изделия, не являющиеся приложениями, должны подчиняться правилам политики управления доменом подразделения информационных технологий. Если лицо, ответственное за внутренний программный продукт, может ответить «да» на все перечисленные ниже вопросы, считается, что продукт является приложением:
Границы оценки

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

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

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

В поиск уязвимых мест входят проверки веб-страниц, для посещения которых не требуется авторизация; сеансов, в которых не может быть предотвращено заимствование прав или атака с помощью воспроизведения файлов cookie; сообщений об ошибках, раскрывающих конфиденциальную информацию (например, имена серверов или пользователей); данных, которые содержатся в одном из каких-либо приложений и могут использоваться для вторжения в другое приложение.


Участники

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


Рис. 1. Отделы, задействованные в программе ASAP.


Структура процесса безопасности приложения

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


Рис. 2. Структура процесса обеспечения безопасности приложения.


Соблюдение и публикация политики и инструкций

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

Процесс поддержки и публикации политики и инструкций проиллюстрирован на рис. 3.



Рис. 3. Процесс соблюдения и публикации политики и инструкций.


Повышение квалификации ИТ-специалистов

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

Проектирование, разработка, испытание и проверка безопасных приложений

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

Все приложения, для которых с точки зрения Microsoft необходима оценка угроз, проходят три отдельные проверки безопасности: одну – после проектирования, одну – после тестирования и еще одну – после развертывания в организации. В идеальном случае оценка должна выполняться еще до начала этапа проектирования, если уже известны технические детали, необходимые для ее выполнения. Это обеспечивает более точное планирование контроля проекта.


Проверка используемых в производстве приложений

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

Реагирование на инциденты нарушения безопасности

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

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


Управление безопасностью приложений

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

Безопасная инфраструктура

Для безопасности приложений необходима безопасная инфрастуктура. Уязвимость на уровне сети и узлов может подорвать безопасность приложений и их данных. Инфраструктура разделяется на пять основных архитектурных компонентов:
Для каждой из этих областей характерны свои уязвимые места, которые необходимо отслеживать.

Чтобы минимизировать риск нарушения безопасности, необходимо реализовать детальную стратегию защиты среды, в которой выполняются приложения, от внутренних и внешних угроз. Данная стратегия, получившая название всесторонняя защита (defense in depth или security in depth), предполагает выстраивание уровней контрмер вокруг уязвимых областей. Она предусматривает внедрение мер защиты на каждом уровне инфраструктуры приложений, от внешних маршрутизаторов до места физического размещения ресурсов, включая все промежуточные пункты. Реализация нескольких уровней безопасности позволяет исключить зависимость приложений и ресурсов от отдельного сбоя.

Контрмеры, используемые для обеспечения безопасности, могут иметь множество форм: письменное изложение правил соблюдения безопасности, параметры настройки инфраструктуры, мониторинг приложений и обнаружение атак.


Создание безопасных сетей для поддержки приложений

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

Настройка сети

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

Топология сети организации должна быть проанализирована с точки зрения сетевой безопасности:


Для установки брандмауэров подразделение информационных технологий дает следующие рекомендации:
Для настройки и эксплуатации маршрутизаторов и коммутаторов подразделение информационных технологий дает следующие рекомендации:
Системы распознавания сетевых атак

Мониторинг, направленный на обнаружение атак и событий системы безопасности, должен проводиться непрерывно и включать как пассивные, так и активные меры на уровне сети и приложений. Наиболее эффективной является реализация системы обнаружения атак внутри периметра безопасности, где отношение сигнал/помеха сравнительно невелико2 . Однако система обнаружения атак может быть полезна только в тех средах, где налажен процесс мониторинга и реагирования. Для реализации системы обнаружения сетевых атак можно использовать продукты сторонних производителей. Как минимум, такая система должна осуществлять мониторинг сети на наличие следующих трех атак:
Шифрование сетевого трафика

Шифрование – основное средство защиты секретных данных, позволяющее предотвратить чтение информации даже в тех случаях, когда пользователям удается получить к ней несанкционированный доступ. Секретные данные, передаваемые по внешним или внутренним каналам, должны шифроваться для обеспечения безопасности. Внешние каналы используются для обмена данными между клиентом и сервером, а внутренние – для обмена данными между серверами. Следует применять методы шифрования на основе отраслевых стандартов, например SSL (Secure Sockets Layer), оболочку обеспечения безопасности типа SSH или протокол IPSec (Internet Protocol Security).

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

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

Работа с исправлениями

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

Настройка

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

Ненужные расширения файлов не следует назначать на веб-серверах, поскольку это может привести к атакам с применением неизвестных уязвимостей3.


Разрешения

Параметры ACL-разрешений4 должны быть правильно настроены для всех общих ресурсов и других элементов системы и баз данных, а также объектов COM+ в целях предотвращения несанкционированного доступа.

Общие строки протокола SNMP

Общие строки (community strings) протокола SNMP5 применяются для контроля доступа к объектам MIB6; они функционируют как встроенные пароли сетевого оборудования. К общим строкам SNMP применимы правила задания, хранения и периодической смены, используемые для надежных паролей. Если нет явной необходимости в использовании SNMP, следует удалить общую строку и отключить службу SNMP. Не следует забывать, что почти все устройства поставляются с используемым по умолчанию SNMP-паролем (public).

Антивирусные программы

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

Аудит и ведение журналов имеют важное значение для обнаружения атак и обеспечения целостности данных. Аудит

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


Архивация и восстановление сервера

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

После обеспечения надлежащей защиты сети и хост-сервера необходимо позаботиться о безопасности самих приложений.

Проверка данных ввода

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

Управление сеансами

Коды сеансов8 должны быть произвольными и иметь достаточную длину для предотвращения взлома методом грубой силы. Информация о сеансах должна храниться на сервере, а не на клиентском компьютере. Если приложение хранит данные сеанса в виде простого текста в файлах cookie на клиентском ПК, злонамеренный пользователь сможет легко изменить данные сеанса и получить доступ к информации незаконным способом. Этот метод может быть также использован для получения разрешений более высокого уровня, например разрешения администратора. Сеансы должны закрываться по истечении времени ожидания после установленного периода бездействия или при выходе пользователя. Поскольку коды сеансов могут быть похищены и использованы повторно, не следует применять сеансы для кэширования данных проверки подлинности пользователя. Дополнительная информация о кодах сеансов и файлах cookie приводится далее в этой статье в разделе «Общие вопросы разработки приложений».

Проверка подлинности и авторизация

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

Для обеспечения безопасной архитектуры и методов разработки необходимо перед написанием программного кода проводить формальную проверку создаваемого приложения на безопасность конструкции. Такая проверка должна, как минимум, включать все элементы, перечисленные в настоящей статье. После написания программного кода следует выполнить предварительную оцен-ку безопасности, подтверждающую, что все недостатки, выявленные на этапе проверки конструкции, устранены и приложение отвечает требованиям безопасности. Для выявления известных уязвимостей необходимо выполнить проверку с помощью сканеров безопасности в среде тестирования. Должны быть произведены проверки для обнаружения атак с вложением программного кода, атак типа cross-site scripting, атак с отказом в обслуживании, переполнением буфера и т. д. Кроме того, группа разработки приложения должна регулярно выполнять проверку программного кода для выявления подобных проблем.

Обработка ошибок на уровне сервера и приложения

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

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


Приложения: аудит и ведение журналов

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

Архивация и восстановление приложений

Рекомендации в разделе «Архивация и восстановление сервера» также относятся и к приложениям. Кроме того, необходимо архивировать весь исходный код приложений. Чтобы предотвратить незаконное раскрытие или использование не подлежащих разглашению данных, всю конфиденциальную информацию, записанную на архивных носителях (магнитных лентах, гибких и оптических дисках и т. д.) и хранящуюся вне организации, следует держать в зашифрованной форме.

Шифрование личных данных

Все личные данные (имена, пароли, сведения, позволяющие идентифицировать пользователя, информация о кредитных картах, даты рождения и т. д.) должны шифроваться с использованием надежного шифрования на основе отраслевых стандартов, например 3DES (Triple Data Encryption Standard). Информация этого типа не должна храниться в виде простого текста в каких-либо базах данных или файлах, независимо от того, насколько хорошо они защищены.

Общие вопросы разработки приложений

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

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


Проверка данных пользовательского ввода

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

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

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


Файлы cookie, проверка подлинности и доступ

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

Опыт, полученный подразделением информационных технологий, говорит о том, что шифрование файлов cookie должно быть обязательным во всех случаях. Файлы cookie никогда не должны применяться для хранения данных о привилегиях или разрешениях пользователей, поскольку это может привести к несанкционированному воспроизведению (replay attack) или неправомочному имитированию пользователя (unauthorized impersonation).

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

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

Использование простого текста в протоколе HTTP (Hypertext Transfer Protocol) позволяет злоумышленникам применять в локальной сети средства прослушивания для анализа и сбора секретной информации, включая файлы cookie и значения форм. Обычная проверка подлинности не защищает даже учетные данные пользователя (включая пароль).

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


Пароли

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

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


Таблицы управления доступом

Некорректная настройка таблиц управления доступом (ACL)9 может привести к тому, что пользователи получат непредназначенные для них разрешения для доступа к системным ресурсам и данным, в результате чего может быть раскрыта секретная информация, нарушена доступность или целостность системы. Всегда следует задавать минимальный уровень полномочий, необходимый для выполнения конкретной операции. Для предотвращения несанкционированного доступа следует правильно настраивать таблицы ACL для общих ресурсов и временных каталогов, создаваемых приложениями.

Настройка приложений COM+

Безопасность приложений COM+ может быть обеспечена с помощью встроенных служб, настраиваемых путем вызова программных интерфейсов из кода приложения или административным способом с помощью процесса, называемого «безопасностью на основе ролей» (role-based security).

Безопасность на основе ролей позволяет задавать параметры безопасности вплоть до уровней пользователя и метода; это означает, что с ее помощью можно определить, какие пользователи имеют права доступа к тем или иным ресурсам. Если для пользователя применяется роль, присвоенная запрашиваемому методу или ресурсу, то запрос будет выполнен успешно; в противном случае запрос выполнен не будет.

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


Аудит и ведение журналов

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

Рекомендации и опыт

Усилия подразделения информационных технологий по инвентаризации, оценке и при необходимости устранении уязвимых мест, обнаруженных им в своих внутренних приложениях, оказались совсем не напрасны. В подразделении сформировалось более ясное представление о количестве и сложности приложений, использующихся для выполнения повседневных рабочих задач корпорации. Любое уязвимое место, обнаруженное в одном приложении, фиксировалось, после чего выполнялся его поиск в других приложениях. Возрос уровень безопасности не подлежащих разглашению бизнес-данных корпорации Microsoft и конфиденциальные сведения о ее сотрудниках. Формализация процесса оценки безопасности с помощью программы ASAP повысила уровень компетентности разработчиков в этой области, обеспечивая дальнейшее усиление безопасности будущих проектов.

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

Политика

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

С выпуском Microsoft Windows Server 2003 появились новые средства и возможности, которые могут повысить безопасность внутренних приложений, за которые отвечает подразделение информационных технологий.
По материалам информационного бюллетеня для государственных служб
«Современные подходы к обеспечению информационной безопасности.
Часть 2», который издает московскоепредставительство корпорации Microsoft
(рассылается бесплатно вместе с данным номером журнала).

Ссылки:

1 Программное обеспечение, которое является ключевым компонентом существующего приложения (как, например, веб-служба, компонент COM+, служба Microsoft .NET, реплицированная база данных отчетности или пакетное задание), не рассматривается независимо от приложения, к которому этот компонент принадлежит.

2 Нередко в системах обнаружения атак более 90% всех событий приходится на ложные срабатывания. Хотя журналы могут быть переполнены сообщениями о незначимых с точки зрения безопасности событиях, группы, отвечающие за безопасность, все-таки должны внимательно просматривать эти журналы для выявления реальных вторжений.

3 Атака с применением неизвестной уязвимости (zero-day exploit) – это атака, использующая обнаруженную злоумышленником уязвимость, о который или еще не известно производителю, или для устранения которой еще не было выпущено исправление.

4 ACL (Access Control List) – список контроля доступа. Используется сетевой операционной системой для определения прав доступа к общим сетевым ресурсам.

5SNMP (Simple Network Management Protocol) – простой протокол сетевого управления. Применяется для диагностирования работоспособности различных локальных вычислительных сетей.

6 MIB (Management Information Base) – база управляющей информации. Корпоративная база данных, содержащая информацию о контролируемых и управляемых параметрах сетевых устройств.

7 В л о ж е н и е п р о г р а м м н о г о к о д а (code injection) – технология, часто применяемая для получения незаконного доступа к данным или привилегиям. Изменение строки пользовательского ввода обычно выполняется путем добавления специальных символов и другого текста, распознаваемого обработчиками сценариев и базами данных и выполняемого ими в качестве сценария.

8 К о д с е а н с а – это уникальный идентификатор, определяющий пользователя и связывающий его с запросами, передававшимися на сервер в течение последнего времени. Код сеанса выполняет роль постоянного подтверждения подлинности. При отсутствии более надежных методов проверки подлинности (например, обычной или встроенной в Windows проверки подлинности) любой человек, располагающий кодом сеанса, может олицетворять соответствующего пользователя в веб-приложении до истечения срока действия сеанса. Срок действия сеанса обычно истекает после 5–20 минут бездействия.


© Информационное общество, 2003, вып. 6, сс. 49-62.