Инспекторы программного кода.
Для предотвращения уязвимостей в программном коде Microsoft продвигает комплект методик безопасной разработки Security Development Lifecycle. Его сущность состоит в том, что о возможных проблемах, связанных с безопасностью, разработчики начинают мыслить на самом раннем этапе создания программного продукта.
Разумеется, редмондский гигант заинтересован, чтобы и сторонние производители софта ещё заботились о безопасности своих программ как позволительно раньше, а не после этого того, как кто-то обнаружит в них дыры. И хорошо, если тот самый "кто-то" окажется независимым экспертом по безопасности, а не злоумышленником.
Для того чтобы поведать о SDL российским разработчикам, в Москву из Редмонда приехал Иван Медведев, свойский соотечественник и глава группы по разработке внутренних средств по безопасности ПО. Мы задали ему немного вопросов. Как Вы попали в Microsoft и чем в текущий момент занимаетесь в корпорации?
После окончания в 1998 году факультета ВМК Московского университета я работал в одной российской компании, которая занималась шифрованием IP-потоков. Собственно, трудиться я там начал ещё во время учебы. Потом доля моих однокурсников решили съехать на работу в Microsoft. Занятие в том, что представители корпорации приезжали в Россию и специально набирали людей для работы над различными проектами. Нескольких мужчина из моей группы люди из Microsoft как раз тогда наняли.
Я же в тот миг решил не ехать, так как мне нравилась моя служба здесь. В течение следующего года мои друзья писали мне, как им нравится вкалывать в Microsoft, что для них созданы все необходимые условия и предоставлена интересная работа. Я тогда также решил попробовать, отправил резюме и был принят. Это был октябрь 1999 года. Эта группа занималась разработкой ядра. NET. Так уж получилось, что с самого начала вся моя работа была связана с безопасностью.
Я занимался криптографическими средствами, да и в CLR я занимался безопасностью. Это команда людей, которая, по сути, началась с осознания того, что Windows должна сделаться больше безопасной системой. Позже было принято заключение о создании группы разработчиков специального программного обеспечения, предназначенного для поиска проблем, связанных с безопасностью.
Я стал ее организатором и руководителем. Свой коллектив занимается тем, что разрабатывает средства, помогающие отыскивать уязвимости в программном коде или же тестировать этот код на безопасность, например, проводя моделирование угроз. Что представляет собой цикл SDL? Каким образом он реализуется в разработках Microsoft? Как я уже сказал, SDL представляет собой безопасный цикл разработки программного обеспечения.
Это набор процессов, которые рассказывают, что же нужно делать, чтобы программное обеспечение было более безопасным. Ход безопасной разработки делится на семь стадий, а SDL для каждой стадии предоставляет потребный набор документов, чтобы разработчик верно подходил к каждой стадии. К примеру, на стадии дизайна производится моделирование угроз. Оно позволяет программистам, которые не являются экспертами, проанализировать систему и прикрыть возможные пути для возникновения опасности.
На этапе разработки SDL говорит о том, какие инструментальные средства следует использовать. Например, если вы используете компилятор С или С++, SDL говорит, какие функции стоит использовать, а какие не стоит, какие ключи компилятора вам нужны. Оттого что существуют такие ключи компилятора, которые как раз и рассчитаны на обеспечение безопасности. В частности, ключ GS позволяет защититься от ошибки, связанной с переполнением буфера.
Есть и средства нахождения проблем безопасности во час тестирования. Внутри Microsoft SDL обновляется каждые шесть месяцев. Сегодня общедоступной версией является 3.2. Правда, внутри Microsoft она уже в версии 4. Можете ли привести определенный образец реализации SDL в конкретном продукте Microsoft? Начнем с обучения. Внутри Microsoft каждому разработчику, тестировщику и менеджеру продукта необходимо раз в год проходить тренинг по безопасности.
Более того, если хотя бы единственный из разработчиков не прошел эдакий тренинг, продукт не может быть выпущен. Наша группа занимается в том числе и тем, что отслеживает статистику по обучению. Если обозревать на дизайн, то весьма здоровый упор делается на моделирование угроз. Возьмем какой-то конкретный компонент, допустим - файловую систему Windows. Собирается группа, которая включает в себя наших представителей, архитекторов и самих разработчиков. Мы садимся сообща и начинаем процесс моделирования угроз.
Рисуется диаграмма потоков данных, где показано, как эти данные перемещаются по системе, что с чем взаимодействует, как работают основные узлы и т.д. Кроме того есть специальные таблицы, которые показывают, какие типы угроз применимы к тем или иным элементам в диаграмме потоков данных. Они фокусируются на этих типах угроз. Существуют и специальные наводящие вопросы.
Допустим, если вы храните информацию в файле, то к файлам применимы такие-то типы угроз. Дальше от разработчика требуется решение, как будут смягчены возможные типы угроз. Если таковый угрозой может быть утечка данных, то ему следует поразмыслить о шифровании. Если речь идет о передаче данных по сети, то не возбраняется применять SSL или IPsec.
После этого по результатам составляется модель угроз, которую нужно дать центральной группе, чтобы продукт мог заметить свет. Наша группа разрабатывает внутренние инструменты, с помощью которых разрешается удостовериться, что все вышеназванное было сделано. На каком этапе разработки нового продукта вступают в действо методики SDL? На самом раннем. Еще до того, как архитектура нового продукта начинает обдумываться и формироваться, его разработчики уже думают о его безопасности.
В первую очередность разработчики решают, что это за продукт, какие задачи он будет выполнять. И уже на этом этапе они думают о потенциальных угрозах и проблемах безопасности. Может ли SDL учитывать абсолютно новые угрозы, которые прежде ни при каких обстоятельствах не были зафиксированы? Реакция разрешено поделить на две части. Во-первых, когда создается модель угроз, она поначалу фокусируется не на конкретных угрозах, а на их типах.
По материалам www.computerra.ru
Оставить комментарий