Доступен USB Raw Gadget, Linux-модуль для эмуляции USB-устройств
11 февраля 2020 года
Андрей Коновалов из компании Google развивает новый модуль USB Raw Gadget, позволяющий эмулировать USB-устройства в пространстве пользователя. Находится на рассмотрении заявка на включение данного модуля в основной состав ядра Linux. USB Raw Gadget уже применяется в компании Google для упрощения fuzzing-тестирования USB-стека ядра при помощи инструментария syzkaller.
Модуль добавляет новый программный интерфейс в подсистему ядра USB Gadget и развивается в качестве альтернативы GadgetFS. Создание нового API обусловлено необходимостью получения низкоуровневого и прямого доступа к подсистеме USB Gadget из пространства пользователя, позволяющего обрабатывать все возможные USB-запросы (GadgetFS обрабатывает некоторые запросы самостоятельно, не передавая в пространство пользователя). Управление USB Raw Gadget производится через устройство /dev/raw-gadget по аналогии с /dev/gadget в GadgetFS, но для взаимодействия применяется интерфейс на основе ioctl(), а не псевдо-ФС.
Кроме прямой обработки всех USB-запросов процессом в пространстве пользователя новый интерфейс также отличается возможностью возвращения любых данных в ответ на USB-запрос (GadgetFS выполняет проверку корректности USB-дескрипторов и фильтрует определённые ответы, что мешает выявлению ошибок при fuzzing-тестировании USB-стека). Raw Gadget также даёт возможность выбрать конкретное устройство UDC (USB Device Controller) и драйвер для прикрепления, в то время как GadgetFS прикрепляется к первому доступному устройству UDC. Для разных UDC назначаются предсказуемые имена endpoint для разделения разных типов каналов обмена данными внутри одного устройства.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.