Введение

Метод обхода аутентификации или шифрования в компьютере.
Бэкдор – это, как правило, скрытый метод обхода обычной аутентификации или шифрования в компьютере, продукте, встроенном устройстве (например, домашнем маршрутизаторе) или его реализации (например, часть криптосистемы, алгоритма, чипсета или даже «компьютера-гомункулуса» – крошечного компьютера внутри компьютера, такого как технология Intel AMT). Бэкдоры чаще всего используются для обеспечения удаленного доступа к компьютеру или получения доступа к незашифрованным данным в криптосистемах. Затем они могут быть использованы для получения доступа к конфиденциальной информации, такой как пароли, повреждения или удаления данных на жестких дисках, или передачи информации в сетях. Бэкдор может быть представлен в виде скрытой части программы, отдельной программы (например, Back Orifice может скомпрометировать систему через руткит), кода в прошивке оборудования или компонентов операционной системы, таких как Windows. Троянские программы могут использоваться для создания уязвимостей в устройстве. Троянская программа может выглядеть как вполне легитимная программа, но при запуске она активирует действия, которые могут установить бэкдор. Хотя некоторые из них устанавливаются тайно, другие создаются намеренно и широко известны. Такие бэкдоры имеют «законное» применение, например, предоставляют производителю возможность восстановить пароли пользователей. Многие системы, хранящие информацию в облаке, не создают надежных мер безопасности. Если множество систем подключены к облаку, хакеры могут получить доступ ко всем остальным платформам через наиболее уязвимую систему. Пароли по умолчанию (или другие стандартные учетные данные) могут функционировать как бэкдоры, если пользователь их не изменит. Некоторые функции отладки также могут действовать как бэкдоры, если они не удалены в релизной версии. В 1993 году правительство США попыталось внедрить систему шифрования, чип Clipper, с явным бэкдором для доступа правоохранительных органов и национальной безопасности. Чип не получил распространения. Недавние предложения по противодействию бэкдорам включают создание базы данных триггеров бэкдоров и последующее использование нейронных сетей для их обнаружения.

Обзор

Угроза бэкдоров возникла с широким распространением многопользовательских и сетевых операционных систем. Петерсен и Терн обсуждали вопросы компьютерного саботажа в статье, опубликованной в материалах конференции AFIPS 1967 года. Они отметили класс активных атак проникновения, использующих "лазейки" – точки скрытого входа в систему, позволяющие обходить средства защиты и получать прямой доступ к данным. Использование термина "лазейка" здесь явно соответствует более поздним определениям бэкдора. Однако, с появлением криптографии с открытым ключом, термин "лазейка" приобрел иное значение (см. функцию ловушки), и поэтому термин "бэкдор" стал предпочтительным, после того как термин "лазейка" вышел из употребления. Более общие нарушения безопасности подробно рассматривались в отчете рабочей группы RAND Corporation, опубликованном при поддержке DARPA Дж. П. Андерсоном и Д. Дж. Эдвардсом в 1970 году. Изначально атаки были ориентированы на область компьютерного зрения, но впоследствии распространились на другие области, включая текст, аудио, автоматизированное проектирование на основе машинного обучения и классификацию беспроводных сигналов на основе машинного обучения. Кроме того, уязвимости в бэкдорах были продемонстрированы в глубоких генеративных моделях, обучении с подкреплением (например, AI GO) и глубоких графовых моделях. Эти широкие потенциальные риски вызвали обеспокоенность у органов национальной безопасности в связи с их потенциально катастрофическими последствиями. Бэкдор в системе входа может представлять собой жестко заданную комбинацию имени пользователя и пароля, обеспечивающую доступ к системе. Пример подобного бэкдора был использован в качестве сюжетного элемента в фильме 1983 года "WarGames", где создатель компьютерной системы "WOPR" внедрил учетную запись без пароля, предоставляющую пользователю доступ к системе и к её незадокументированным частям (в частности, к игровому режиму моделирования и прямому взаимодействию с искусственным интеллектом). Хотя количество бэкдоров в системах, использующих проприетарное программное обеспечение (программное обеспечение, исходный код которого не является общедоступным), не признается повсеместно, они тем не менее часто обнаруживаются. Программистам даже удавалось тайно внедрять большие объемы безобидного кода в виде "пасхальных яиц" в программы, хотя в таких случаях может потребоваться официальное попустительство, если не прямое разрешение.

Политика и атрибуция

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

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

Черви

