Pin control attack

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

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

Впервые данное семейство атак было представлено на конференции Black Hat Europe 2016[1]. Атака управления выводами использует параметры настройки периферийных портов ввода-вывода SoC внутри ПЛК для физического отключения интерфейса связи модулей ввода-вывода от ПЛК. Благодаря воздействию именно на конфигурацию портов, а не на программную логику или работу системы во время выполнения, злоумышленник может обходить классические механизмы обнаружения встраиваемых систем[2].

История

Классические атаки на ПЛК основаны на модификации прошивки устройства, его конфигурационных параметров или нарушении порядка выполнения процессов. Подобные атаки, как правило, приводят к нарушениям нормальной работы ПЛК, и такие изменения могут быть обнаружены системами безопасности, например, IDS, после чего оператор уведомляется о случившемся. В отличие от них, атака управления выводами направлена на динамическую память ПЛК, в которой хранится конфигурация портов ввода-вывода[3][4].

Векторы атаки

Исследователями были описаны как минимум два варианта: атака конфигурации выводов и атака мультиплексирования выводов[5]. Несмотря на различие в реализации, оба вида атак приводят к физическому отключению доступа к портам ввода-вывода без обнаружения программным обеспечением, благодаря отсутствию аппаратных прерываний для мультиплексирования и конфигурирования портов[6].

Атака мультиплексирования выводов

Современные SoC имеют сотни выводов, подключённых к электронным цепям. Часть из них имеет строго определённые назначения: питание, тактирование и т. д. Поскольку разные производители оборудования предъявляют различные требования к портам ввода-вывода, производители SoC проектируют свои изделия так, чтобы отдельный физический вывод поддерживал несколько взаимоисключающих функций в зависимости от сценария использования[7]. Такой механизм переназначения функций выводов называют мультиплексированием, и он является важной характеристикой SoC[8]. Со стороны операционной системы рекомендуется выполнять такие переназначения только при запуске устройства, поскольку аппаратные прерывания для изменений мультиплексирования отсутствуют. Тем не менее, пользователь или программа могут менять настройки мультиплексирования в время выполнения без каких-либо ограничений.

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

Изменение назначения вывода, связанного с портами ввода-вывода в процессе работы, называется атакой мультиплексирования выводов[9].

Атака конфигурации выводов

ПЛК способен принимать и передавать различные электрические сигналы. Такой ввод обычно поступает от датчиков, а вывод — используется для управления двигателями, клапанами, реле и пр. Все эти сигналы связаны с конкретными контактами на интегральной схеме, выполняющей роль системы на кристалле (SoC). Контроллер выводов SoC задаёт режимы работы выводов: вход, выход и другие параметры. Современные исследования показали, что злоумышленник, скомпрометировавший ПЛК, способен незаметно манипулировать портами ввода и вывода, не вызывая тревоги у операторов и не отображая изменения в человеко-машинном интерфейсе (HMI)[10].

Незаметность

Как изменение конфигурации выводов, так и мультиплексирование не порождают аппаратных тревог и прерываний. Поэтому в ходе активной атаки программное обеспечение ПЛК работает с виртуальной картиной портов ввода-вывода, в то время как злоумышленник физически разрывает соединение с реальными устройствами посредством виртуальной памяти. Состояние, при котором значения портов ввода-вывода в памяти ПО не соответствуют физическому состоянию оборудования, называется иллюзией памяти портов ввода-вывода[11].

Примечания

  1. Hacking industrial processes with and undetectable PLC Rootkit (англ.), Security Affairs (18 сентября 2016). Архивировано 22 октября 2016 года. Дата обращения: 24 июня 2024.
  2. Researchers build undetectable rootkit for programmable logic controllers, PCWorld. Архивировано 21 октября 2016 года. Дата обращения: 24 июня 2024.
  3. Researchers Create Undetectable Rootkit That Targets Industrial Equipment (англ.), Bleeping Computer. Архивировано 26 октября 2016 года. Дата обращения: 24 июня 2024.
  4. PLCs Possessed: Researchers Create 'Undetectable' Rootkit, DarkReading. Архивировано 25 октября 2016 года. Дата обращения: 24 июня 2024.
  5. How to compromise PLC systems via stealthy Pin control attacks. Information Security Newspaper (5 ноября 2016). Дата обращения: 24 июня 2024. Архивировано 30 сентября 2017 года.
  6. “Ghost in the PLC Designing an Undetectable Programmable Logic Controller Rootkit via Pin Control Attack” (PDF). Black Hat Europe Briefings 2016. Дата обращения 2024-06-24.
  7. Pin control subsystem in linux Kernel. Kernel.org. Дата обращения: 24 июня 2024. Архивировано 16 февраля 2024 года.
  8. “A method to make soc verification independent of pin multiplexing change”. International Conference on Computer Communication and Informatics (ICCCI). 2013. Дата обращения 2024-06-24. |access-date= требует |url= (справка)
  9. PLCs Vulnerable to Stealthy Pin Control Attacks. SecurityWeek. Дата обращения: 24 июня 2024. Архивировано 25 января 2017 года.
  10. How to compromise PLC systems via stealthy Pin control attacks (англ.) (5 ноября 2016). Архивировано 6 ноября 2016 года. Дата обращения: 24 июня 2024.
  11. “Ghost in the PLC Designing an Undetectable Programmable Logic Controller Rootkit via Pin Control Attack (Presentation)” (PDF). Black Hat Europe Briefings. Дата обращения 2024-06-24.