浅谈USB的安全性
来源:互联网 发布:php是什么软件 编辑:程序博客网 时间:2024/05/21 18:40
最近看到一些有关BadUSB的报道,说的是usb device的firmware被重新烧写,新的firmware能把U盘,同时当成HID或者Ethernet device,
然后其中的恶意代码,可以通过HID设备输入一些命令从而hack 系统,或者通过新增加的Etherent设备发动网络攻击。
http://venturebeat.com/2014/07/31/why-you-can-no-longer-trust-any-usb-device-plugged-into-your-pc/
https://srlabs.de/badusb/
看到这些报道以后,查了相关资料,做了一些实验,以及结合最近做USB Certification 的一些工作,个人觉得可以从以下两个方面加强
USB的安全性,下面以Linux系统为例。
系统接口 authorized_default 和authorized (仅谈有线连接)
每个bus下有一个 authorized_default的module 参数或sys接口,能够在文件系统加载之前(用module参数)或之后
关闭bus的usb的使用。
usbcore.authorized_default=0
echo 0 >/sys/bus/usb/devices/usbX/
每一个usb设备下面有一个authorized sys接口,可以临时禁止和打开这个接口
echo 0 >/sys/bus/usb/devices/usb1/
echo 1 >/sys/bus/usb/devices/usb1/
2. 有条件的enable 插入的USB设备
2.1 指定bus number或设备number
echo 1 >/sys/bus/usb/devices/usb1/
echo 1 >/sys/bus/usb/devices/1-3/
2.2 通过device的descriptor
在判断是否authorized之前,usb interface的device还没有建立,如果要用class作为判断标准的话,
要确保authorized的device里device descirptor里对应的bDeviceClass要有值。
上述条件也可以用udev来描述
#允许hub 的使用
SUBSYSTEM=="usb", ACTION=="add", ATTR{bDeviceClass}=="09" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
#允许 vendor id 为xxxx (16进制)的设备使用
UBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="xxxx" RUN+="/bin/sh -c 'echo 1 >/sys$DEVPATH/authorized'"
使用TPL (Targeted Peripheral List)
将可以信任的设备在代码中表示,可以加pid/vid,可以加class的,具体见:
drivers/usb/core/otg_whitelist.h
不过现在的upstream的kernel还不能很好的支持这个,除非你配置了CONFIG_USB_OTG,但我们绝大多数设备
并不支持OTG。
我做了下面的一个patchset,可以实现普通的host的TPL的支持,不过,这个patchset还不知道是否最终能进。
http://www.spinics.net/lists/linux-usb/msg111603.html
打了上面这个patchset,只要选中CONFIG_USB_OTG_WHITELIST以及在平台的host controller driver里设置tpl_support
的flag就可以了。
- 浅谈USB的安全性
- webservice安全性浅谈
- 浅谈-安全性测试
- webservice安全性浅谈
- 浅谈开源web程序后台的安全性
- 浅谈USB设备的VID和PID
- 浅谈USB设备的VID和PID
- 浅谈USB设备的VID和PID
- 新手谈浅谈WEB安全性
- 浅谈kvm切换器安全性
- Linux USB架构浅谈
- USB架构浅谈
- 浅谈USB驱动架构
- Linux USB架构浅谈
- 浅谈 usb analog switch双向切换开关的选择
- Android 中能够作为 Log 开关的一些操作以及安全性浅谈
- 浅谈WLAN运营中Portal认证安全性
- 浅谈Docker隔离性和安全性
- 交互设计:不可忽略的产品状态
- Vulnerability Assessment of SNMP Service – I
- Unity3D的进度条显示当前加载的百分比
- C/C++语言void及void指针深层探索
- Wireshark抓包工具使用教程以及常用抓包规则 .
- 浅谈USB的安全性
- 对话框的交互——你好,对话框
- ZOJ-1258
- 栈和队列
- 19-拍照与视频刻录
- 23种设计模式(三)
- Dom编程(表格排序)
- POJ 2502 Subway
- ZOJ - 1709 Oil Deposits