Наше ПО безопасно или беззащитно?


Сегодня мы хотим представить вашему вниманию интервью с Питером Нейманом (Peter Neumann), экспертом по компьютерным рискам, надежности и безопасности ПО. Когда я предложил Питеру дать интервью он ответил просто: "А о чем вы бы хотели поговорить?", "О надежности и защищенности ПО" - ответил я. "Нет, думаю, мы не будем делать интервью. Неужели вы не читали моих статей? Думаете, вашим читателям будет приятно узнать, что все, чем они пользуются, уязвимо и незащищено?". Мой азарт только разжегся от такого ответа. К счастью, Питер согласился аргументировать свою точку зрения: мы обсудили и червей, и вирусов, и операционные системы, и спецслужбы, и, что самое главное, компьютерные риски. Вы знали, к примеру, что из-за ненадежного программного обеспечения гибнут люди?


TanaT: Недавняя эпидемия бестелесного червя Helkern (так же известного, как Slammer), показала, что всего один вирус может захватить весь мир за "15 минут" (на самом деле Slammer’у понадобилось четыре дня, но технологии, реализованные в нем, все равно впечатляют). То есть вредоносный код, использующий уязвимости в mainstream-программах (как, например, MS SQL Server) могут очень быстро распространяться и без человеческого вмешательства. По-моему, это очень опасно. Такой монстр может остановить Internet на несколько дней. Многие эксперты по всему миру предсказывают, что подобные вирусы еще появятся в самом ближайшем будущем. Как вы считаете, насколько данная угроза опасна? Есть ли какие-нибудь способы противостоять ей?

Peter Neumann: Технология массированных атак через Internet действительно очень опасна. С другой стороны Helkern/Slammer - это всего лишь малая часть того, что могло произойти. К сожалению, у человечества слишком мало опыта в борьбе с действительно искусными самомодифицирующимися stealth-червями (вирусами и троянцами), а также с их гибридами. А ведь именно этот класс вредоносных кодов может быть по настоящему опасным. Большинство существующих сегодня антивирусных защит довольно примитивны, когда дело доходит до столкновения с вирусами, подобными Helkern. Что же делать? Наиболее очевидный ответ в том, что программное обеспечение для ПК и серверов следует изначально проектировать и реализовывать таким образом, чтобы предотвратить такие атаки на уровне системной архитектуры. Следует использовать проверенные техники проектирования, обращать повышенное внимание на реализацию восстановительных и административных функций. И, самое главное, тщательно отслеживать любую возможность исполнения злонамеренного кода.

Питер Г. Нейман (Peter G. Neumann) - доктор Гарвардского и Дармштадского Университетов. Работал в течение 10 лет в Bell Labs (Murray Hill, New Jersey), в 1960-ых участвовал в разработке Multics в Массачусетском Технологическом Институте и Ханивел, с 1971 года работает в Лаборатории Вычислительной Технике Исследовательского Института Стэнфорда (SRI Computer Science Lab). Питер занимается компьютерными системами и сетями, безопасностью, надежностью, долговечностью, сохранностью и другими аспектами таких критических систем как электронное голосование, криптополитика, социальная сфера и конфиденциальность. Он является модератором на Risks Forum Ассоциации по Вычислительной Технике (ACM), редактором колонки Inside Risks еженедельника CACM, председателем комитета ACM по вопросам Компьютеров и Публичной Политики, сопредседателем консультативного комитета ACM по вопросам Безопасности и Приватности. Питер основал общество People For Internet Responsibility (PFIR) и International Internet Cooperation and Analysis (URIICA). Его книга, Computer-Related Risks, выдерживает уже шестое издание. Он является сотрудником ACM, IEEE (Институт инженеров по электротехнике и электронике) и AAAS (Американская ассоциация содействия развитию науки). В 2002 году Питер получил Национальную награду в сфере компьютерной безопасности. Питер читает курсы в Стэнфорде, Беркли и Университете Мериленд. Его домашняя страница доступна по адресу: www.csl.sri.com/neumann.


TanaT: То есть вы считаете, что современное программное обеспечение ПК и серверов не в состоянии противостоять таким атакам? Почему? Из-за ошибок проектирования и отсутствия "идиомы безопасности"?

