На страже безопасностиВозвращаясь к 10 непреложным законам безопасности, часть 2

Йеспер М. Йоханссон (Jesper M. Johansson)

Cодержание

Четвертый закон. Если злоумышленнику позволено загружать программы на ваш веб-узел – это уже не ваш веб-узел.
Пятый закон. Слабые пароли перекрывают прочную безопасность.
Шестой закон. Компьютер защищен настолько, насколько можно доверять администратору.
Седьмой закон. Зашифрованные данные защищены настолько, насколько защищен ключ дешифрования.
Заключение

В выпуске журнала TechNet Magazine, за последний месяц, я запустил серию из трех частей, возвращающуюся к хорошо известному очерку, «10 непреложных законов безопасности». Моя цель заключается в том, чтобы оценить их, восемь лет спустя после их первой формулировки и увидеть, остаются ли они верны – другими словами, увидеть, действительно ли они «непреложны». (Первую часть серии можно найти по адресу microsoft.com/technet/archive/community/columns/security/essays/10imlaws.mspx.)

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

Четвертый закон: Если злоумышленнику позволено загружать программы на ваш веб-узел – это уже не ваш веб-узел.

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

Для понимания четвертого закона довольно важен исторический контекст. Законы были первоначально опубликованы в 2000 году. В то время сеть все еще была довольно новым и незрелым явлением. Веб-узлы, вроде Amazon и eBay только разрабатывались. И в то время как выполнение произвольных команд на веб-узлах за счет использования уязвимостей было распространено, это нельзя было сказать про исправление этих уязвимостей.

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

Время четвертого закона было также временем вандализма на веб-узлах. Attrition.org содержит зеркальные отражения многих примеров вандализма того времени (attrition.org/mirror/attrition/months.html). Жертвой вандализма стали многие веб-узлы, часто не из последних. Даже домашняя страница известной организации обучения безопасности SANS Institute не избежала его. Рис. 1 показывает вандализм на веб-узле штата Аризона в октябре 1998 г.

fig01.gif

Рис. 1. Вандализм на веб-узле штата Аризона (щелкните изображение, чтобы увеличить его)

Проблема тогда состояла в том, что пользователи, как правило, не понимали, что реально произошло, когда веб-узел подвергался вандализму. Консенсус состоял в том, чтобы избавиться от пострадавшей страницы и продолжать по-старому. Те, кто знал толк в веб-узлах, могли закрыть дыру, использованную злоумышленниками (если удавалось ее найти).

Общая картина не рассматривалась. Четвертый закон был разработан, чтобы заставить людей думать о том, что могло бы случиться при вандализме на веб-узле, а не о том, что случилось.

Увы, четвертый закон был не вполне успешен. Несмотря на четвертый закон, к 2004 году я устал отвечать на вопрос: «Можем мы просто удалить веб-страницу, вывешенную хакером, и продолжить работать как обычно?» Не будучи немногословным, я попытался развеять такие представления, с помощью статьи под названием «Помогите: меня взломали. Что мне теперь делать?» (technet.microsoft.com /en-us/library/cc512587.aspx).

Вопрос, однако, состоит в том, остается ли четвертый закон в силе сейчас. Действительно ли злоумышленник может завладеть веб-узлом, если он может загрузить программу на него? Говоря конкретнее, может ли он завладеть веб-узлом, посетителями или тем и другим? Поскольку четвертый закон нечеток в этом плане, я проанализирую обе возможности.

По части завладения веб-узлом ответ – да. Злоумышленник владеет веб-узлом, если ему позволено помещать программы на него (есть, впрочем, несколько исключений, которые я рассмотрю чуть ниже). В случае типичного веб-узла есть две вещи, которые злоумышленник может сделать, загружая программы, и одно весьма существенное следствие из его возможности это сделать

Первое, что может сделать злоумышленник, – заставить веб-узел служить его нуждам. Если кто-то заинтересован в распространении нелегальных файлов, таких как детская порнография, где это лучше сделать, как не на веб-узле, который невозможно связать с самим хакером? Преступники весьма охотно предпочтут распространять подобное содержимое с чужого веб-узла, а не со своего.

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

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

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

Что касается нарушения безопасности посетителей веб-узла, то это более сложный вопрос. В конце 90-х обозреватели были полны уязвимостей. В районе 2004 года ситуация решительно изменилась. Основные современные обозреватели, Internet Explorer и Firefox, довольно основательны в плане безопасности. На самом деле, по сравнению с тем, что было у нас в 90-х, современные обозреватели являются настоящими бастионами безопасности.

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

