Помните панику насчёт уязвимости Bad USB? Тогда никто не догадался до очевидного решения, предлагали ввести цифровые подписи устройств и прочие банальные ограничения.
Что вы думаете про коробочку, которая одним концом втыкается в компьютер, а другим в флешку (точнее флешка втыкается в неё)? А эта коробочка анализирует все USB-пакеты, проходящие через неё, по заложенным в себя правилам и производит их модификацию или даже отказ передачи, если захочет. Разумеется, производитель предоставляет пресеты для всех популярных вариантов фильтров, возможность быстро их переключать (возможно, даже залить в коробочку несколько профилей и менять их тумблером на корпусе) и т. д.
С ходу вижу три возможных сценария:
- Защита от классического Bad USB. Два пресета — «порт для флешек» и «порт для HID-устройств». В первом случае коробочка портит все попытки девайса прикинуться клавиатурой или мышкой (достаточно анализировать SETUP-пакет запроса дескриптора и банить устройство, если это дескриптор HID). Во втором случае коробочка портит все попытки девайса прикинуться флешкой. В идеале составное устройство не должно полностью отваливаться, а только то, что заблокировано (можно просто подпортить кусок дескриптора, чтобы лишние конечные точки не определились хостом, но в целом устройство успешно прошло енумерацию).
- Защита наоборот. Доверенной флешки от недоверенного хоста. Самое банальное — перевод флешки в read only. Перехватываем все команды записи и возвращаем хосту какую-нибудь ошибку. Ведь очень часто бывают ситуации, когда на флешку писать нафиг не нужно. Например, если вы хотите показать с неё презентацию или распечатать документ. А компьютеры в общественных местах очень часто заражены целым зоопарком вирусов (самое неприятное — вирус, который заменяет все папки ярлыками на вирус, а сами папки скрывает).
- Немного притянуто за уши. Допустим, мы хотим разрешить мыши и клавиатуры, но запретить флешки, модемы и т. д. Или разрешить только по белым спискам серийников. Понятное дело, что это можно сделать средствами ОС. Но так то прикольнее. Засунуть в системник такую коробочку и вывести все USB-порты через неё. Системник опечатать. Поскольку ПО такой коробочки значительно проще целой ОС, то и шанс что там есть уязвимость меньше.
Возможны другие варианты, но они не пришли мне в голову.
Техническую сторону вопроса я и так знаю, про неё особо не интересно. 2 USB PHY + FPGA на первом этапе, ASIC на втором. Кстати, себестоимость вроде выходит в пределах 1000 рублей даже в первом случае. Интересно мнение с точки зрения потребителей.