Вы, наверное, слышали, что часто можно получить данные из системы, наблюдая за тем, как светодиоды состояния мигают, но теперь кажется, что этот метод иногда также позволяет получать данные.
История гласит, что в старые добрые времена индикаторные лампы были лампочками накаливания — неэффективными и горячими, но у них была и хорошая сторона. Вы можете подключить их к линии, которая пульсирует, и они светятся ярче при более высоких импульсах. Это обеспечило индикатор активности без особых усилий. Немного пошло не так, когда лампы накаливания были заменены современными светодиодами. Они были подключены таким же образом и светились ярче при более высоких импульсах, но теперь без тепловой инерции, обеспечиваемой нитью накала, вы могли действительно видеть мерцание, вызванное импульсами. Добавьте детектор света, возможно, с помощью телескопа, и вы сможете считывать данные, проходящие по линии. Когда-либо популярные мигалки действительно могли привести к утечке данных.
Здесь нет недостатка в мигалках! Консоль управления IBM 360.
Сделав еще один шаг, вы могли бы заразить машину каким-либо вредоносным ПО, тогда вы могли бы включить светодиоды, которые не были подключены к интересным линиям передачи данных, и открыть скрытый канал для внешнего мира. Конечно, решение было довольно очевидным — клейкая лента поверх неисправных светодиодов может выглядеть не очень хорошо, но она блокирует утечку.
Более сложное решение — установить фильтр нижних частот во все, что управляет светодиодом, сглаживая импульсы до переменного постоянного тока. Я не могу сказать, что когда-либо видел это на практике — даже несколько пенсов за конденсатор, вероятно, больше, чем большинство из них допустит, если умножить их на количество светодиодов.
Теперь у нас есть новое исследование, проведенное Джо Лоури из Lockheed Martin Space Systems и Дэвидом Амфрессом из Обернского университета, которое показывает, как мигающие огни могут стать устройствами ввода. Большое изменение, которое делает это возможным, — это почти универсальное использование линий GPIO (General Purpose IO) для управления светодиодами. Какое-то время можно было включить в микросхему какой-то драйвер, транзистор или драйвер. Это делает конфигурацию жесткой, и программное обеспечение ничего не может сделать с тем фактом, что это устройство вывода. Однако со временем линии GPIO и светодиоды начали двигаться вместе. Линии GPIO могли обеспечивать больший ток, а светодиоды нуждались в меньшем токе, пока не стало возможным просто управлять светодиодом непосредственно от линии GPIO. Можно даже использовать встроенные подтягивающие резисторы в оборудовании GPIO, чтобы избежать использования внешнего резистора, ограничивающего ток. Вы просто подключаете светодиод к линии GPIO.
С этим изменением у вас есть возможность перенастроить то, что было задумано как выход, как вход. Обычные светодиоды оказываются светочувствительными — работают наоборот. Это означает, что вредоносная программа может перепрограммировать линию GPIO и начать считывать световые импульсы, сфокусированные на светодиоде. У нас есть двусторонний скрытый канал, но сначала необходимо заразить машину вредоносным ПО.
Предлагаемый эксперимент
Это может заставить вас чувствовать себя в безопасности — держите вредоносное ПО подальше, и все остается в безопасности, но есть еще один возможный поворот. Было обнаружено, что даже светодиод, подключенный в качестве устройства вывода, можно использовать для управления линией GPIO выше или ниже ее текущего логического уровня, просто направив на нее лазер. Он генерирует напряжение даже в режиме вывода. Это перенапряжение возвращается обратно в машину, и предполагается, что его можно использовать для изменения внутреннего состояния. Эта атака похожа на атаку «молотком по строкам», которая со временем постепенно улучшалась, чтобы позволить изменять определенные биты в памяти путем повторной записи в соседние ячейки памяти. В этом случае эффект будет псевдослучайным, потому что точное время импульса и его взаимодействие с текущим состоянием машины было бы трудно предсказать. Это следующий этап исследования — можем ли мы согласованно изменить то, что делает машина, просто посветив ярким светом на светодиод?
Гарри Фэйрхед является автором Raspberry Pi IoT на языке C.Этот отрывок взят из его новой книги, Fundamental C, где он подробно рассматривает язык C для использования в любой аппаратной среде, близкой к аппаратной. Raspberry Pi IoT на C, Micro: бит IoT на C и Fundamental C: ближе к машине. Его последняя книга — «Применение C для Интернета вещей с Linux».