Атака DMA — это тип атаки по побочному каналу в компьютерной безопасности , при которой злоумышленник может проникнуть в компьютер или другое устройство, используя наличие высокоскоростных портов расширения, которые разрешают прямой доступ к памяти (DMA).
DMA включен во многие соединения, поскольку позволяет подключенному устройству (например, видеокамере , сетевой карте , устройству хранения данных или другому полезному аксессуару или внутренней ПК-карте ) передавать данные между собой и компьютером с максимально возможной скоростью, используя прямой аппаратный доступ для чтения или записи непосредственно в основную память без какого-либо контроля или взаимодействия со стороны операционной системы . Законное использование таких устройств привело к широкому распространению аксессуаров и соединений DMA, но злоумышленник может в равной степени использовать ту же возможность для создания аксессуара, который будет подключаться через тот же порт, а затем потенциально может получить прямой доступ к части или всем устройствам. адресное пространство физической памяти компьютера, минуя все механизмы безопасности ОС и любой экран блокировки , чтобы читать все, что делает компьютер, красть данные или криптографические ключи , устанавливать или запускать шпионское ПО и другие эксплойты , а также модифицировать систему, чтобы разрешить бэкдоры или другое вредоносное ПО.
Предотвращение физических подключений к таким портам предотвратит атаки DMA. На многих компьютерах соединения, реализующие DMA, также могут быть отключены в BIOS или UEFI , если они не используются, что в зависимости от устройства может свести на нет или уменьшить вероятность использования этого типа эксплойта.
Примеры соединений, которые могут разрешить использование DMA в той или иной форме, включают FireWire , CardBus , ExpressCard , Thunderbolt , USB 4.0 , PCI , PCI-X и PCI Express .
В современных операционных системах несистемным (то есть пользовательским ) приложениям запрещен доступ к любым областям памяти, не разрешенным явным образом контроллером виртуальной памяти (называемым блоком управления памятью (MMU)). Помимо сдерживания ущерба, который может быть вызван ошибками программного обеспечения, и обеспечения более эффективного использования физической памяти, эта архитектура является неотъемлемой частью безопасности операционной системы. Однако драйверы режима ядра, многие аппаратные устройства и уязвимости пользовательского режима обеспечивают прямой и беспрепятственный доступ к адресному пространству физической памяти. Физическое адресное пространство включает в себя всю основную системную память, а также отображаемые в памяти шины и аппаратные устройства (которые управляются операционной системой посредством операций чтения и записи, как если бы они были обычным ОЗУ).
Спецификация OHCI 1394 позволяет устройствам из соображений производительности обходить операционную систему и напрямую обращаться к физической памяти без каких-либо ограничений безопасности. [1] [2] Однако устройства SBP2 можно легко подделать , что позволяет обмануть операционную систему, заставив злоумышленника читать и записывать физическую память и тем самым получить несанкционированный доступ к конфиденциальному криптографическому материалу в памяти. [3]
Системы по-прежнему могут быть уязвимы для атаки DMA со стороны внешнего устройства, если у них есть FireWire , ExpressCard , Thunderbolt или другой порт расширения, который, как PCI и PCI Express в целом, подключает подключенные устройства непосредственно к физическому, а не к виртуальному адресному пространству памяти. Таким образом, системы, не имеющие порта FireWire, все равно могут быть уязвимы, если у них есть порт PCMCIA / CardBus / PC Card или ExpressCard, который позволяет установить карту расширения с FireWire.
Злоумышленник может, например, использовать атаку социальной инженерии и отправить «счастливому победителю» мошенническое устройство Thunderbolt. При подключении к компьютеру устройство благодаря прямому и беспрепятственному доступу к физическому адресному пространству сможет обходить практически все меры безопасности ОС и иметь возможность считывать ключи шифрования, устанавливать вредоносное ПО или управлять другими устройствами системы. . Атаку также можно легко осуществить, если злоумышленник имеет физический доступ к целевому компьютеру.
Помимо вышеупомянутых гнусных применений, есть и некоторые полезные применения, поскольку функции DMA можно использовать для целей отладки ядра . [4]
Для этой атаки существует инструмент под названием Inception [5] , для которого требуется только машина с портом расширения, восприимчивым к этой атаке. Еще одним известным приложением, использующим эту уязвимость для получения несанкционированного доступа к компьютерам под управлением Windows, Mac OS и Linux, является шпионское ПО FinFireWire .
Атаки DMA можно предотвратить с помощью физической защиты от потенциально вредоносных устройств.
Драйверы режима ядра обладают множеством возможностей поставить под угрозу безопасность системы, поэтому необходимо позаботиться о загрузке надежных и безошибочных драйверов. Например, последние 64-разрядные версии Microsoft Windows требуют, чтобы драйверы были протестированы и имели цифровую подпись Microsoft, а также предотвращают установку любых неподписанных драйверов.
IOMMU — это технология , которая применяет концепцию виртуальной памяти к таким системным шинам и может использоваться для закрытия этой уязвимости безопасности (а также для повышения стабильности системы). Intel маркирует свой IOMMU как VT-d. AMD маркирует свой IOMMU как AMD-Vi. Linux и Windows 10 поддерживают эти IOMMU [6] [7] [8] и могут использовать их для блокировки запрещенных транзакций ввода-вывода.
Новые операционные системы могут предпринять шаги для предотвращения атак DMA. Последние ядра Linux включают возможность отключать DMA для устройств FireWire, разрешая при этом другие функции. [9] Windows 8.1 может запретить доступ к портам DMA необслуживаемого компьютера, если консоль заблокирована. [10] Но по состоянию на 2019 год основные поставщики ОС не учли множество способов, с помощью которых вредоносное устройство могло воспользоваться сложным взаимодействием между несколькими эмулируемыми периферийными устройствами, обнаруживая тонкие ошибки и уязвимости. [11]
Никогда не разрешать хранить конфиденциальные данные в незашифрованном виде в оперативной памяти — это еще один способ защиты от атак DMA. Однако защиты от чтения содержимого ОЗУ недостаточно, поскольку запись в ОЗУ через DMA может поставить под угрозу, казалось бы, безопасное хранилище за пределами ОЗУ путем внедрения кода . Примером атаки последнего типа является TRESOR-HUNT, которая раскрывает криптографические ключи, которые никогда не хранятся в оперативной памяти (а только в определенных регистрах ЦП); TRESOR-HUNT достигает этого путем перезаписи частей операционной системы. [12]
Microsoft рекомендует внести изменения в конфигурацию Windows по умолчанию, чтобы предотвратить это, если это вызывает беспокойство. [13]
{{cite journal}}
: Требуется цитировать журнал |journal=
( помощь )