Интервью с Юджином Спаффордом: Windows безопасна так же, как и Linux

Южин Спаффорд (Eugene Spafford) - директор Центра Образования и Исследования Защищенности и Безопасности Информации при Университете в Пёдью (Purdue University's Center for Education and Research in Information Assurance and Security - CERIAS). Юджин написал книгу "Практическое использование Unix и безопасность Internet" (Practical Unix and Internet Security). Он также считается одним из крупнейших экспертов в области безопасности и защищенности операционных систем. Несколько его статей на эту тему легко найти на http://www.techtv.com и http://www.linuxplanet.com.

Юджин был одним из первых среди крупных и авторитетных экспертов, кто поднял вопрос об уязвимости Linux по сравнению с Windows. В качестве основных своих аргументов Юджин приводит статистические данные об атаках на операционные системы и о найденных уязвимостях в них. Часть этой статистики уже мелькала на страницах Ф-Центра (на ней базируются вопросы о безопасности операционных систем в интервью с Питером Нейманом, Ричардом Столлманом, Эндрю Таненбаумом). Нам посчастливилось взять эксклюзивное интервью у Юджина Спаффорда и расспросить о безопасности Windows и Linux напрямую.


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

Юджин Спаффорд. Фраза, ставшая крылатой...

TanaT: Юджин, в своем интервью LinuxPlanet вы сказали, что проблемы с безопасностью есть и у Linux и у MS Windows. А не указывает ли столь частое появление патчей и заплаток для Linux на то, что эта система защищена лучше?

Юджин Спаффорд: Нет. Это указывает лишь на то, что у Linux проблем с безопасностью еще больше, чем у Windows. Частота появления патчей не может быть индикатором защищенности системы. Если говорить по существу, то это отрицательный показатель: чем выше качество кода, тем реже требуется выпускать заплатки для него.
В этом смысле безопасность напрямую связана с качеством кода. Нестабильный, неправильно спроектированный или плохо написанный код - залог ошибок и просчетов, которые приведут к "дырам" и созданию программ, их использующих. Конечно, правильный с точки зрения программиста код еще не является залогом безопасности, так как он не проектировался с целью быть защищенным.


TanaT: "Баги" в продуктах Microsoft оказываются более критическими, чем ошибки в Linux. Например, благодаря одной из последних ошибок в Internet Explorer стало возможным существование червя Klez, который совершил свое победное шествие по планете. Не говоря уже об уязвимости в DCOM...

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


TanaT: То есть было бы глупо утверждать, что Linux защищен лучше?

Юджин Спаффорд: У Linux стопроцентный иммунитет против вредоносного Windows-кода. Это очевидно, так как последний просто не сможет работать под Linux. Также все ошибки в Linux не носят очень уж глобального характера, опять же в виду не слишком широкого использования Linux.
Но это отнюдь не значит, что Linux защищен лучше. С технической точки зрения, безопасность системы - это ее бинарное свойство. В этом ключе, ни Windows, ни Linux не могут обеспечить приемлемого уровня безопасности, так как любая система, имеющая какие-либо уязвимости, не может считаться безопасной.
Чаще всего вместо понятия "безопасность", мы используем такое свойство системы, как "доверие" или "надежность". С учетом конкретной среды исполнения, политик безопасности и стоящих перед операционной системой задач мы можем говорить, что этой системе мы доверяем больше, чем другой. Но лишь в рамках вполне определенных дополнительных условий. С данной точки зрения можно подобрать ситуации, когда Linux и Windows одинаково надежны, а можем и такие, когда одна окажется лучше другой.
В ответе на этот вопрос я не пытаюсь защитить Windows - очевидно, что качество ее кода довольно низкое, а ее дизайн не ставил во главу угла безопасность. Тем не менее, при некоторых условиях Windows может ничем не уступать и даже превосходить Linux. Например, представьте себе начинающего пользователя, работающего на ПК без выхода в сеть. Здесь Windows будет лучшим выбором, так как у нее более дружелюбный интерфейс и более подробная документация.


TanaT: Известно, что ядро Linux - одна из самых безопасных частей этой ОС. Его многократно проверяли на наличие "дыр" опытные специалисты. Основное ПО для Linux разрабатывается опытными разработчиками коммерческими фирмами, в которых работают вполне квалифицированные программисты. Так откуда же берутся "дыры", если над ОС работают лишь эксперты?

Юджин Спаффорд: Эксперты тоже могут ошибиться. Эксперты, использующие такие опасные инструменты, как С, и создающие заплатки на код, написанный другими людьми, вполне могут допускать ошибки. Переполнения буфера, отсутствие проверки параметров и неправильное использование библиотечных вызовов - наиболее частые гости каждого дистрибутива Linux. До настоящего времени самые серьезные ошибки отыскивались в коде, написанном лишь профессиональными программистами. Хотя велико количество и менее опытных программистов, каждый из которых может добавить свой неграмотный код в систему.
Суть же в том, что обычное для сегодняшнего дня проектирование приложений чаще всего приводит к проблемам. Если архитектура проекта с самого начала не учитывает проблем безопасности и во время разработки не проводится контрольный мониторинг (отслеживание всех связей и взаимодействий объектов друг с другом), то получившийся проект будет почти наверняка содержать множество уязвимостей, которые потом будут отысканы и использованы со злым умыслом. Требуется, как можно раньше прилагать как можно больше усилий к тому, чтобы улучшить защищенность приложений.
Безопасность - это не дополнительный приз. Это то, что надо ставить во главу угла еще во время проектирования проекта.


TanaT: Но ведь Microsoft имеет тысячи хорошо тренированных программистов, многие из которых вполне компетентны в вопросах безопасности. Они постоянно следят за тем, чтобы уязвимостей было меньше. Но Windows по-прежнему далека от идеала. Почему? В чем здесь дело?

Юджин Спаффорд: Потому что Windows разработана для бизнеса. Она предназначена для того, что работать с приложениями и сервисами, которые необходимы для бизнеса и требуют минимальной тренировки. Большинство пользователей волнует лишь то, чтобы их работа была выполнена. Они выберут для своих целей ту платформу, которая требует наименьшей предварительной подготовки и имеет в своем арсенале все необходимые утилиты.
Windows получила свое широкое распространение по двум причинам. Во-первых, DOS была очень популярна. Во-вторых, все приложения Microsoft работают под Windows лучше, чем под любыми другими операционными системами. Чем обусловлена популярность DOS в то время, когда другие ОС (такие как Mac) были формально более предпочтительными? А тем, что IBM построила свою маркетинговую политику на ПК, которые управлялись именно DOS. Что же до бизнесменов, то они доверяют IBM.
Если внимательно изучить историю, то господство Windows состоит из одних лишь инцидентов и прецедентов, а вовсе не на более качественных технологиях.


Статистика до 2000 года

TanaT: Так почему же в современной Windows так много "багов"?

Юджин Спаффорд: До недавнего времени, безопасность и качество не являлись основными приоритетами Microsoft. Люди по-прежнему покупали Windows и продукцию Microsoft даже, если она содержала уязвимости. Таким образом, до тех пор, пока люди покупали ПО от Microsoft и не мигрировали на другие платформы (такие как Solaris и Macintosh), у Microsoft не было причин улучшать качество своего кода. Основной целью Microsoft являлось обновлять свои продукты как можно чаще, чтобы пользователи покупали все новые и новые версии. В такой гонке не остается времени на качественное тестирование кода на предмет ошибок в безопасности.


TanaT: Как вы считаете, NT платформы от Microsoft защищены лучше обычных Windows (9x/ME)?

Юджин Спаффорд: Я думаю, что у этих ОС есть хороший потенциал для того, чтобы быть более безопасными. Но реализация Windows NT/2000/XP была таковой, чтобы сохранить совместимость с как можно большим числом уже существующих Windows-приложений. Именно поэтому многие возможности остались не воплощенными.


TanaT: Microsoft проверяла Windows 2000 на проблемы безопасности и присвоила ей сертификат. Это о чем-нибудь говорит?

Юджин Спаффорд: Windows 2000 была сертифицирована по Общим Критериям (Common Criteria). То есть, сертификация означает: в Windows есть определенный код (необходимый для получения сертификата), который разработан по определенным правилам. Это вовсе не значит, что код является "безопасным". А значит лишь то, что код удовлетворяет определенным минимальным требованиям.


TanaT: Посмотрим теперь на BSD. Как вы оцениваете защищенность этих ОС? Например, разработчики OpenBSD при проектировании ОС сделали основной упор на безопасность. Они также потратили много человеко-часов на аудирование уже готового кода. На сегодняшний день еще ни одна "дыра" не была обнаружена в базовой инсталляции OpenBSD.

Юджин Спаффорд: Я считаю, что BSD-системы более стабильны, лучше спроектированы и имеют намного меньше недостатков в безопасности, чем другие ОС. Аудирование кода OpenBSD действительно позволило найти и устранить много уязвимостей.
Я больше доверяю BSD-системам, чем Windows или Linux. Конечно, их нельзя назвать самыми безопасными, но все же они лучше большинства популярных сегодня ОС. Если вы хотите построить Интернет-сервер и решаете, что выбрать в качестве платформы (Linux, Windows или BSD), я бы рекомендовал вам остановиться на BSD.


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

Юджин Спаффорд: Конечно. Она не является секретной. Данные показывают, что нет никакого превосходства Linux над Windows.



TanaT: Есть ли какие-нибудь критерии, по которым можно определить безопасна ОС или нет?

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


TanaT: Какими знаниями должен обладать специалист, ищущий "дыры" в коде?

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


TanaT: А зависит ли уровень безопасности продукта от тех средств разработки, которые использовались для его создания?

Юджин Спаффорд: Конечно!


TanaT: Получается, что какие-то средства разработки надежнее других?

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


TanaT: Если подвести небольшой итог, то идеальной ОС не существует?

Юджин Спаффорд: Именно так. Всё зависит от потребностей, политик и окружения. Что касается меня, то я использую MacOS X, как основную ОС, и Solaris, как дополнение к ней. Для наших исследовательских проектов мы предпочитаем FreeBSD и OpenBSD, а иногда и Windows 2000. Мы также используем около 10 других ОС для различного рода исследований и для наших серверов. Например, PalmOS и IOS используются на маршрутизаторах. Ни одна из этих ОС не является идеальной, но каждая хороша на своем месте.


TanaT: Можете сравнить Solaris и Mac OS X?

Юджин Спаффорд: Опять же, все зависит от конкретных условий. Существует целый ряд очень надежных ОС, о которых ваши читатели даже и не слышали. Например, одной из самых безопасных коммерческих систем можно считать System/36 от IBM. Я также уважаю Trusted Solaris от Sun и Virtual Vault от Hewlett-Packard. Тем не менее, это не те системы, которые пользователи хотели бы иметь на своих домашних ПК - но они почти идеальны для серверов. Для конечного использования мне нравятся MacOS X и OpenBSD.


TanaT: Какие "баги" встречаются наиболее часто? Переполнения буфера?

Юджин Спаффорд: Да, именно переполнения буфера. Эта ошибка встречается чаще всего. За ней следуют отсутствие проверки параметров, передаваемых в программу/подпрограмму, выход за границы памяти и значений. Избежать многих из этих ошибок легко, если программист будет проверять коды, возвращаемые ему после системных вызовов. Однако мало кто это делает.


TanaT: Спасибо за познавательную беседу.

Проблема, поднятая в интервью, намного серьезней, чем кажется на первый взгляд. Разработчики и пользователи системы Linux часто говорят, что их ОС защищена лучше Windows. В качестве основных аргументов часто можно услышать нечто похожее на "Linux разрабатывается открытым сообществом программистов, каждый из которых может вносить свой вклад в общее дело" и "исходный код почти всех приложений, входящих в состав Linux открыт для всех - любой может исследовать его на уязвимости или просто модифицировать". Наверное, это покажется странным, но эти доводы не имеют никакого отношения к безопасности: они могут быть истолкованы, и как плюсы, и как минусы. Хочется еще раз процитировать слова Ричарда Столлмана, идеолога свободного программного обеспечения: "В отличие от некоторых, я никогда не говорил, что основной причиной перехода к свободному ПО является его большая надежность или более широкие возможности". Цитата взята из эксклюзивного интервью, которое Ричард Столлман дал нашей компании.
Linux действительно имеет ряд преимуществ перед Windows, как и Windows перед Linux. Но в бонусы той или иной стороны не входит безопасность. Правда то, что Linux менее популярен, чем Windows. Это опосредованно сказывается на защищенности свободной системы - меньшее число злоумышленников исследуют ее в поисках ошибок. Хотя искать "баги" в приложениях Linux намного проще. Хакерам не понадобится ни отладчик, ни дизассемблер...
Последнее время представители Microsoft все чаще и чаще делают заявления о том, что внимание разработчиков Microsoft к безопасности их систем и приложений возросло как никогда ранее. Вспомните хотя бы известную фразу Билла Вегте, вице-президента подразделения Windows Server Division корпорации Microsoft: "При разработке Windows Server 2003 мы ставили во главу угла повышение безопасности системы. Безопасность является одной из главных забот пользователей, и новые функции, реализованные в этой версии, значительно облегчают создание защищенных систем. Windows Server 2003 представляет собой надежную безопасную платформу, обогащенную целым рядом новаторских решений". На практике действительно приняты кое-какие меры по упрощению управления патчами и сервис-паками (полезная утилита MBSA), а также повышена безопасность по умолчанию в Windows Server 2003. Очень надеемся, что Microsoft не остановится на полпути и безопасность ее операционных систем будет только возрастать.