Исследователи разработали атаку NosyNeighbor, которая определяет работу отдельных компонентов критически важных систем по времени выполнения задач. В ходе испытаний метод обходил распространённые защитные механизмы и распознавал активный процесс с точностью около 73%.
NosyNeighbor предназначена для изучения уязвимостей систем реального времени, используемых в авионике, кардиостимуляторах, автомобильных тормозах и другом оборудовании, где задержка даже в несколько миллисекунд может привести к сбою.
Исследование посвящено разделённым системам, в которых разные программные компоненты работают в изолированных секциях, или партициях. Каждая из них отвечает за собственную часть общей задачи и должна завершить её за строго отведённое время.
Такую архитектуру применяют, когда оборудование объединяет модули разных производителей. Например, авиационная платформа может включать отдельные системы управления двигателем, навигации, полёта и бортовых развлечений.
Изоляция не исключает утечки информации. NosyNeighbor не вмешивается напрямую в код соседнего компонента, а наблюдает за косвенными признаками его работы. Атака измеряет задержки и по ним определяет, какая задача выполняется в другой партиции.
Полученные сведения позволяют вредоносному компоненту менять собственное поведение. NosyNeighbor постепенно уточняет модель работы системы и выбирает подходящий момент для следующего действия, поэтому обычное случайное изменение расписания задач не всегда останавливает атаку.
Во время нормальной работы экспериментальной системы метод правильно определял выполняемую задачу примерно в 73% случаев. Авторы считают такой точности достаточно для опасной атаки: злоумышленнику не требуется постоянно контролировать систему, если он сможет один раз отключить нужную функцию в критический момент.
В качестве примера исследователи приводят автомобиль. Вредоносная программа в одном разделе может определить момент запуска тормозного модуля, а затем попытаться нарушить его работу при приближении машины к перекрёстку.
NosyNeighbor создали не для практического взлома оборудования, а для проверки действующих средств защиты. Исследователи намерены использовать найденные закономерности при разработке механизмов, которые скрывают временные признаки выполнения задач и мешают одному компоненту следить за другими.
Работа также показывает, что программная изоляция сама по себе не гарантирует безопасность. Даже без доступа к памяти и коду соседнего модуля злоумышленник может получить важные сведения через время отклика, нагрузку на процессор и другие побочные сигналы.
