Интервью с Майклом Ховардом

Майкл Ховард занимает пост старшего менеджера программы по безопасности, а также является одним из создателей и активным участником Secure Windows Initiative — команды, которая сотрудничает с проектировщиками, программистами и тестировщиками, помогая им разрабатывать безопасные системы. Он приложил немало усилий для организации многих информационных кампаний Microsoft по безопасности. Майкл Ховард написал две книги «Разработка защищенных Web-приложений на платформе Microsoft Windows 2000» и «Безопасный код» (в соавторстве с Дэвидом Лебланком). Вместе с женой, сыном и двумя собаками он живет в городе Бельвью, штат Вашингтон, недалеко от городка Microsoft. По просьбе редакции интервью с ним провел Алексей Доля.

Майкл, расскажите поподробнее, чем вы занимаетесь?

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

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

Вы являетесь широко известным экспертом в сфере безопасности, пишете книги. Как вы приобрели необходимые для этого знания и опыт?

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

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

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

Вы работаете сейчас над какой-нибудь книгой? Может быть, мы скоро увидим новое издание «Защищенного кода»?

Именно сейчас нет. Конечно, мы с Дэвидом имеем в виду довольно много возможностей, одна из которых — выход третьего издания «Защищенного кода». Но время покажет! Очень тяжело написать книгу, если нет возможности работать над ней в течение всего дня.

Microsoft уделила много внимания вопросам безопасности Windows XP. Теперь все ждут новых шагов компании в этом направлении. Вы могли бы рассказать, что сделано в отношении безопасности Windows Longhorn? Может быть, разработаны какие-нибудь особенности дизайна, которые позволят сократить «площадь атаки»?

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

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

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

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

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

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

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

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

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

Что, на ваш взгляд, следует предпринять человеку, обнаружившему лазейку в системе безопасности продукта Microsoft? Только лишь проинформировать разработчиков? Может, стоит опубликовать информацию в сети?

Если кто-то думает, что нашел уязвимое место, ему следует сообщить об этом по адресу secure@microsoft.com. MSRC работает с исследователями постоянно, чтобы определять, действительно ли им удалось найти уязвимость и требуется ли ее исправить в пакете обновлений. Мы всегда публично благодарим исследователей, которые сотрудничают с Microsoft при выходе исправления.

У Microsoft есть собственные криптографы? Они вовлечены в процесс разработки или ведут еще и научные исследования?

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

Microsoft ведутся какие-нибудь исследования в сфере безопасности, которые могут предотвратить появление новых типов атак в будущем? Все знают о существовании отдела Microsoft Research, но проводятся ли там исследования, целиком посвященные ИТ-безопасности?

Некоторые исследования по этому вопросу в Microsoft Research действительно ведутся, но поймите, в Microsoft КАЖДЫЙ сотрудник занимается безопасностью, даже если он не является экспертом в данной области! Так что ответ — «да», мы тратим уйму времени, чтобы выявить новые категории уязвимостей и изменить наши продукты так, чтобы уменьшить шансы атакующих. Это непрекращающаяся война.

Считает ли Microsoft для себя главной задачей именно обеспечение безопасности своих продуктов? Или все-таки во главу угла ставится производительность, практичность либо что-то еще?

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

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

У Microsoft есть какие-нибудь специальные сертификационные программы для профессионалов именно в сфере ИТ-безопасности? Как для разработчиков, дизайнеров, администраторов и т. д., но с уклоном в безопасность?

Еще бы! У нас есть подходящие сертификационные программы, например MCSA+S и MCSE+S. Подробнее о них можно почитать на нашем Web-сайте: http://www.microsoft.com/learning/highlights/ security.asp. У нас также есть специальные материалы для разработчиков, такие как «Microsoft Security Guidance for Developers» (подробнее на http://www.microsoft.com/learning/syllabi/en-us/2806bfinal.mspx). Дополнительную информацию об экзаменах для разработчиков, а также учебных курсах можно найти по адресу: http://www.microsoft.com/learning/exams/70-340.asp.

Достаточно ли высок уровень знаний в сфере ИТ-безопасности среди специалистов, недавно окончивших университет? Следует ли, на ваш взгляд, ввести какие-то особые курсы, которые научат студентов проектировать и писать безопасные приложения?

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

Вы когда-нибудь лично интервьюировали кандидатов на работу? Как можно проверить уровень знаний человека в сфере ИТ-безопасности?

Я не раз принимал участие в собеседованиях. У меня специфический стиль общения с кандидатом, я уделяю основное внимание не навыкам в области написания кода, а наличию «безопасного склада ума». Я задаю людям вопросы, не относящиеся напрямую к сфере ИТ-безопасности. Например: «Как можно обмануть торговый автомат?» Потом я смотрю, как человек отвечает на подобный вопрос. После того как он предложит парочку атак, я спрашиваю: «А как бы вы сами защищали свой автомат от этих атак?» А потом: «А можно ли обойти эту защиту?» Я также прошу людей оценить предложенную ими защиту, определить, является ли она оптимальной. Существуют еще вопросы типа: «Что вы станете делать, если у вас есть всего 100 долл., чтобы защитить все торговые автоматы?» и «А что, если ваша защита должна работать уже завтра?»

Вы можете сделать какие-нибудь прогнозы относительно развития ИТ-безопасности в будущем? Есть ли какие-нибудь тенденции и закономерности?

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

Вы бы хотели сказать что-нибудь нашим читателям напоследок?

Вне зависимости от того, какое программное обеспечение вы используете, убедитесь в том, что установлены все обновления системы безопасности. Все разработчики программ допускают ошибки, и важно убедиться, что вы защищены. Если вы используете Windows XP, обязательно установите Windows XP SP2 и посетите http://www.microsoft.com/protect. Мы также призываем вас сообщать нам о своих проблемах и любых предложениях. Послать свой отзыв или предложение можно со страницы http://www.microsoft.com, выбрав раздел Contact Us.

Алексей Доля (tanat@hotmail.ru) - технический писатель

Поделитесь материалом с коллегами и друзьями