騰訊玄武實(shí)驗(yàn)室:通過條碼可能觸發(fā)SQL注入、XSS攻擊
原創(chuàng)10月25日,由KEEN舉辦的Geekon 極棒安全峰會(huì)在上海成功舉辦。會(huì)議邀請了國內(nèi)外頂級(jí)安全研究人員發(fā)表有關(guān)智能安全的前沿技術(shù)演講。在極棒安全峰會(huì)上,騰訊玄武實(shí)驗(yàn)室安全負(fù)責(zé)人于旸從條碼的知識(shí)小科普到現(xiàn)場破解demo秀,分享了一種針對條碼系統(tǒng)的通用攻擊方法,攻擊者僅需要用一張印有條碼的紙,就能讓計(jì)算機(jī)執(zhí)行win+r、彈出CMD窗口、彈出計(jì)算器!
什么是條碼?
條碼是最古老的IoT協(xié)議,以至于人們談起時(shí)髦的IoT時(shí)常常忽略了它。它是一種機(jī)器可讀的數(shù)據(jù)表示形式,將寬度不等的多個(gè)黑條和空白,按照一定的編碼規(guī)則排列,用以表達(dá)一組信息的圖形標(biāo)識(shí)符。任何種類的條碼都包含靜區(qū)、起始字符、數(shù)據(jù)字符以及終止字符,也有些條碼還包含校驗(yàn)數(shù)字。
靜區(qū):不攜帶任何信息的區(qū)域,起提示作用。
起始字符:具有特殊結(jié)構(gòu),告知數(shù)據(jù)區(qū)開始。
數(shù)據(jù)字符:根據(jù)協(xié)議不同,可包含數(shù)字、字母、數(shù)字和字母、全ASCII字符集等。
終止字符:有特殊結(jié)構(gòu),告知掃描完畢。
條碼閱讀器的原理在于,通過掃描獲取圖像,經(jīng)解碼轉(zhuǎn)換后傳輸數(shù)據(jù)。
讀取條碼信息的原理(圖)
條碼協(xié)議有多種,例如:UPC/EAN,Code 39,Code 39FullASCII,Code 93,Code 128,interleaved 2of5,Coupon code,Codebar等。其中,Code 128支持全部ASCII字符,擁有4個(gè)可自定義的功能碼,三種編碼字符集:CodeA、Code B、CodeC。
目前生產(chǎn)掃碼器的 廠商有Symbol(Zebra)、ACCESS IS、廈門精瑞、TaoTronics、愛寶等。這些產(chǎn)品應(yīng)用于醫(yī)療、商場等多個(gè)場景,在我們的日常生活中幾乎隨處可見。
用條碼可觸發(fā)SQL注入、XSS攻擊
那么,你是否認(rèn)為條碼會(huì)引發(fā)安全問題?你覺得有沒有可能用條碼輸入Ctrl+O,甚至Win+R?你想過通過條碼可以觸發(fā)溢出,格式化字符串,SQL注入以及XSS攻擊么?騰訊玄武實(shí)驗(yàn)室通過研究分析發(fā)現(xiàn),通過條碼可以觸發(fā)溢出,觸發(fā)格式化字符串,實(shí)現(xiàn)SQL注入以及XSS。并在大會(huì)現(xiàn)場使用Symbol條碼閱讀器進(jìn)行了演示。
演示一:
對話框攻擊:掃描條碼出現(xiàn)對話框。
演示二:
紙片攻擊:掃描條碼啟動(dòng)cmd,調(diào)出計(jì)算器。
演示三:
kindle攻擊:掃描kindle屏幕顯示的條碼,啟動(dòng)cmd,調(diào)出計(jì)算器。
怎么會(huì)出現(xiàn)這種情況?
答案是BadBarcode。于旸表示,BadBarcode不是某款產(chǎn)品或者某個(gè)廠商的漏洞,而是一類產(chǎn)品的問題。所有使用PS/2或HID鍵盤模擬條碼閱讀器的設(shè)備都可能受BadBarcode影響,條碼閱讀器支持ADF的設(shè)備可能實(shí)現(xiàn)全自動(dòng)攻擊,條碼閱讀器不支持ADF但有觸屏的也可能被攻擊。此外,其它鍵盤模擬設(shè)備也有可能有類似問題,如RFID/NFC Reader。
安全建議
對此,于旸從以下兩方面給出了自己的建議:
1、對條碼閱讀器生產(chǎn)商默認(rèn)不要開啟類似ADF的功能,默認(rèn)不要向主機(jī)傳輸ASCII控制字符。
2、對使用PS/2或HID鍵盤模擬條碼閱讀器的設(shè)備的生產(chǎn)商,盡量不要選用PS/2或HID鍵盤模擬條碼閱讀器。對使用PS/2或HID鍵盤模擬條碼閱讀器的設(shè)備,可通過禁用熱鍵以阻止BadBarcode攻擊。