2006 г.
О каналах скрытых, потайных, побочных. И не только
В.А. Галатенко (Доктор физико-математических наук)
Информационный бюллетень JET INFO
Оглавление
- О скрытых каналах
- О потайных каналах
- О побочных каналах
- Об агентах — хороших и ... разных
- О потайных ходах и ремонтных агентах
- О потайных ходах и руткитах
- Заключение
- Литература
Jet Info не первый раз обращается к теме скрытых каналов. В 2002 году ей был посвящен отдельный номер (см. [1], [2]), так что в данной работе предполагается, что читатель знаком с основами этой области знания; в противном случается рекомендуется перечесть статью [2] (например, здесь - прим. ред. CITForum.ru). Тем не менее, автор с самого начала хотел бы заметить, что тематика скрытых каналов в ее традиционной трактовке представляется ему несколько надуманной, формальной. Пик исследований в области скрытых каналов приходится на середину 1980-х годов, когда была опубликована "Оранжевая книга" Министерства обороны США, в которой, начиная с класса безопасности B2, было введено требование анализа скрытых каналов. В результате бороться со скрытыми каналами стали, в основном, не ради реальной безопасности, а ради успешной сертификации. Кроме того, скрытые каналы из-за, в общем-то, случайной ассоциации с классами B2 и выше исследовались почти исключительно в контексте многоуровневой политики безопасности, с обязательным упоминанием субъектов HIGH и LOW, моделями невлияния и прочими премудростями. Все это бесконечно далеко от реальных проблем типичных современных информационных систем, да и публикуемые результаты по большей части носят очевидный характер и не представляют ни теоретического, ни, тем более, практического интереса. В статье [2] объяснены концептуальные причины подобного положения дел.
В частности, едва ли целесообразно задаваться вопросом возможности организации скрытых каналов для управления враждебной многоагентной системой (ВМАС). Если ВМАС удалось построить, взломав множество удаленных систем и внедрив в них вредоносное программное обеспечение (ВПО), то, очевидно, для этого нашлись коммуникационные ресурсы подходящей скрытности, более чем достаточные и для последующего управления.
В середине 1980-х годов была предложена систематическая методология выявления скрытых каналов по памяти (см. [3]), ключевым элементом которой является матрица разделяемых ресурсов. В сетевой среде, в Интернет, легальных разделяемых ресурсов сколько угодно — например, выделяемое пользователям пространство на общедоступных сайтах. Можно воспользоваться и полями заголовков IP-пакетов (скажем, контрольная сумма — превосходный кандидат на эту роль), и начальными порядковыми номерами при установке TCP-взаимодействия (см. [4]). Можно организовать и практичные скрытые каналы по времени, например, кодируя единицу отправкой пакета в определенный интервал времени, составляющий миллисекунды (см. [5]).
С появлением мощных многопроцессорных систем с общей памятью полоса пропускания скрытых каналов подскочила до мегабит в секунду и продолжает увеличиваться с ростом быстродействия аппаратуры (см. [6]). Это, конечно, серьезная проблема, однако для ее решения достаточно отказаться от разделения подобных систем между субъектами с различным уровнем допуска.
Проблема скрытых каналов — это проявление более общей проблемы сложности современных информационных систем. В сложных системах скрытые каналы были, есть и будут, так что бороться нужно с причиной, а не со следствием. В самом общем виде метод борьбы со сложностью систем можно сформулировать как "проведение объектного подхода с физическими границами между объектами". Процессоры не должны разделяться не только между субъектами, но и между потоками управления. Пользовательская сеть должна быть физически отделена от административной. Вообще говоря, компоненты системы не должны доверять друг другу: процессор может не доверять памяти, сетевая карта — процессору и т.п. При выявлении подозрительной активности компоненты должны поднимать тревогу и применять другие защитные меры (например, дисковый контроллер может зашифровать файлы, сетевой контроллер — блокировать коммуникации и т.п.). В общем, на войне как на войне. Если организовать физические границы невозможно, следует воспользоваться виртуальными, формируемыми в первую очередь криптографическими средствами. Более подробное изложение этих вопросов можно найти в работе [7].
Скрытые каналы можно не только выявлять, но и ликвидировать или зашумлять "не глядя". Как пояснено в [2], для этого служат разного рода нормализаторы, сглаживающие нагрузку на процессор, энергопотребление, время вычисления определенных функций, сетевой трафик и т.п. Например, ядро операционной системы Asbestos [8] в ответ на запрос о создании порта возвращает новый порт с непредсказуемым именем, поскольку возможность создания портов с заданными именами может служить скрытым каналом.
Накладные расходы на нормализацию могут быть велики, отчего функционирование легальных субъектов может существенно замедляться, так что следует искать и находить разумный компромисс между информационной безопасностью и функциональной полезностью систем. С точки зрения борьбы со сложностью скрытые каналы имеют следующее неприятное свойство. Разделяемые ресурсы, присутствующие на любом уровне информационной системы, начиная с самого нижнего, аппаратного, могут быть использованы на всех вышележащих уровнях, вплоть до прикладного, для организации утечки информации. Централизованный арбитр доступа к памяти в многопроцессорной системе, разделяемый несколькими процессорами кэш второго уровня, устройство управления памятью — все это может служить каналом утечки. Таким образом, при анализе скрытых каналов необходимо рассматривать систему в целом. Попытка проведения так называемой составной сертификации, когда система оценивается на основе ранее проведенных испытаний отдельных модулей или уровней, ведет к пропуску скрытых каналов. Проблема усугубляется тем, что в описании отдельных модулей или уровней необходимые детали могут быть опущены как несущественные. Казалось бы, какая разница, как устроена очередь инструкций, выбранных микропроцессором для исполнения? Однако и это может быть важно для безопасной работы приложения (см. [6]). Операционная система, успешно прошедшая сертификацию при испытаниях на "голой" аппаратуре, содержит скрытые каналы заметной пропускной способности, если выполняется под управлением монитора виртуальных машин. В общем, разделяемый ресурс — это та самая горошина, которую настоящая принцесса почувствует через любое количество перин. И об этом необходимо помнить.
Подход на основе скрытых каналов активно используется для оценки степени несовершенства реализации таких защитных сервисов, как анонимизаторы и их сети, а также пополнение трафика. Это представляется естественным, так как анонимизация и пополнение трафика — разновидности нормализации, предназначенной для ликвидации скрытых каналов. Если нормализация оказалась несовершенной, значит, скрытые каналы остались. Насколько несовершенной? Настолько, насколько велика утечка информации. Несовершенство анонимизаторов можно оценивать как пропускную способность скрытых каналов утечки информации об отправителе и/или получателе (см. [9]). Для отдельных анонимизаторов удается получить точное значение, для сетей анонимизаторов — оценку сверху.
Согласно текущим тенденциям, все большая часть Интернет-трафика шифруется (см. [10]). Шифрование защищает содержимое и заголовки пакетов, дополнение пакетов препятствует получению информации путем анализа их размеров. Однако криптография сама по себе не защищает от анализа поведения пакетов, то есть их распределения во времени, в результате чего может пострадать приватность пользователей. Кроме того, временной анализ SSH-трафика существенно упрощает несанкционированный доступ к пользовательским паролям. Пополнение трафика на канальном уровне — эффективная защитная мера против подобного анализа. Поток данных в канале приобретает заранее заданный характер. Некоторые пакеты задерживаются, а в канал, когда нужно, отправляются фиктивные данные. Это в принципе. На практике же весьма непросто реализовать пополнение так, чтобы наблюдаемый трафик в точности следовал заранее заданному распределению, так что у злоумышленника остается возможность скоррелировать пополненный полезный трафик. Несовершенство реализации пополнения можно оценить как пропускную способность скрытого канала, основанного на варьировании межпакетных интервалов. Оказывается, что в идеальных условиях этот скрытый канал допускает практическое использование. К счастью, в реальной загруженной сети с множеством потоков данных высокий уровень шума в канале затрудняет действия злоумышленника.
Применение аппарата скрытых каналов для оценки степени несовершенства архитектуры и/или реализации сервисов безопасности представляется весьма перспективным направлением исследований.
Красивое применение методов передачи данных, характерных для скрытых каналов по времени, в беспроводных сенсорных сетях удалось найти авторам работы [11]. Одна из главных проблем сенсорных сетей — снижение энергопотребления. Если двоичные значения передаются по беспроводной сети обычным образом, то можно считать, что на это тратится энергия, пропорциональная их логарифму. Однако значения можно передавать и молчанием: послать стартовый бит, заставляющий получателя включить счетчик, выждать время, соответствующее значению, и послать стоп-бит. В результате экономится энергия, но тратится время (пропорциональное значению), однако передачу можно оптимизировать — молчание отлично мультиплексируется, каскадируется и быстро переадресуется.
Конечно, описанный метод передачи данных относится к разряду забавных диковинок. В целом, в настоящее время скрытые каналы являются почти исключительно академически-сертификационной областью. В этом контексте интересна работа [12], в которой исследуется проблема полноты анализа скрытых каналов. Вводится понятие полного набора скрытых каналов, элементы которого в совокупности порождают максимально возможную скрытую утечку информации (аналогом полного набора может служить базис в векторном пространстве). По мере выявления скрытых каналов их совокупность можно проверять на полноту (с помощью сформулированных в [12] критериев) и получать в результате оценку потенциально возможной утечки информации. Еще один очень важный аспект работы [12] — описание архитектурного подхода к построению систем, облегчающего анализ скрытых каналов. Выявлять по одному скрытые каналы в произвольной информационной системе — задача бесперспективная; целесообразно строить системы неким регулярным образом и затем подвергать их систематическому анализу с учетом их специфики.
На практике ни злоумышленники, ни производители средств информационной безопасности не уделяют скрытым каналам сколько-нибудь заметного внимания. Причина в том, что в современных информационных системах более чем достаточно "грубых" уязвимостей, допускающих несложное использование, поэтому и атакующие, и защищающиеся предпочитают пути наименьшего сопротивления, что вполне естественно. Первые эксплуатируют очевидные "дыры", вторые пытаются их прикрыть.
Потребителям тоже не до скрытых каналов — им бы от червей и вирусов врукопашную отбиться, да найти деньги на прошлогодний снег в упаковке с надписью "системы предотвращения вторжений с известными сигнатурами". И еще терпеливо выслушать поучения производителей дырявого ПО за отсутствие дисциплины управления многочисленными корректирующими заплатами для этого самого ПО.
По поводу уязвимостей есть две новости, и обе хорошие. Первая — проблем с безопасностью базового ПО становится меньше, поэтому злоумышленники более активно эксплуатируют уязвимости приложений. Новость вторая — приложений много. А ведь есть еще фишинг и другие методы морально-психологического воздействия... Поэтому время скрытых каналов, если и придет, то не очень скоро.
Чтобы осознать, сколь скромное место занимают скрытые каналы среди других проблем информационной безопасности, даже если ограничиться только дефектами программного обеспечения, целесообразно рассмотреть классификацию подобных дефектов, предложенную в статье [13] в контексте разработки средств статического анализа исходных текстов с целью выявления ошибок, чреватых возникновением уязвимостей.
Дефекты в ПО могут быть внесены намеренно или по небрежности. Первые подразделяются на злоумышленные и незлоумышленные. Злоумышленные дефекты — это лазейки, логические и временные бомбы; незлоумышленные — скрытые каналы (по памяти или по времени) и несогласованные пути доступа.
Дефекты, внесенные непреднамеренно, делятся на:
- ошибки проверки правильности данных (ошибки адресации, в том числе переполнение буферов, некачественные проверки значений параметров, неверное размещение проверок, неадекватная идентификация/аутентификация);
- ошибки абстракции (повторное использование объектов, раскрытие внутреннего представления);
- асинхронные дефекты (проблемы параллельного выполнения, включая ситуации опережения, активные и пассивные тупики, разрывы между временами проверки и использования, а также наличие нескольких ссылок на один объект);
- ненадлежащее использование подкомпонентов (утечка ресурсов, непонимание распределения ответственности);
- ошибки функциональности (дефекты обработки исключительных ситуаций, прочие дефекты безопасности).
Чтобы понять, как дефекты безопасности могут быть внесены в программное обеспечение намеренно, но не злоумышленно, рассмотрим скрытый канал, образующийся в дисковом контроллере при оптимизации обслуживания запросов по алгоритму лифта (обращения к диску обрабатываются не в порядке поступления, а по мере того, как штанга с головками достигает запрошенных блоков, см. статью [14], в которой представлен систематический подход к выявлению скрытых каналов по времени). Злоумышленный отправитель информации может влиять на порядок и, следовательно, время обработки обращений, контролируя направление перемещения штанги с головками путем выдачи собственных запросов к диску в определенном порядке. Здесь в роли разделяемого ресурса, допускающего (злоумышленное) целенаправленное воздействие, выступает общая очередь запросов к дисковым блокам, а также текущая позиция и направление движения штанги. Данный дефект естественно считать внесенным преднамеренно, но не злоумышленно, поскольку скрытый канал образовался не из-за ошибки реализации, а вследствие принятого проектного решения, направленного на оптимизацию функционирования системы.
Самую большую и практически важную группу дефектов, внесенных по небрежности, составляют ошибки проверки правильности данных, точнее, недостаточный контроль входных данных перед их использованием. Разработка методов недопущения или выявления подобных ошибок — задача первостепенной практической важности. А скрытые каналы могут подождать...
Оглавление Вперёд