Слишком многие пользователи устанавливают все, что веб-узел говорит им установить. Это серьезная проблема, поскольку ее нельзя решить за счет технологии. Я рассматривал ее в выпусках рубрики «На страже безопасности» за июль, август и сентябрь 2008 г. Касательно четвертого закона это, увы, значит, что у злоумышленника есть отличный шанс нарушить безопасность посетителей.

Ранее упомянутые исключения должны быть очевидны. Сейчас веб-узлы делают многие вещи, которые не предвиделись тогда, в конце 1990-х. Например, обычными стали узлы внутреннего сотрудничества, такие как Microsoft SharePoint. Кто угодно с необходимыми полномочиями может загрузить программу на такой узел, но это значит, что ни узел, ни пользователь, посетивший его, не будут поставлены под угрозу. Это просто предназначение веб-узла. Пользователи считаются доверенными, до определенного предела, просто в силу наличия необходимых разрешений на доступ к веб-узлу.

Затем можно вспомнить про веб-узлы бесплатных программ. Хотя ранее на них и появлялись вредоносные программы, они специально разработаны для обмена программами. Это само по себе не значит, что безопасность кого-то из пользователей находится под угрозой. Короче говоря, все эти виды узлов снабжены мерами защиты, чтобы обеспечить сохранение их безопасности и предотвращение угрозы для любых заходящих на них пользователей. Я считаю это исключением, подтверждающим правило. Следовательно, если не буква, то дух четвертого закона остается в силе – несмотря на наличие веб-узлов, позволяющих кому угодно загружать программы на них.

Пятый закон. Слабые пароли перекрывают прочную безопасность.

Пароли были предметом моей страсти в течение многих лет. Пароли, или, говоря более широко, общие секреты, являются отличным способом проверки подлинности субъектов. У них есть лишь один мелкий недостаток: перед лицом человеческой природы они бессильны.

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

Решением стали учетные записи пользователей и пароли. Мы привыкли иметь одну учетную запись на компьютере. И обычно у нас был один пароль, как правило выбиравшийся по следующему принципу:

  • Имя одного из детей
  • Имя супруги(а)
  • Имя домашнего животного
  • "Бог" (в случае привилегированных пользователей)

Перенесемся на 30 лет вперед. Теперь у нас есть сотни учетных записей – на веб-узлах по всему Интернету и на нескольких компьютерах. Каждая из этих систем говорит нам, что на ней не следует использовать тот же пароль, чем на любой другой системе. Пользователям рекомендуется делать их сложными, не записывать их и менять их каждые 30-60 дней.

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

  • Имя одного из детей пользователя, с добавленным к нему числом 1
  • Имя супруги(а) пользователя, с добавленным к нему числом 1
  • Имя домашнего животного пользователя, с добавленным к нему числом 1
  • "БогБог11" (только в случае привилегированного пользователя)

