Microsoft Security Development Lifecicle

1 октября в Минске прошла открытая лекция по теме безопасности при разработке программного обеспечения "Microsoft Security Development Lifecycle". Лекцию проводил выпускник БГУИР, а ныне – ведущий специалист Microsoft Владимир Абашин.

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

Много лет назад вместе с широкой популярностью операционная система Windows приобрела и дурную славу «корявой» системы, содержащей
многочисленные уязвимости и баги. Мега-популярная ОС является легкой мишенью в сфере информационных технологий, а желающих незаконно нажиться на чужих ошибках день ото дня меньше не становится. Естественно, компания Microsoft не хотела оставаться на этом уровне, и прилагала все усилия к поиску радикальных методов решения этих проблем. Была создана специальная группа быстрого реагирования на проблемы безопасности, в задачи которой входило разбираться с причинами возникновения проблем и находить оптимальные их решения в кратчайшие сроки. Именно благодаря этой группе мы по сей день наблюдаем регулярный выход критических обновлений для наших ненаглядных «Окошек».

Некоторые программисты тешат себя иллюзиями возможности разработки абсолютно безопасных программных продуктов, однако многочисленные исследования Microsoft и других крупных компаний показали, что этот идеал на практике недостижим. Ни один серьезный программный продукт не может считаться неуязвимым до тех пор, пока он активно используется. Стремиться можно лишь к минимизации ошибок и сиюминутной готовности их устранения. Ответственные разработчики не должны надеяться на безупречность своих разработок. Вместо этого им следует прогнозировать вероятные ошибки и продумывать способы предупреждения или снижения возможного ущерба на случай обнаружения уязвимостей. Ошибиться может любой, но отсутствие возможности быстро и с минимальными потерями устранить критические ошибки может повлечь за собой грандиозные негативные последствия. Для повышения надежности выпускаемых программных продуктов, для обеспечения готовности к быстрому и скоординированному устранению программных ошибок был создан Security Development Lifecycle (Цикл Безопасной Разработки).

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

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

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

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

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

Фаза выпуска – это финальный обзор безопасности и составление комплексного плана быстрого реагирования на проблемы безопасности.

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

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

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

BarMentaLisk, q@sa-sec.org


Компьютерная газета. Статья была опубликована в номере 38 за 2009 год в рубрике безопасность

©1997-2022 Компьютерная газета