Peter Neumann: Сегодняшние приложения для ПК и серверов еще очень и очень далеки от возможности противостоять злонамеренным атакам и отказу в обслуживании (Denials of Service - DoS). Проблема и в перечисленных вами аспектах (ошибки проектирования и недостаточное внимание к проблеме безопасности), но ими, к сожалению, не ограничиваются. К примеру, на системного администратора "давят" очень сложные интерфейсы, предназначенные для настройки и конфигурирования системы. Под этим давлением очень легко допустить хотя бы маленькую ошибку. Программное обеспечение, разрабатываемое Microsoft, требует, без преувеличения, сотни service-паков для устранения тех уязвимостей, что уже обнаружены, и еще несколько сотен таких же для еще не обнаруженных "дыр". Также следует обратить внимание на размер современного программного обеспечения: он просто огромен. Это в свою очередь создает предпосылки для ошибок в реализации и проектировании.


Питер Нейман, эксперт по компьютерным рискам.


TanaT: Каково ваше мнение, можно ли использовать вирусы и черви (да и другой вредоносный код) в "кибер-войне" между двумя и более государствами?

Peter Neumann: Конечно! Эффект будет намного более разрушительным, если кибер-атаки сочетать с другими, некомпьютерными, операциями. Причем управлять проникновениями, вторжениями, вирусами, червями, троянцами и DoS-атаками можно удаленно. Победит та сторона, чья система будет более защищенной.


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

Peter Neumann: Так уж и все! Вы слегка преувеличиваете. У нас же не монолитная культура! Ведь код, опасный для продуктов Microsoft, не принесет ни малейшего вреда Unix, Linux и BSD системам. Можно, к примеру, просто сконцентрироваться на вирусах, поражающих определенную (чувствительную к ним) операционную систему.


TanaT: Как вы считаете, а популярные услуги в областях security и криптографии (и программное обеспечение в этой сфере) могут в тайне контролироваться спецслужбами?

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


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

Peter Neumann: Мне очевидно, что если провайдер услуг Internet захочет просматривать весь свой информационный поток, то ему надо будет лишь "руку протянуть". Более того, если правительство (мое, ваше или чье-нибудь еще) захочет получить доступ к этой информации, то очень вероятно, что оно получит абсолютно всю информацию, которой располагает провайдер. Таким образом, можно запросто контролировать чью-нибудь активность в режиме реального времени, а также получить информацию обо всех событиях уже после того, как они произошли.


TanaT: Негласно считается, что операционные системы класса UNIX являются более надежными, защищенными и гибкими в администрировании, чем продукты Microsoft. Можете прокомментировать?

Peter Neumann: В общем, да. Они спроектированы с расчетом на гибкое и легкое управление умным системным администратором. Это одно из проявлений open-source сущности программного обеспечения. Но, в то же время, пользоваться ими не легко. Вопрос в другом: спроектированы ли эти системы с учетом аспектов безопасности, правил проектирования и утилит для отыскания "дыр" и "багов"? Такие системы по определению будут более защищенными и гибкими в управлении. Продукты Microsoft в прошлом сильно пострадали от недостатка внимания именно к этим аспектам разработки. У Unix/Linux систем сейчас более высокая репутация в этой сфере. Но было бы величайшей ошибкой рассматривать системы Unix/Linux в изоляции, отдельно от операционной среды. Все сложные комплексы имеют недостатки. Если администратор недостаточно искусен, обязательно найдутся ошибки в конфигурации настроек системы. К сожалению, системы Microsoft перекладывают слишком большую ношу на операционную среду.


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

Peter Neumann: Банки и правительственные структуры страдают в основном от внутренних вредоносных действий и намного реже от внешних вторжений. Если говорить о проектировании систем, предназначенных для защиты критических ресурсов (например, человеческой деятельностью, государственной надежностью, финансами и электронным голосованием), то стандарты на безопасность, надежность, системную интеграцию и подотчетность для них намного выше. Всегда следует задумываться о перспективах, считать на несколько шагов вперед. Вы можете пренебречь одним из указанных аспектов ради какой-то мгновенный выгоды, но через некоторое время недостаток обязательно скажется.


TanaT: То есть, на ваш взгляд, сегодня еще очень рано говорить о компьютеризации отраслей, напрямую связанных с управлением критическими ресурсами?

