Атака с использованием вредоносных устройств с интерфейсом Thunderbolt
Группа исследователей из Кембриджского университета представила новый вид атак Thunderclap (PDF), позволяющий получить доступ к содержимому всей памяти компьютера при подключении специально модифицированный периферийных устройств с интерфейсом Thunderbolt. Проблема проявляется в Windows, Mac, Linux и FreeBSD. Для демонстрации атаки исследователями подготовлен прототип вредоносного устройства на базе FPGA Arria 10, а также подготовлен эмулятора вредоносной сетевой карты на базе QEMU и необходимая для атаки программная начинка.
В отличие от атак BadUSB, в которых вредоносное USB-устройство эксплуатирует уязвимости в USB-стеке или притворяется USB-клавиатурой или сетевой картой для подстановки данных или перенаправления трафика, атака Thunderclap основана на методе обхода ограничений IOMMU и использовании DMA для выполнении операций в режиме прямого доступа устройства к памяти. При помощи DMA периферийное устройство может выполнить чтение и запись в любую область системной памяти. Для ограничения доступа через DMA обычно в операционных системах и хост-контроллерах обычно применяется IOMMU (Input-Ouptut Memory Management Unit), который должен блокировать возможность совершения подобных атак и ограничивать доступ только к явно определенным областям совместно используемой памяти.
На деле, ограничения IOMMU оказалось легко обойти во всех протестированных операционных системах, путем симулирования подключения сетевого адаптера, для работы c которым операционной системой применяются иные методы взаимодействия в обход IOMMU. Особенности обработки пакетов с сетевой карты не позволяют в полной мере применять IOMMU, так как возникают существенные накладные расходы, заметно снижающие производительность. Более того, операционные обычно размещают различны типы данных в тех же областях памяти, что используются для взаимодействия с периферийными устройствами, что позволяет осуществить атаку даже при применении IOMMU.
Воспользовавшись предложенной техникой злоумышленник, имеющий физический доступ к компьютеру жертвы, воспользовавшись временным отсутствием пользователя может подключить через порт Thunderbolt (в том числе Thunderbolt 3 поверх USB Type-C, Mini DisplayPort и PCI Express) специально подготовленное устройство и получить полный контроль за устройством, в том числе извлечь из памяти конфиденциальные данные, такие как ключи доступа и платежные идентификаторы, или организовать выполнение кода с максимальными привилегиями. Атака также может быть проведена для интеграции скрытой вредоносной функциональности в различное периферийное оборудование, такое как зарядные устройства и проекторы.
В качестве обходного пути защиты от атаки Thunderclap рекомендуется отключить Thunderbolt в настройках BIOS/UEFI или дополнительно использовать USB-хаб без поддержки Thunderbolt, не позволяющий перевести порт USB-C в режим Thunderbolt. Также рекомендуется не оставлять свой ноутбук во включенном состоянии без присмотра и не пользоваться чужими зарядными устройствами с разъемом USB-C. Производители были уведомлены о проблеме еще в 2016 году и для выработки должного решения для блокирования уязвимости потребовалось почти три года.
В Linux исправления, блокирующие проблему, будут предложены в ядре 5.0, выпуск которого запланирован на следующую неделю. Защита реализована через обязательное применение IOMMU для Thunderbolt и блокирование обходных путей работы в обход IOMMU, основанных на использовании режима ATS в PCI Express. Разработчики FreeBSD посчитали проблему не заслуживающей исправления, так как в данной ОС не поддерживается горячее подключение Thunderbolt-устройств. В macOS 10.12.4 добавлена блокировка конкретной атаки на базе сетевой карты, но сама уязвимость остается неисправленной. В Windows поддержка IOMMU для Thunderbolt добавлено в обновлении Windows 10-1803, до этого IOMMU не применялся.
Отмечается также дополнительный вектор проведения атаки через компрометацию прошивок изначально подключенных устройств с интерфейсом PCI Express. Например, после успешного взлома, эксплуатации уязвимостей в прошивках или на этапе доставки/производства в прошивки сетевых карт или BMC-контроллеров может быть интегрирована функциональность для скрытого получения полного доступа к памяти основной системы.