騰訊玄武實驗室:通過條碼可能觸發SQL注入、XSS攻擊
原創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攻擊。