10月25日,由KEEN举办的Geekon 极棒安全峰会在上海成功举办。会议邀请了国内外顶级安全研究人员发表有关智能安全的前沿技术演讲。在极棒安全峰会上,腾讯玄武实验室安全负责人于旸从条码的知识小科普到现场破解demo秀,分享了一种针对条码系统的通用攻击方法,攻击者仅需要用一张印有条码的纸,就能让计算机执行win+r、弹出CMD窗口、弹出计算器!
什么是条码?
条码是最古老的IoT协议,以至于人们谈起时髦的IoT时常常忽略了它。它是一种机器可读的数据表示形式,将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。任何种类的条码都包含静区、起始字符、数据字符以及终止字符,也有些条码还包含校验数字。
静区:不携带任何信息的区域,起提示作用。
起始字符:具有特殊结构,告知数据区开始。
数据字符:根据协议不同,可包含数字、字母、数字和字母、全ASCII字符集等。
终止字符:有特殊结构,告知扫描完毕。
条码阅读器的原理在于,通过扫描获取图像,经解码转换后传输数据。
读取条码信息的原理(图)
条码协议有多种,例如:UPC/EAN,Code 39,Code 39FullASCII,Code 93,Code 128,interleaved 2of5,Coupon code,Codebar等。其中,Code 128支持全部ASCII字符,拥有4个可自定义的功能码,三种编码字符集:CodeA、Code B、CodeC。
目前生产扫码器的 厂商有Symbol(Zebra)、ACCESS IS、厦门精瑞、TaoTronics、爱宝等。这些产品应用于医疗、商场等多个场景,在我们的日常生活中几乎随处可见。
用条码可触发SQL注入、XSS攻击
那么,你是否认为条码会引发安全问题?你觉得有没有可能用条码输入Ctrl+O,甚至Win+R?你想过通过条码可以触发溢出,格式化字符串,SQL注入以及XSS攻击么?腾讯玄武实验室通过研究分析发现,通过条码可以触发溢出,触发格式化字符串,实现SQL注入以及XSS。并在大会现场使用Symbol条码阅读器进行了演示。
演示一:
对话框攻击:扫描条码出现对话框。
演示二:
纸片攻击:扫描条码启动cmd,调出计算器。
演示三:
kindle攻击:扫描kindle屏幕显示的条码,启动cmd,调出计算器。
怎么会出现这种情况?
答案是BadBarcode。于旸表示,BadBarcode不是某款产品或者某个厂商的漏洞,而是一类产品的问题。所有使用PS/2或HID键盘模拟条码阅读器的设备都可能受BadBarcode影响,条码阅读器支持ADF的设备可能实现全自动攻击,条码阅读器不支持ADF但有触屏的也可能被攻击。此外,其它键盘模拟设备也有可能有类似问题,如RFID/NFC Reader。
安全建议
对此,于旸从以下两方面给出了自己的建议:
1、对条码阅读器生产商默认不要开启类似ADF的功能,默认不要向主机传输ASCII控制字符。
2、对使用PS/2或HID键盘模拟条码阅读器的设备的生产商,尽量不要选用PS/2或HID键盘模拟条码阅读器。对使用PS/2或HID键盘模拟条码阅读器的设备,可通过禁用热键以阻止BadBarcode攻击。