Представьте, что вы приглашаете гостя на презентацию внутри компании, предлагаете подключить видеопроектор, чтобы он показал свои слайды. Это прекрасная возможность взломать видеопроектор. Способом защиты делимся к старту курса «Белый хакер». HDMI используется для передачи аудио и видео, но предлагает ряд дополнительных функций (HPD, CEC, HEAC, MHL). Это увеличивает поверхность атаки, и, поскольку безопасность реализации этих функций во встроенных устройствах далека от идеала, злоумышленник может внедрить вредоносный код — и ваше ничего не подозревающее видеооборудование будет угрожать безопасности сети. Монитор сможет взломать любое подключённое к нему устройство. Представьте, что вы приглашаете внешнего гостя на презентацию внутри компании, предлагаете подключить видеопроектор, чтобы он показал свои слайды. Это прекрасная возможность взломать видеопроектор. В следующий раз, когда человек подключится к этому проектору, его ноутбук будет взломан. И — вуаля, невинному гостю удалось проникнуть в сеть компании и получить доступ к конфиденциальной информации. Брандмауэр блокирует все дополнительные интерфейсы и разрешает передачу только аудио- и видеоданных. Он основан на исследовании Пьера-Мишеля Рикорделя и Хосе Лопеса Эстевеса из ANSSI/SDE/ST/LSF, представленном на конференции по ИТ-безопасности SSTIC 2021. Некоторые исследования безопасности и уязвимости CEC и EDID вы увидите на слайде 4. Брандмауэр поставляется с общим профилем HD, но может не соответствовать возможностям монитора. Результирующее изображение может искажаться или отсутствовать полностью. Поэтому сначала нужно скопировать информацию расширенных идентификационных данных дисплея (EDID). Эти данные содержат поддерживаемые разрешения. Прочитать их вы можете с помощью интерфейс Display Data Channel (DDC) на основе I²C. Скопируйте эти данные EDID в EEPROM брандмауэра HDMI и сломайте выступ плоскогубцами, чтобы включить защиту от записи, что не позволит внедрить вредоносную полезную нагрузку. Сделать это нужно один раз для каждого монитора. Скопировать EDID можно с помощью программатора брандмауэра HDMI или по инструкции в разделе установка. Подключите брандмауэр к защищаемому монитору, затем подключите кабель, который идёт к ненадёжному устройству на брандмауэре HDMI — это защитит оборудование. Чтобы перезаписать EEPROM брандмауэра на случай, если вы хотите защитить другой монитор, можно повторно отключить защиту от записи, поместив каплю припоя на две площадки с пометкой WP. По умолчанию подаваемые устройством 5 В перенаправляются на монитор. Чтобы уменьшить поверхность атаки, вы можете отключить это перенаправление, перерезав дорожку между двумя контактными площадками с пометкой 5V. Но есть риск: некоторые мониторы полагаются на этот сигнал, чтобы определить, когда устройство подключено. Защита широкополосного цифрового содержимого (HDCP) не поддерживается, поскольку интерфейс DDC ограничен информацией EDID. Несколько брандмауэров HDMI доступны на tindie. Схема в формате pdf и gerber-платы доступны в релизе. В следующей версии должен быть интегрирован программатор брандмауэра и, возможно, исправления, о которых сообщили другие пользователи. Я тестировал только свой простой случай на 6 мониторах. Для защиты монитора брандмауэр HDMI перенаправляет только сигнальные линии передачи аудио/видео (A/V) данных (D0, D1, D2, CK). Все остальные сигнальные линии не подключены (CEC, SDA, SCL, utility/HEAC+, HPD). Это заблокирует все интерфейсы, кроме аудио/видео (например, DDC, HPD, CEC, HEAC, MHL). Линии SDA/SCL для интерфейса DDC для предоставления информации EDID устройству подключены к EEPROM на брандмауэре. Сюда нужно скопировать информацию о мониторе. Это ограничивает интерфейс DDC информацией EDID. Для корректного применения брандмауэра HDMI требуется копия данных EDID. Эти инструкции предназначены для Linux. Для Windows см. инструкции, представленные на слайдах исследования, (не проверены). Установите инструменты чтения/записи устройств I²C: для дистрибутивов на базе Debian Откройте пользователю доступ к I²C (в /dev/i2c-*): Теперь нужно выяснить, какая шина I²C соответствует порту HDMI. Перечислите доступные шины: Вы увидите нечто вроде этого: Шины-кандидаты от 3 до 9, используемые GPU (номер после i2c — в первом столбце). Отключите всё от порта HDMI и выполните поиск устройств на каждой шине I²C (замените BUS номером шины): Ничего не подключено, поэтому не должно быть обнаружено никакое устройство, а вывод должен выглядеть так: Подключите брандмауэр на стороне устройства к порту HDMI и повторите поиск устройств. Если вы видите следующий результат, то вы нашли шину I²C порта HDMI. В противном случае продолжайте до следующей шины. Подключите монитор, с которого вы хотите скопировать EDID, напрямую к порту HDMI. Для дампа EDID воспользуйтесь модулем EEPROM: Отобразите обзор EDID и убедитесь, что название модели соответствует вашему монитору (здесь DELL 2408WFP на шине номер 4): Полный дамп EDID (замените BUS соответствующим номером шины): Подключите порт устройства брандмауэра HDMI к выходу HDMI. Убедитесь, что защита от записи отключена (пластина сломана, на контактные площадки WP добавлен припой).  Запись данных на неправильную шину I²C может привести к необратимому повреждению компьютера или других устройств. Освободите доступ I²C к EEPROM: Запишите извлечённые данные EDID в брандмауэр HDMI (замените BUS на соответствующий номер шины): Сравните исходные данные с данными в EEPROM: После успешной записи EDID в память брандмауэра сломайте пластину плоскогубцами, чтобы защитить память от записи. Это не позволит сохранить вредоносную полезную нагрузку. Теперь вы можете использовать брандмауэр HDMI (только для этого монитора). Не стесняйтесь обклеивать брандмауэр термоусадочной трубкой или изолентой. Это предотвратит короткое замыкание при контакте с соседними металлическими предметами. Если монитор не обнаруживает устройство или ничего не отображает (но должен), попробуйте снова включить прямое питание 5В (по умолчанию), припаяв контактные площадки 5В. В кабеле HDMI есть линия 5В с питанием от устройства. В нашем случае мы используем его для питания памяти брандмауэра HDMI. Переадресацию на монитор можно отключить, перерезав дорожку на контактах 5V. Если устройство не обнаруживает монитор или брандмауэр HDMI, или запись данных EDID в брандмауэр HDMI не удалась, попробуйте подключить брандмауэр другим, качественным кабелем HDMI. xrandr может выполнить дамп информации EDIO: sysfs также предоставляет необработанную информацию EDID (измените путь соответствующим образом): Для доступа к шинам I²C без root: Если вы хотите очистить память брандмауэра для использования с другим монитором: Чтобы разобрать и отобразить полную информацию EDID, вы можете использовать edid-decode. для дистрибутивов на базе Debian для дистрибутивов на основе Arch Чтобы просмотреть дамп EDID: EDID-RW немного упрощает чтение и запись EDID. Установите эти средства: для дистрибутивов на базе Debian для дистрибутивов на основе Arch Чтобы получить данные EDID с подключённого монитора, выполните: Чтобы записать дамп EDID в память брандмауэра HDMI: Чтобы убедиться, что данные записаны правильно, прочтите их: А мы поможем вам прокачать навыки или с самого начала освоить профессию, актуальную в любое время: Профессия «Белый хакер» Профессия Data Scientist Выбрать другую востребованную профессию.