Безопасность является ключевым аспектом создания современного ПО в условиях распределенного, неоднородного, но при этом взаимосвязанного ИТ-мира, и, более того, актуальность проблема снижения числа уязвимостей в коде с целью защиты программ (а значит, и пользователей) от разного рода внешних угроз в условиях глобализации ИТ лишь постоянно возрастает. Об этих общепризнанных истинах решил напомнить старший директор отдела стратегии обеспечения вычислительной безопасности Microsoft Стив Липнер во время своего визита в Москву в конце марта.
Нужно сказать, что корпорация Microsoft не только говорит о подобных проблемах, но и предпринимает шаги для их решения в виде реализации стратегии SDL (security development lifecycle, жизненный цикл безопасной разработки). Причем она это делает не только в рамках собственного бизнеса, но и активно пытается делиться своим опытом с отраслью в целом
Базовая основа для обоснования SDL достаточно проста и понята: стоимость затрат на изначальное предотвращение появления ошибок в программного коде намного ниже по сравнению с усилиями, связанными с устранением проблем, обнаруженных на этапах более позднего тестирования, не говоря уже о стадии реальной эксплуатации ПО (в последнем случае нужно еще учитывать потери пользователей, удары по имиджу поставщика, стоимость распространения обновления и т. д.). Эти очевидные на интуитивном уровне тезисы подтверждаются многочисленными исследованиями данного вопроса на примерах конкретной отраслевой статистики. Так, согласно оценкам Национального института стандартов и технологий (NIST) США, затраты на устранение ошибок в коде после выпуска продукта могут в 30 раз превышать затраты на устранение ошибок на этапе разработки.
А отсюда логично вытекает идея самой SDL — вопросы обеспечения безопасности должны пронизывать весь жизненный цикл создания ПО и, более того, стать ключевым требованием с самых первых шагов его разработки. Упрощенно говоря, каждое действие, связанное с написанием и модификацией кода, должно оцениваться и проверяться с точки зрения обеспечения безопасности. Эта мысль была, в частности, четко сформулирована автором одной из монографий по программированию, выпущенной в начале нынешнего века: “Давно уже прошли те дни, когда защита была искусством избранных, теперь это удел каждого, кто на своем месте отвечает за создание безопасного ПО”.
Тут нужно вспомнить, что ИТ-отрасль достаточно оперативно отреагировала на изменение общего ландшафта проблемы безопасности в связи с появлением и расширением применения Интернета в виде перехода на платформенные механизмы управляемого кода (сначала Java, а затем и .NET). Однако опыт быстро показал, что решить проблему только чисто технологическими способами полностью невозможно, нужна также обязательная соответствующая организационно-методологическая поддержка управления всем процессом разработки.
Надо отметить, что серия серьезных инцидентов, связанных с вредоносным программным обеспечением, заставила Microsoft в середине — конце 1990-х и в начале 2000-х пересмотреть стратегию и процесс обеспечения безопасности при разработке продуктов. В результате в январе 2002 г. Билл Гейтс опубликовал свой меморандум о защите информационных систем, в 2004 г. корпорация сформулировала и взяла на вооружение для собственных разработок политику SDL, а спустя пару лет объявила о готовности распространять свои рекомендации и методики в отрасли, выступив с призывом ко всем ИТ-разработчикам публиковать и распространять лучшие отраслевые практики в этой области. А в 2008 г. компания начала предлагать своим партнерам и корпоративным заказчикам SDL Optimization Model — реферативную модель, позволяющую организациям самостоятельно оценить, насколько полно у них используется опыт обеспечения безопасности при разработке ПО. При этом продвижение данной методики сопровождалось предоставлением рекомендаций, помогающих решать финансовые, плановые и кадровые проблемы разработки.
Сама Microsoft уже семь лет применяет SDL (эта методология и сопутствующие средства представлены сейчас версией 5.1, выпущенной в октябре 2010 г.) при создании всех своих программных продуктов, в том числе эта стратегия была положена в основу разработки операционных систем начиная с Windows Vista. По оценкам корпорации, публикуемым в течение последних лет, именно применение SDL позволило в разы сократить число выявляемых на этапах тестирования и эксплуатации брешей. Комментируя этот аспект, Стив Липнер обратил внимание на то, что в последние годы заметно снизилось число пакетов обновлений для программных продуктов компании и увеличилось время между их появлением: “Число исправлений ошибок в пакетах обновления намного меньше, чем это было еще пять-шесть лет назад”.
Говоря о наличии прогресса в сфере повышения безопасности ПО, эксперт Microsoft подчеркнул, что проблема в целом не только сохраняется, но и становится всё более актуальной: “Опыт свидетельствует о том, что предприятия все же уделяют недостаточно внимания вопросам безопасности в процессе разработки ПО. Многие даже не до конца осознают важность этой задачи, а другие, понимая ее значимость, тем не менее решают ее, если можно так выразиться, скорее на интуитивном, а не на системном уровне”.
Подтверждение этого мнения содержится в опубликованном недавно отчете “О развитии SDL, 2004-2010”. Приведенные в нем сведения говорят о том, что, несмотря на заметный тренд по снижению обнаруженных уязвимостей в ПО, среднеотраслевые показатели тут все же намного выше, чем у ведущих софтверных поставщиков, в том числе Microsoft (рис. 1). При этом главным уязвимым местом всей системы ПО были и остаются прикладные программы (рис. 2). Стив Липнер объяснил это недостаточным вниманием к вопросам безопасности со стороны разработчиков приложений и особо отметил проблемы с ПО, создаваемым самими корпоративными заказчиками для внутреннего пользования. “Пропаганда идей безопасной разработки программ среди самого широкого круга разработчиков ПО и распространение передового отраслевого опыта являются очень важными для обеспечения нормального развития ИТ-рынка, — отметил эксперт Microsoft. — Это особенно актуально в условиях продолжающегося роста проникновения Интернета во все сферы жизни людей и открывающихся перспектив перехода к широкому использованию моделей облачных вычислений”.