ФорумРазработкаЗащита информации → Уязвимость USB-HID

Уязвимость USB-HID

  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 5 октября 2014 г. 6:24

    Взято отсюда из ЖЖ Олега Артамонова, автора технических статей и тестов.
    http://olegart.livejournal.com/1471404.html

    USB сломали весь

    Новость дня, которую некоторые издания предподнесли прямо-таки как конец всего живого — это, конечно, про «взлом USB», превращение USB-устройств в универсальный инструмент атаки на всё подряд.

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

    пересказывает 3DNews немного истеричный The Verge. Подробнее историю можно почитать на Wired в двух частях: раз, два. Желающим знать правду можно почитать меня.

    История интересна тем, что СМИ одновременно и раздувают её размер, и не сообщают довольно-таки очевидных и понятных подробностей, которые вообще-то и позволяют понять, что, собственно, случилось.

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

    Очевидно, эту прошивку можно менять, а вместе с ней менять и функциональность контроллера — например, представляется ли он при втыкании в порт как Mass Storage (флэшка, например), как Human Interface Device (мышка, например) или как оба. Обычно необходимости такое реализовывать нет, но в принципе — оно возможно, и в некоторых ситуациях встречается: см. 3G-свистки, которые при подключении к компу оказываются одновременно модемом, слотом для microSD и CD-ROM’ом с драйвером.

    Не менее очевидно, что тут есть простор для, скажем так, экспериментов. Например, я пишу прошивку контроллера, у которой два функционала — флэшка и клавиатура, подключаю к нему собственно микросхему флэш-памяти и упаковываю в корпус флэшки. Тогда при втыкании этого комбайна в компьютер в нём появятся не одно, а два устройства (но пользователь вряд ли это заметит), и второе компьютер будет воспринимать как обычную USB-клавиатуру, то есть, через неё можно спокойно передавать любые команды, какие можно передать в печатном виде.

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

    Одновременно с этим производители обычных ширпотребных USB-контроллеров в той или иной степени узкого назначения над этим вопросом просто не задумывались — очевидно, считали, что никому в их устройствах ковыряться не надо, тем более, что прошивки к ним традиционно являются коммерческой тайной (чаще всего просто по привычке, чем по каким-либо объективным причинам), а значит, объём возни по расковыриванию этих прошивок неразумен с точки зрения человека, которому в выходные просто делать нечего.

    Это называется security through obscurity, безопасность через неизвестность. Например, если вы, уходя на работу, кладёте ключ под коврик у двери, вашу квартиру не обокрадут только потому, что не знают, где лежит ключ. Как только узнают — дальнейших препятствий не возникнет. Поэтому безопасность через неизвестность считается очень, очень плохой практикой в качестве единственного средства защиты — она работает, только если вашей защитой никто серьёзно не интересуется.

    Ну, собственно, вы уже догадались, что случилось, так что я изложу тезисно:

    1) Компания Phison, один из крупнейших разработчиков USB-контроллеров, оставила в них возможность обновления прошивки через собственно USB, не предусмотрев никакой вообще защиты от заливки неофициальных прошивок. Единственной защитой было то, что Phison никому не давала исходники своей прошивки, так что надо было их либо стырить, либо написать более-менее с нуля. Внутри у Phison, если кому интересно, банальный 8051.

    2) Флэшки на этих контроллерах можно довольно недорого закупать в ближайшей лавке.

    3) Два товарища написали и выложили в открытый доступ альтернативную прошивку и патчи для контроллеров Phison, обучающие его многим интересным трюкам.

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

    Плохо ли это? Да, конечно, ибо теперь, взяв в руки флэшку, вы не можете быть уверены, что она будет работать только как флэшка. Ну то есть, на самом деле, вы и раньше не могли быть уверены, но раньше кто-то должен был сильно хотеть досадить именно вам, а теперь можно купить мешок флэшек, поменять прошивки и выложить их красивой горкой рядом с чьим-нибудь стендом на «Игромире».

    Катастрофа ли это? Нет. Во-первых, заражённая флэшка не может что-либо выполнять сама — она посылает на компьютер текстовые команды, а для его заражения загружает на него и запускает вполне себе обычного трояна, обнаруживать которого — задача антивируса, и если он с ней не справляется — вам в общем-то будет всё равно, прилетит к вам новый троян с флэшки или из интернетов. Во-вторых, я вполне себе уверен, что скоро антивирусы начнут проверять активность на USB и вываливать предупреждения, если там, по их мнению, происходит что-то странное (например, вместе с флэшкой вдруг появилась новая клавиатура). В-третьих, хотя это, конечно, безопасность через неизвестность, пока что взломан дорогой USB 3.0-контроллер, так что купить китайских флэшек по десять баксов ведро и разложить их в людных местах, чтобы обеспечить эффективность заражения банальной массовостью, не получится.

    Является ли это дырой в протоколе USB? Нет, хотя СМИ радостно хоронят именно USB. Это — глупая дыра в реализации контроллеров одного конкретного производителя, и не более. Можно, конечно, двигать USB в сторону закрытого протокола, позволяющего подключать только официальные устройства, подписанные правильными сертификатами и так далее, но это не выглядит правильным направлением — и создаст массу трудностей для массы мелких производителей. С тем же успехом можно бороться с троянами в интернете, разрешив браузерам заходить только на официально сертифицированные сайты. С точки зрения USB абсолютно ничего нового сегодня не открылось, и как я сказал выше — руками подобную атаку можно было реализовать и десять лет назад.

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

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 5 октября 2014 г. 6:40, спустя 16 минут 29 секунд

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

    Откуда загружает? С себя загружает или с инета тянет?
    Какие команды, куда? В консоль может?
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 5 октября 2014 г. 7:14, спустя 33 минуты 15 секунд

    @vasa_c, поскольку мопед не мой, то могу лишь предположить.
    Откуда берёт троян - зависит от реализации. С себя (что вероятнее, ибо быстро и гарантированно) либо пробует из интернета, затем с себя.
    Команды - имитацию клавы/мыши точно может, может быть существуют какие-то дополнительные HID-команды. Куда они попадут - зависит от фокуса ввода. Вероятно, есть способ, при котором usb-устройство может послать команды конкретно своей программе (чтобы без подозрительных появляющихся окон), и такой программой как раз и оказывается троян.
    не всё полезно, что в swap полезло
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 5 октября 2014 г. 7:51, спустя 37 минут 28 секунд

    Ну, если оно может rm -rf ввести, то антивирус не поможет.
    А оно работает на "ОС где не нужен антивирус, так как там всё песдато"?
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 5 октября 2014 г. 7:55, спустя 4 минуты 11 секунд

    эмуляция HID работает, это уровень железа
    не всё полезно, что в swap полезло
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 5 октября 2014 г. 8:12, спустя 17 минут 4 секунды

    Спасибо, уже заклеил все свои USB

    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 5 октября 2014 г. 10:12, спустя 1 час 59 минут 46 секунд

    вырывать, не просто заклеивать)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!