Computer Crime Research Center

Вадим Проскурин

Программные закладки в защищенных системах

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

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

Приведем один пример атаки защищенной системы программной закладкой. Несколько лет назад служба безопасности одной из фирм, занимающихся посреднической деятельностью, обнаружила, что конфиденциальная информация, передаваемая партнерам по электронной почте, становится известной третьей стороне, несмотря на то, что в системе использовались платы “Криптон-3”, реализующие обеспечивающий гарантированную защиту информации алгоритм шифрования в соответствии с ГОСТ 28147-89.

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

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

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

Почему программные закладки опасны

Любая программа содержит хотя бы одну ошибку

Среди программистов популярны пословицы: “Каждая последняя ошибка в программе на самом деле является предпоследней” и “Если программа работает без ошибок, это -- Hello world (простейшая программа, с которой начинается большинство учебников по языкам программирования)”. Предполагать, что программное обеспечение системы защиты не содержит ошибок, наивно: ошибки, позволяющие злоумышленникам осуществлять НСД к ресурсам системы, время от времени обнаруживаются практически во всех системах защиты. И если такая ошибка в системе присутствует, злоумышленник может использовать ее для внедрения программной закладки.

Известно множество примеров использования злоумышленниками подобных ошибок на практике, в том числе для внедрения программных закладок. Например, в начале 1987 г. западногерманский хакер Маркус Хесс использовал ошибки в подсистеме защиты ОС UNIX для внедрения в сеть Министерства обороны США программной закладки, которая оставалась незамеченной в течение нескольких недель и была выявлена чисто случайно.

Сетевой вирус “Червь Морриса”, написанный в 1988 г. студентом Массачуcетского технологического института Б. Моррисом, парализовал работу около 6,2 тыс. компьютеров американских глобальных сетей (более 7% общего числа компьютеров), причинив материальный ущерб на сумму более 98 млн долл. США. “Червь Морриса” в процессе размножения также использовал ошибки в подсистеме защиты UNIX. К счастью, получая в системе практически неограниченные права доступа, он использовал их только для размножения, но не пытался получать доступ к конфиденциальной информации (поэтому, в принципе, его нельзя назвать программной закладкой). Однако если бы Моррис задался целью осуществлять НСД к ресурсам глобальных сетей с помощью своего вируса, он бы не столкнулся с серьезными проблемами.

Адекватная политика безопасности поддерживается не всегда

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

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

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

  • в BIOS компьютера установлен пароль на загрузку;