Многие компьютерные черви, такие как Sobig и Mydoom, устанавливают бэкдор на зараженный компьютер (обычно ПК, работающий в широкополосной сети под управлением Microsoft Windows и Microsoft Outlook). Подобные бэкдоры, по всей видимости, устанавливаются для того, чтобы спамеры могли рассылать нежелательную электронную почту с зараженных машин. Другие, например, rootkit Sony/BMG, тайно распространявшийся на миллионах музыкальных CD до конца 2005 года, предназначался для реализации мер DRM и, в этом случае, для сбора данных, поскольку обе скрытые программы, которые он устанавливал, регулярно связывались с центральными серверами. В ноябре 2003 года была предпринята сложная попытка внедрить бэкдор в ядро Linux, путем внесения небольшого и незаметного изменения в код, подменив систему контроля версий. В данном случае, изменение состояло из двух строк, которые, казалось бы, проверяли права доступа root для вызывающего функцию sys_wait4, но из-за использования оператора присваивания `=` вместо проверки на равенство `==`, фактически предоставляли системе соответствующие права. Эта ошибка легко может быть упущена из виду и даже истолкована как случайная опечатка, а не преднамеренная атака. В январе 2014 года бэкдор был обнаружен в некоторых продуктах Samsung на базе Android, таких как устройства Galaxy. В проприетарных версиях Android от Samsung присутствует бэкдор, обеспечивающий удаленный доступ к данным, хранящимся на устройстве. В частности, программное обеспечение Samsung Android, отвечающее за обработку коммуникаций с модемом посредством протокола Samsung IPC, реализует класс запросов, известных как команды удаленного файлового сервера (RFS), позволяющие оператору бэкдора выполнять удаленные операции ввода-вывода на жестком диске или другом хранилище устройства через модем. Поскольку на модеме работает проприетарное программное обеспечение Samsung Android, вероятно, он предоставляет возможность дистанционного управления, которое затем может быть использовано для отправки команд RFS и, следовательно, для доступа к файловой системе устройства.

Задние двери с кодом объекта

Сложно обнаруживаемые бэкдоры подразумевают модификацию объектного кода, а не исходного. Объектный код гораздо сложнее анализировать, поскольку он предназначен для машинного чтения, а не для восприятия человеком. Эти бэкдоры могут быть внедрены либо непосредственно в объектный код на диске, либо на каком-либо этапе компиляции, сборки, линковки или загрузки — в последнем случае бэкдор никогда не появляется на диске, а существует только в памяти. Бэкдоры объектного кода трудно обнаружить при непосредственном анализе объектного кода, но их легко выявить, проверяя изменения (различия), особенно в длине или контрольной сумме, а в некоторых случаях — путем дизассемблирования объектного кода. Кроме того, бэкдоры объектного кода можно удалить (при наличии исходного кода), просто перекомпилировав программу из исходного кода на доверенной системе. Следовательно, чтобы избежать обнаружения, необходимо скомпрометировать все существующие копии бинарного файла, а также все контрольные суммы, используемые для проверки целостности, и сделать исходный код недоступным, чтобы предотвратить перекомпиляцию. В качестве альтернативы, сами инструменты (проверки длины, diff, вычисление контрольных сумм, дизассемблеры) могут быть скомпрометированы для сокрытия бэкдора, например, обнаруживая, что скомпрометированный бинарный файл проверяется контрольной суммой, и возвращая ожидаемое значение, а не фактическое. Чтобы скрыть эти дополнительные компрометации, инструменты также должны скрывать изменения в себе — например, скомпрометированный вычислитель контрольной суммы должен также обнаруживать, что он вычисляет контрольную сумму самого себя (или других скомпрометированных инструментов) и возвращать ложные значения. Это требует внесения масштабных изменений в систему и инструменты для сокрытия единичного изменения. Поскольку объектный код можно воссоздать, перекомпилировав (пересобрав, перелинковав) исходный код, создание устойчивого бэкдора объектного кода (без изменения исходного кода) требует компрометации самого компилятора — чтобы при компиляции целевой программы он внедрял бэкдор, — или, альтернативно, ассемблера, линкера или загрузчика. Поскольку это требует компрометации компилятора, эту проблему можно решить, перекомпилировав сам компилятор, удалив код внедрения бэкдора. Однако эту защиту можно обойти, внедрив в компилятор мета-бэкдор, который при компиляции самого себя внедрит генератор этого мета-бэкдора вместе с исходным генератором бэкдора для целевой программы. После этого мета-бэкдор можно удалить, а компилятор перекомпилировать из исходного кода с использованием скомпрометированного исполняемого файла компилятора — бэкдор будет "загружен". Эта атака была описана в статье Каргера и Шелла 1974 года и популяризирована статьей Томпсона 1984 года под названием «Размышления о доверии доверия» (Reflections on Trusting Trust); поэтому в разговорной речи она известна как атака «Доверие доверия». Подробности см. в разделе «Бэкдоры компилятора» ниже. Аналогичные атаки могут быть направлены на более низкие уровни системы, такие как операционная система, и могут быть внедрены в процессе загрузки системы; Каргер и Шелл упоминали об этом еще в 1974 году, и сейчас это проявляется в виде вирусов загрузочного сектора.