Peter Neumann: Вовсе нет. Я понимаю, что сегодня почти в два раза больше Unix/Linux серверов, чем серверов на продуктах Microsoft. Вот, где используются критические функции. Но использовать компьютеры в сверхкритических сферах (то есть тех, что отвечают на человеческую безопасность, экологию, критическую инфраструктуру такую как, телекоммуникации, электрическую отрасль, системы управлениям ядерными электростанциями, транспортом: железнодорожным, авиа и т. д.) я бы так сразу не стал. Такие системы должны быть построены на надежности, безопасности, интеграции и системной + сетевой выживаемости. Нравится нам это или нет, но только эти факторы являются основополагающими для подобного рода систем.


TanaT: Почему вы считаете, что современные стандарты не достаточно надежны и безопасны?

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


TanaT: Почему вы все-таки считаете, что все программное обеспечение безнадежно уязвимо? Ведь существует масса криптографических и безопасных протоколов и алгоритмов! Взять хотя бы тот же PGP.

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


TanaT: Если тезис "Все ПО уязвимо" не правилен, можете назвать то программное обеспечение, что с вашей точки зрения, является безопасным?

Peter Neumann: Давным-давно в 1965 году, когда я работал в Bell Labs, я участвовал в разработке операционной системы Multics. Проект разрабатывался в рамках Массачусетского Технологического Университета. Я тогда работал преимущественно в Ханивел (Honeywell). Multics решала многие проблемы безопасности и надежности. В то время это был большой прорыв: иерархия каталогов, списки контроля доступа, символьные имена файлов и потоков ввода-вывода (не ограниченные 6 или 8 символами), динамическое связывание, сегментированная и страничная память, доменная архитектура, поддерживающая 8 колец безопасности, и даже решение проблемы 2000 года. Все это было более 35 лет назад. А в 1973 году, когда я работал в Исследовательском Институте Стэнфорда (SRI), мы спроектировали защищенную объектно-ориентированную программно-аппаратную платформу со строгим контролем типов (так называемая Provably Secure Operating System - Гарантированно Безопасная ОС). Ее основные концепции нашли широкое применение во многих системах, использующих строгий контроль типов. Сегодня DARPA (Управление Перспективных Исследовательских Программ) ведет программу Composable High-Assurance Trusted Systems (Компонуемые Сверхнадежные Доверенные Системы), которая предлагает ряд исследовательских решений. Подгоняя Linux под аспекты безопасности и надежности, они создали SELinux. Фактически эта операционная система сегодня нужней всех остальных. Но ее разработку финансировало Агентство Национальной Безопасности (National Security Agency), поэтому пока неизвестно, станет ли она доступна общественности. Очень маловероятно, что на современном рынке что-нибудь изменится.

Вот к чему приводит ненадежное программное обеспечение:

Первый матч Каспарова с Deep Blue: был сделан ход "A3", машина интерпретировала его как команду "3", потребовалось перезагрузка (двадцатиминутная задержка времени). Для справки: Deep Blue обыграл Каспарова во втором матче, 11 мая 1997 года.

Американский самолет F-15 над Ираком открыл огонь по своим же Черным Ястребам. 26 человек погибло. Все было списано на многочисленные человеческие ошибки. В войне в Заливе 24% всех погибших, погибли от "дружеского" огня. Многочисленные технические отчеты всех случаев свидетельствуют, что ошибки были вовсе не человеческими.

Иракский пассажирский самолет был сбит американской ракетой (290 человек мертвы). Ошибка человека и незаконченный защитный интерфейс.

Две из трех ракет Патриот промахнулись.

Российский авиалайнер был сбит украинской ракетой по "дурацкой" случайности. До этого украинская ракета угодила в жилой массив.

Британский вертолет сбит британской же ракетой.

Ошибка в программном обеспечении в Тренажере Артиллерийской Стрельбы привела к гибели солдата. Теоретическая вероятность такой ошибки близка к нулю.

3 независимых сообщения на Liberty об отступлении не дошли до адресата. 34 погибших, еще больше раненых.

Ракетный крейсер Йорктаун (Yorktown) потерял управление на 2.75 часа из-за ошибки деления ноль в приложении под Windows NT технологии Smart Ship.

Два самолета ВВС США (F-15) исчезли над Шотландией (26 Mar 2001 года); Самолет разведчик армии США разбился под Нюрнбергом (два пилота мертвы) - в тот же день. Немецкий военный вертолет разбился в Пеппене (Германия) 27 марта 2001, 4 человека мертвы.