За прошедшие 30 лет, мы продвинулись далеко не настолько, насколько хотелось бы. Исследователи по-прежнему находят пароли плодотворной областью для исследований, см. статью в PC World "Too Many Passwords or Not Enough Brainpower" («Слишком много паролей или недостаточно умственных способностей» (по адресу pcworld.com/businesscenter/article/150874/too_many_passwords_or_not_enough_brain_power.html).

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

Факт состоит в том, что значительная часть безопасности сводится к одному слабому месту. Возьмем, для примера, доступ к корпоративной виртуальной частной сети (VPN) Я участвовал во множестве дискуссий о различных технологиях VPN; аттестациях поставщиков, где поставщики указывали на достоинства их чрезвычайно надежной и чрезвычайно медленной криптографии, на то, как они меняют ключи шифрования, чтобы злоумышленник не мог просматривать трафик и криптоанализировать его.

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

Является ли шифрование интересным слабым местом? С гораздо большей вероятностью, взломщик может воспользоваться простой уязвимостью – фактом, что пароли пользователей часто принадлежат к перечисленным категориям.

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

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

Пятый закон определенно остается верен сейчас и останется в будущем. Однако, я думаю, что его можно сделать существенно более общим. Не только слабые пароли перекрывают прочную безопасность. Говоря более обще, можно сказать, что «слабая проверка подлинности» или даже «слабые места» перекрывают прочную безопасность.

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

Для примера, подумайте над тем, как много организаций пытаются регулировать, какие съемные устройства может использовать пользователь, но допускают исходящие подключения Secure Shell (SSH) и зашифрованные подключения электронной почты. Сколько потерь данных можно реально смягчить ограничением на съемные устройства, если допускается передача данные с шифрованием, так что данные даже нельзя увидеть? Это одна из крупных проблем, которую мы, специалисты по безопасности, должны решить, чтобы не зря есть свой хлеб.

Шестой закон: Компьютер защищен настолько, насколько можно доверять администратору.

Меня поражает то, что даже сейчас мы продолжаем сталкиваться с отчетами о способах преодоления безопасности, которые работают только против администраторов – и хуже того, только в случае применения их администратором. Я пишу это в аэропорту, по пути с конференции Black Hat 2008. Даже там я столкнулся с презентацией, отталкивавшейся от идеи: «Если у вас есть корневой доступ, завладеть системой можно следующим образом».

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

Факт весьма прост: любой пользователь, являющийся администратором (или корнем, или привилегированным пользователем, или как там еще можно назвать эту роль) всемогущ внутри своей системы. У этого пользователя есть возможность сделать все!

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

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

Есть, однако, некоторые дополнительные моменты, о которых стоит подумать. Во–первых, идея администратора, с перспективы компьютера, включает не только пользователя, которому была дана такая роль. Она также включает все программы, исполняемые в контексте безопасности этой роли. Тогда, соответственно, она включает и любого из авторов этих программ.

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

Это ключевой момент, поскольку лишь недавно средний пользователь получил реальную возможность управлять компьютером на основе Windows не как администратор. Это основная цель технологии управления доступом на уровне пользователей (User Account Control – UAC)в Windows Vista. Но и там не существует границы безопасности между административным и не-административным контекстом пользователя. Как следствие, шестой закон применим к любому пользователю, который потенциально может стать администратором, а не только к тем, кто являются таковыми в данный момент.

Как следствие, единственным способом выйти из под действия шестого закона является не быть администратором, а работать как действительно стандартный пользователь. Увы, это не является режимом по умолчанию даже в Windows Vista и многие поставщики оборудования, на практике, отключают UAC вообще.

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

fig02.gif

Рис. 2. Наиболее видимой, и, вероятно, наименее важной частью UAC является запрос на повышение прав (щелкните изображение, чтобы увеличить его)

Шестой закон сохраняет силу по сей день и сохранит в будущем. Однако, переход к миру, где пользователи могут работать на своих компьютерах, не будучи администраторами, является одним из двух крупных смягчающих факторов шестого закона. Второй фактор не слишком нов: системы обязательного управления доступом.

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

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

Седьмой закон: Зашифрованные данные защищены настолько, насколько защищен ключ дешифрования.

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

Шифрование везде, куда не погляди. В Windows шифрование используется для паролей, файлов, просмотра сети и проверки подлинности. Не все шифрование предполагается обратимым, но некоторые из более существенных примеров обратимого шифрования включают шифрованную файловую систему (Encrypting File System – EFS) и кэш учетных данных, используемых для сохраненных паролей и имен пользователей, как показано на рис. 3.

fig03.gif

Рис. 3. Кэш учетных данных в Windows Vista защищен шифрованием (щелкните изображение, чтобы увеличить его)

Как EFS, так и кэш учетных данных защищены ключом шифрования, производимым от пароля пользователя. Это имеет несколько последствий. Во-первых, в случае сброса пароля пользователя (установки нового пароля без сброса старого), все сохраненные в этих местах данные будут утрачены, если не назначен ключ восстановления.

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

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

Однако, в данном случае, личность запрашивающая сертификат отличалась от названной в нем. Другими словами, у злоумышленника теперь имелись ключи подписи на чужое имя. Ключи могли быть безопасны, но, проанализировав оставшуюся часть цепи зависимости, можно обнаружить фатальный недостаток.

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

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

Заключение

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

В сущности, законы продемонстрировали нам впечатляющее предвидение. Единственный, который, пока что, кажется выпадающим из ряда – это номер 4; но и его, как я упомянул ранее, все еще следует считать непреложным.

В следующем месяце я завершу эти серии рассмотрением законов 8, 9 и 10. Также я добавлю комментарии насчет того, где законы могут не охватывать все аспекты безопасности.

Йеспер М. Йоханссон является архитектором программного обеспечения, который работает над программами безопасности, и пишущим редактором журнала TechNet Magazine. Он имеет докторскую степень по информационным системам управления, обладает более чем 20-летним опытом в области безопасности и званием наиболее ценного специалиста (MVP) Майкрософт по безопасности предприятий. Его последняя книга – Windows Server 2008 Security Resource Kit.