Асимметричные задние двери

Традиционная бэкдор – это симметричная бэкдор: любой, кто обнаружит бэкдор, может использовать её. Понятие асимметричной бэкдора было введено Адамом Янгом и Моти Юнгом в трудах конференции "Advances in Cryptology" – Crypto '96. Асимметричная бэкдор может быть использована только злоумышленником, который её внедрил, даже если полная реализация бэкдора станет общедоступной (например, в результате публикации, обнаружения и раскрытия посредством обратной разработки и т.п.). Кроме того, вычислительно неразрешимо обнаружить наличие асимметричной бэкдора при запросах в "чёрном ящике". Этот класс атак получил название клептография; их можно реализовать в программном обеспечении, аппаратном обеспечении (например, в смарт-картах) или их комбинации. Теория асимметричных бэкдоров является частью более широкой области, известной как криптовирусология. В частности, АНБ внедрило клептографическую бэкдор в стандарт Dual EC DRBG. Существует экспериментальная асимметричная бэкдор в генерации ключей RSA. Эта бэкдор OpenSSL RSA, разработанная Янгом и Юнгом, использует скрученную пару эллиптических кривых и была опубликована.

Задние двери компилятора

Сложная форма бэкдора типа "черный ящик" – это бэкдор компилятора, при котором подрывается не только компилятор для внедрения бэкдора в другую программу, например, программу входа в систему, но он также модифицируется для обнаружения момента самокомпиляции, после чего вставляет как код внедрения бэкдора (нацеленный на другую программу), так и код, изменяющий процесс самокомпиляции, подобно механизму, используемому ретровирусами для заражения хозяина. Это достигается путем модификации исходного кода, и в результате скомпрометированный компилятор (объектный код) может компилировать исходный (неизмененный) код и внедрять себя: эксплойт был успешно запущен. Эта атака была впервые представлена в работе Karger & Schell (1974), представлявшей собой анализ безопасности системы Multics, выполненный ВВС США, где описывалась подобная атака на компилятор PL/I, названная "компиляторной лазейкой". Авторы также упоминали вариант, при котором код инициализации системы модифицируется для внедрения бэкдора во время загрузки, поскольку это сложный и недостаточно изученный процесс, и называли его "лазейкой инициализации"; сейчас это известно как вирус загрузочного сектора. Эта атака была фактически реализована Кеном Томпсоном и популяризирована в его речи при вручении премии Тьюринга в 1983 году "Размышления о доверии", в которой он подчеркнул относительность доверия и указал, что доверять можно только тому коду, каждый этап загрузки которого был проверен. Этот механизм бэкдора основан на том, что люди проверяют только исходный (написанный человеком) код, а не скомпилированный машинный код (объектный код). Программа, называемая компилятором, используется для создания последнего из первого, и компилятору обычно доверяют выполнение своей работы честно. В статье Томпсона описывается модифицированная версия компилятора Unix C, которая внедряла бы невидимый бэкдор в команду входа в Unix при обнаружении компиляции этой программы, а также незаметно добавляла бы эту функцию в будущие версии компилятора при их компиляции. Поскольку сам компилятор был скомпилированной программой, пользователи вряд ли заметили бы инструкции машинного кода, выполняющие эти задачи. (Благодаря второй задаче исходный код компилятора выглядел бы "чистым"). Более того, в демонстрации концепции Томпсона, скомпрометированный компилятор также скомпрометировал программу анализа (дизассемблер), так что любой, кто исследовал бинарные файлы обычным способом, не увидел бы реальный выполняемый код, а что-то другое. Karger и Schell представили обновленный анализ первоначального эксплойта в 2002 году, а в 2009 году Wheeler опубликовал исторический обзор и анализ литературы. В 2023 году Cox опубликовал аннотированную версию исходного кода бэкдора Томпсона.

События

Версия Томпсона никогда официально не была выпущена в открытый доступ. Однако считается, что одна из версий была распространена в BBN, и зафиксировано как минимум одно использование бэкдора. В последующие годы появлялись отдельные сообщения о подобных бэкдорах. В августе 2009 года лабораториями Sophos была обнаружена атака подобного рода. Вирус W32/Induc A заразил компилятор программы Delphi, языка программирования для Windows. Вирус внедрял свой код в процесс компиляции новых программ Delphi, что позволяло ему заражать и распространяться на множество систем, оставаясь незамеченным для программиста. Вирус ищет установку Delphi, изменяет файл SysConst.pas – исходный код части стандартной библиотеки – и компилирует его. После этого любая программа, скомпилированная этой установкой Delphi, будет содержать вирус. Атаку, распространяющуюся путем создания собственного трояна, особенно сложно обнаружить. В результате многие разработчики программного обеспечения выпускали зараженные исполняемые файлы, не подозревая об этом, а иногда и ошибочно сообщали о ложных срабатываниях. На самом деле, был скомпрометирован не исполняемый файл, а компилятор. Считается, что вирус Induc A распространялся не менее года до момента обнаружения. В 2015 году вредоносная копия Xcode, известная как XcodeGhost, также совершила аналогичную атаку и заразила iOS-приложения десятков китайских компаний-разработчиков. В глобальном масштабе было обнаружено 4000 затронутых приложений. Это не был полноценный троянский вирус Томпсона, поскольку он не заражал сами инструменты разработки, но он продемонстрировал, что отравление цепочки инструментов может привести к значительным последствиям.