Некорректные данные, введенные в медицинскую программу, привели к гибели 5 человек в Панаме.

Работ, которым управлял доктор, делающий операцию, перерезал аорту. Пациент погиб.

Данные из материала Illustrative Risks Питера Неймана.



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

Peter Neumann: Такие системы нужны лишь для критических приложений. Но это вовсе не значит, что на рынке нет на них спроса. Многие пользователи интересуются "массовыми" компьютерами: их вполне удовлетворяет работа на незащищенных системах, которые могут рушиться сами по себе.


TanaT: Если вернуться к разговору о Linux: считается, что это - очень надежная операционная система, но статистика CERIAS (Центра Образования и Исследования Защищенности и Безопасности Информации при Университете в Пуадью) говорит, что за последние три года в Linux обнаружили 206 уязвимостей, а в Windows - только 144. Можете прокомментировать?

Peter Neumann: Подсчет числа уязвимостей и понятие безопасности - это не одно и то же. Будьте чрезвычайно внимательны в том, что именно вы подсчитываете. Вы, видимо, сконцентрировались на вирусах и "червях", ибо именно эти проблемы поднимают такую шумиху вокруг продуктов Microsoft. Далее, любой код в Windows-приложении (корректный или нет) может повлиять на операционную систему. Например, ракетный крейсер Йорктаун (Yorktown) потерял управление на два часа сорок пять минут только в результате того, что в каком-то приложении возникло деление на ноль. Самой большой ошибкой тогда было поставить Windows для управления кораблем. Если какое-то приложение может так "вырубить" систему, то зачем поднимать вопрос о ее безопасности - все зависит от того, где она используется.

Найденные уязвимости приложений, с 01.01.2000 г.
 Rank Vendor Count
 1 Linux 209
 2 Internet Explorer 91
 3 Solaris 89
 4 FreeBSD 88
 5 Windows 2000 81
 6 Irix 80
 7 HP-UX 78
 8 Windows NT 66
 9 Iis 55
 10 AIX 54
 11 Linux Kernel 46
 12 OpenBSD 46
 13 NetBSD 37
 14 SQL Server 35
 15 Apache 34
 16 Windows XP 33
 17 Unixware 31
 18 Bugzilla 28
 19 Sunos 28
 20 Immunix Os 28
 21 Windows 98 25
 22 Open Server 24
 23 Oracle8i 24
 24 Ios 22
 25 Macos X 21
 26 Oracle9i 21
 27 KDE 19
 28 Windows Me 19
 29 Oracle9i Application Server 19
 30 OpenSSH 19
 31 Firewall-1 19
 32 Corporate Server 18
 33 Linux Mandrake 17
 34 Imail 16
 35 Exchange 15
 36 Php-nuke 15
 37 OpenUNIX 15
 38 Unixware 15
 39 Bind 14
 40 Windows 95 14
 41 Data Engine 14
 42 Tomcat 13
 43 PHP-nuke 13
 44 FTP Server 13
 45 Outlook Express 13
 46 Interscan Viruswall 13
 47 VPN 3000 Concentrator 13
 48 Secure Linux 12
 49 Ethereal 12
 50 Cups 12
 51 Jrun 12
 52 Tru64 12
 53 MySQL 12
 54 Openlinux 12
 55 Domino 11
 56 Zope 11
 57 Openlinux Server 11
 58 Oracle9ias Web Cache 11
 59 Kerberos 5 10
 60 Openlinux Workstation 10
 61 Soho Firewall 10
 62 VPN 3002 Hardware Client 10
 63 JVM 10
 64 Jana Web Server 10
 65 SSH 10
 66 Web Server 10
 67 Netware 10
 68 MS Office 10
 69 Outlook 10
 70 Eudora 9
 71 Open Desktop 9
 72 Coldfusion Server 9
 73 Sendmail 9
 74 Netscape Communicator 9
 75 Oracle 9i Application Server 9
 76 Single Network Firewall 9
 77 Samba 9
 78 Eserver 9
 79 Badblue 9
 80 Expressa 9
 81 PostgreSQL 9
 82 Hosting Controller 9
 83 Fetchmail 8
 84 Instant Messenger 8
 85 Edesktop 8
 86 Cbos 8
 87 Xpede 8
 88 Mailman 8
 89 Opera 8
 90 Eftp 7
 91 Enterprise Server 7
 92 Excel 7
 93 Media Player 7
 94 Sambar Server 7
 95 Raq 7
 96 Mantrap 7
 97 Oracle 7
 98 Cisco 12000 7
 99 Domino R5 Server 7
 100 X11r6 7

