В области информационной безопасности редко приходится говорить об абсолютных понятиях, но в отношении уязвимости BadUSB, о которой впервые заговорили на конференции Black Hat в этом году, постоянно звучали словосочетания «невозможно обнаружить» или «полностью компрометированы» — это очень плохие новости для владельцев устройств с интерфейсом USB.

На выходных напряжение возросло, так как два независимых исследователя опубликовали код, во многом схожий с тем, что был продемонстрирован минувшим летом сотрудниками германской компании SR Labs Карстеном Нолем (Karsten Nohl) и Якобом Леллем (Jakob Lell).

Брендон Уилсон (Brandon Wilson) и Адам Кодилл (Adam Caudill) выложили код атаки в репозитории Github в свободном доступе, что наталкивает на мысль, что пора бы озаботиться безопасностью прошивки USB.

«USB-устройства полностью скомпрометированы, — заявил Уилсон. — Опасаться следует любого устройства, которое вы подключаете к компьютеру по USB, даже обычной флешки».

Демонстрации BadUSB, проведенные Нолем и Леллем на Black Hat, показали, как вредоносный код мог перепрограммировать прошивку USB, изменяя класс устройства на программном уровне, и по сути превращать USB-устройство во что угодно. Флешка, подключенная к ПК, станет, к примеру, эмулировать действия клавиатуры и использоваться для ввода команд, которые помогут похитить данные с компьютера, задавать сетевому интерфейсу ложный IP-адрес и перенаправить трафик, изменив настройки DNS-сервера, или же выгружать вредоносное ПО со скрытого логического диска.

Проблема состоит в том, что Ноль и Лелль, как и Кодилл с Уилсоном, не преследовали цель найти эксплойт к уязвимостям в USB. Они просто воспользовались «врожденными» слабыми местами в привычных нам USB-интерфейсах.

«Мы просто использовали свойства USB-протокола, — сказал Уилсон. — Накопитель — это как бы перепрограммируемый компьютер, с помощью которого можно делать что угодно. Протокол позволяет USB-устройству быть устройством любого класса, но большинство разработчиков и по сию пору жестко программируют контроллер, чтобы USB-устройство благодаря драйверам классов определялось хостом как устройство с определенными функциями. Благодаря своей прошивке накопитель данных «ведет себя» как накопитель данных».

Кодилл и Уилсон представили свой код на конвенте Derby Con в Кентукки в прошлые выходные, а затем опубликовали его. Симулированная ими атака, предпринятая на USB-накопитель производства тайваньской компании Phison Electronics Corp., была похожа на ту, что проводил Ноль. По словам Уилсона, он даже не видел ролик с аналогичной атакой, осуществленной в качестве демонстрации на Black Hat. Он также признался, что они с Кодиллом знали, что такой эксплойт вполне жизнеспособен, и исследование Ноля подстегнуло их энтузиазм.

После Black Hat Уилсон признался, что они купили кучу разных устройств для тестирования и, используя доступные инструменты для обновления прошивки, смогли с помощью своего кода перепрограммировать диск Phison. На Derby Con эксперты воспроизвели атаку, в ходе которой USB-накопитель работал как клавиатура и смог ввести определенный скрипт, как только подключился к хосту. В ходе другой демонстрации специалисты создали скрытый раздел на флеш-накопителе, который не был распознан компьютером.

«Пока процесс активен, обнаружить его невозможно, — заявил Уилсон. — У компьютера нет возможности «увидеть» разницу между подключаемыми устройствами, так как для опознавания он использует драйвера классов. Определение класса устройства хостом происходит через USB и сопоставление драйвера с прошивкой на подключаемом устройстве. Способность контролировать код, которую мы продемонстрировали, подтверждает, что хост не должен доверять ничему, что «сообщает» ему USB-устройство».

Хотя успех данного типа атаки зиждется на доверии пользователей к такому расхожему интерфейсу, как USB, и их готовности без раздумий подключить что угодно к USB-порту, найти техническое решение возникшей проблемы еще труднее.

«То, что мы смогли так легко сменить прошивку устройства, легко поправимо. Производители могли бы использовать для защиты цифровую подпись, но пока никто этого не делает, — сокрушается Уилсон. — Но надо изменить положение дел. Даже если снабдить прошивку цифровой подписью, компьютер все равно не сможет «доверять» устройству, которое подключено через USB-порт. Чтобы полностью решить проблему, ее надо решить на стороне хоста».

По словам Уилсона, их с Кодиллом пока не упрекали за обнародование данного открытия. Хотя Ноль пообещал на Black Hat, что он не опубликует написанный код, Уилсон и Кодилл решили это сделать, и их цель, как они заявляют, — мотивировать производителей заняться проблемой.

«Если у вас есть образ прошивки, его необходимо защитить. Для этого нужны контрольная сумма или какой-либо другой способ валидировать процесс опознавания и подтвердить его корректность, — сказал Уилсон. — Сейчас ничего этого нет, но ситуацию надо срочно менять! На настоящий момент единственный способ, который мне видится реальным, — это использование цифровой подписи, но, чтобы избавиться от уязвимости в долгосрочной перспективе, хосту нужно иметь возможность определить, если к нему подключается недоверенное устройство, и отказать в подключении, если это необходимо. Ведь, если вы подключили скомпрометированное устройство, ничего уже сделать нельзя».

Категории: Главное, Уязвимости