Контрмеры

После того, как система была скомпрометирована с помощью бэкдора или троянской программы, например, компилятора Trusting Trust, "законному" пользователю очень сложно вернуть контроль над системой – как правило, необходимо пересобрать чистую систему и перенести данные (но не исполняемые файлы). Однако было предложено несколько практических уязвимостей схемы Trusting Trust. Например, достаточно мотивированный пользователь может кропотливо изучить машинный код ненадежного компилятора перед его использованием. Как упоминалось выше, существуют способы скрыть троянскую программу, например, путем компрометации дизассемблера; но есть способы противодействовать этой защите, например, написание дизассемблера с нуля. Общий метод противодействия атакам, основанным на доверии к доверенному компилятору, называется двойной компиляцией с использованием разных компиляторов. Этот метод требует использования другого компилятора и исходного кода компилятора, подвергаемого проверке. Исходный код, скомпилированный обоими компиляторами, дает два различных компилятора первого уровня, которые, однако, должны иметь одинаковое поведение. Таким образом, один и тот же исходный код, скомпилированный обоими компиляторами первого уровня, должен затем привести к двум идентичным компиляторам второго уровня. Предоставлено формальное доказательство того, что это сравнение гарантирует соответствие предполагаемого исходного кода и исполняемого файла проверяемого компилятора при определенных допущениях. Автор этого метода применил его для проверки того, что C-компилятор пакета GCC (версия 3.0.4) не содержит троянской программы, используя icc (версия 11.0) в качестве альтернативного компилятора. На практике такие проверки не выполняются конечными пользователями, за исключением крайних случаев обнаружения и анализа вторжений, из-за редкости подобных сложных атак и того, что программы обычно распространяются в бинарном виде. Удаление бэкдоров (включая бэкдоры компиляторов) обычно выполняется путем простой переустановки чистой системы. Однако сложные проверки представляют интерес для поставщиков операционных систем, чтобы убедиться, что они не распространяют скомпрометированную систему, а также в средах с высокими требованиями к безопасности, где подобные атаки представляют реальную угрозу.

Список известных бэкдоров

Back Orifice был создан в 1998 году хакерами из группы Cult of the Dead Cow как инструмент удаленного администрирования. Он позволял удаленно управлять компьютерами под управлением Windows через сеть и пародировал название Microsoft BackOffice. В 2013 году было установлено, что в криптографически защищенном генераторе псевдослучайных чисел Dual EC DRBG, возможно, присутствует клептографическая лазейка, преднамеренно внедренная АНБ, которое также обладало приватным ключом к этой лазейке. В марте 2014 года в нелицензионных копиях плагинов WordPress было обнаружено несколько бэкдоров. Они были внедрены в виде обфусцированного кода JavaScript и незаметно создавали, например, учетную запись администратора в базе данных веб-сайта. Позже аналогичная схема была выявлена в плагине Joomla. В версиях Borland Interbase 4.0–6.0 была встроена лазейка, добавленная разработчиками. Код сервера содержит скомпилированную учетную запись для лазейки (имя пользователя: politically, пароль: correct), к которой можно получить доступ через сетевое соединение; пользователь, вошедший в систему с этой учетной записью, мог получить полный контроль над всеми базами данных Interbase. Лазейка была обнаружена в 2001 году и для неё был выпущен патч. В 2008 году Juniper Networks внедрила бэкдор в версии прошивки ScreenOS от 6.2.0r15 до 6.2.0r18 и от 6.3.0r12 до 6.3.0r20, предоставляющий любому пользователю административный доступ при использовании специального мастер-пароля. В устройствах C DATA Optical Line Termination (OLT) было обнаружено несколько лазеек. Исследователи опубликовали результаты, не уведомляя C DATA, поскольку полагают, что лазейки были намеренно внедрены поставщиком. В марте 2024 года разработчик программного обеспечения Андрес Фройнд обнаружил лазейку в версиях 5.6.0 и 5.6.1 популярной утилиты Linux XZ Utils. Лазейка предоставляет атакующему, обладающему определенным приватным ключом Ed448, возможность удаленного выполнения кода на затронутых системах Linux. Проблеме был присвоен рейтинг CVSS 10.0, что является максимально возможным значением.