Статистика CASSANDRA (tm)



TanaT: Можете привести еще примеры того, как программы подводили человека при управлении критическими ресурсами?

Peter Neumann: Пожалуйста, посетите мой сайт и посмотрите документ Illustrative Risks (Иллюстрированные Опасности - линк). Вы найдете случаи, когда люди умирали из-за ошибок в медицинских приложениях и программах, управляющих транспортом, когда терялись финансы и другие ресурсы, просто причинялся вред здоровью человека и т. д. Все это результат недостатка надежности и защищенности.


TanaT: Как проверить программное обеспечение на аспекты надежности? Есть какие-нибудь критерии, которым должны удовлетворять приложения, управляющие сверхкритическими ресурсами?

Peter Neumann: Сколько бы вы не проводили тестирования, 100% уверенности не будет никогда. Само тестирование на надежность имеет много всяких аспектов: ваши требования к понятию надежности могут быть некорректными, ваша тестовая методика может быть не верной или вы просто ищете недостатки не того рода. Но, в любом случае, тестирование - это хоть какая-то гарантия того, что ваша система является надежной. С другой стороны, тестировать на безопасность не в пример сложнее, потому что никогда нельзя быть уверенным, что вы проверили все виды уязвимостей, которые бывают. Следует также защищать системы от их пользователей. Общих рекомендаций, к сожалению, нет.


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

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


TanaT: Некоторые антивирусные эксперты считают, что единственный способ уничтожить анархию в Internet - это ввести уникальные статические номера (ID) для каждого пользователя. Это поможет ловить всех, кто запустил вирус в сеть, разослал спам или вторгся на чужой сервер. Как вы считаете?

Peter Neumann: Статические ID - это палка о двух концах (не говоря уже о том, что не видно, как это все реализовать). Даже сертификаты public-key имеют свои проблемы. Анонимность иногда нужна, а иногда - опасна. Думаю, нет простого ответа на ваш вопрос.


TanaT: Вы говорите по-русски?

Peter Neumann: Я не говорю по-русски и читать могу только чуточку. Я учил русский в течение года в конце 1950-ых.


TanaT: Как вы нашли свой путь в сферу IT в общем и в сферу безопасности в частности?

Peter Neumann: Я начал заниматься компьютерами в январе 1953 году, когда профессор Говард Айкен из Гарварда читал нам курс теории переключательных схем. Моя докторская работа во второй половине 1950-ых была посвящена надежности и долговечности коммуникаций. Над проблемами безопасности я начал работать, когда включился в проект разработки Multics.


TanaT: Можете сделать какой-нибудь прогноз относительно эволюции IT-мира и систем безопасности?

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


TanaT: То есть, на ваш взгляд, будущее за свободным ПО и открытыми исходниками?

Peter Neumann: Это играет большую роль. Как минимум, это подстегивает корпоративных разработчиков делать свою работу лучше.


TanaT: А вы не были знакомы с Джоном фон Нейманом? Может, вы его родственник?

Peter Neumann: Я никогда не встречал Джона фон Неймана. Мой отец родился в той части Австро-Венгерской Империи, что теперь принадлежит Украине. Насколько я знаю, Джон фон Нейман родился в Будапеште. И звали его Янош Нейман (Janos Neumann). Но "Нейман" это довольно распространенная фамилия, как в России, например, "Ивановы".


TanaT: Хотите что-нибудь сказать нашим читателям?

Peter Neumann: Остерегайтесь якобы простых решений в сложных задачах. Не доверяйте технологиям, которые этого не заслуживают. Остерегайтесь использовать старые технологии в решении современных задач. Не доверяйте внутренним пользователям, если нашли систему, защищенную от внешних атак. Держите нос по ветру.

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

Я советую вам регулярно читать Risks Forum, подписавшись на него или найдя старые выпуски (www.risks.org). Возможно, некоторые из читателей заинтересуются проблемой и прочтут мою книгу Computer-Related Risks, которая исследует такого рода ситуации. К сожалению, она доступна только на английском и японском.

Spasibo! Xoroscho! Pyotr.


TanaT: Петр, большое спасибо за столь обстоятельную беседу. Всего вам доброго и успехов!