現(xiàn)在的街面上很多掃碼的禮品的活動,可是碼是能隨便掃的嗎?此處的風險巨大,你可曾了解過?
昨天于旸在 GeekPwn 演講中展示了它的危險性。如果你沒有聽說過于旸,也許對他另一個名字更熟悉——「TK 教主」——來自他用的 ID「Tombkeeper」,這是一個在安全行業(yè)如雷貫耳的名字。去年他加入騰訊,組建了玄武實驗室,開展多項面向未來的安全技術研究。
他們研究條碼后發(fā)現(xiàn),利用一張印有條碼的紙就能攻破一臺計算機。
(于旸,騰訊玄武實驗室負責人,他在 GeekPwn 大會上展示了條碼的危險性。)
下面的內容在于旸演講的基礎上編輯而成。
條碼:一種機器可讀的數(shù)據(jù)表示形式
條碼的歷史非常長,早在上世紀 40 年代末就有人想到條碼這個主意并開始實驗。它的原理很簡單:使用某種協(xié)議將信息編成圖像,用條碼閱讀器或手機獲取圖像,將圖像交給芯片,把圖像解碼轉換成信息,最后傳輸?shù)诫娔X。
它的應用無處不在:超市收銀時掃描包裝袋上的條碼獲取價格;醫(yī)院掃描病歷上的條碼讀取病人信息;商家掃描微信支付條碼收款……
這些條碼大多是一維碼,另一種條碼是隨著微信普及而重獲新生的二維碼(它還有個名字叫 QR Code)。條碼使用的協(xié)議非常多,有一種協(xié)議叫 Code 128, 這是一個非常有野心的協(xié)議,它支持全部 ASCII 字符。ASCII 是二進制對應的字符,現(xiàn)代計算機使用這套字符編寫代碼。它對于計算機編程而言相當于拉丁字母之于各種西方語言。總之,用它能編寫代碼控制計算機。
市面上的大部分條碼閱讀器都支持這種協(xié)議,這意味著黑客可以編寫一段程序,轉化成條碼,通過條碼閱讀器傳輸?shù)接嬎銠C上。
這些代碼怎么才能管用?絕大多數(shù)情況下,條碼閱讀器通過 USB 接口接入計算機,對計算機而言這就是一個輸入設備,計算機只捕捉它們發(fā)過來的信號,從哪兒發(fā)過來對電腦來說是一樣,如果它發(fā)送通常由鍵盤發(fā)送過來的信號,計算機也會一樣執(zhí)行。
如果你將鍵盤種的熱鍵,比如 CTRL+2, CTRL+O 等編成條碼,通過條碼掃描器輸入計算機,便能直接控制計算機。Code 128 協(xié)議不支持 Win+R 這種熱鍵,但最大的條碼閱讀器廠商 Symbol 公司還有一種特有的技術叫 ADF,它支持 Win+。這樣控制的內容就更廣了,能直接調出計算機的命令窗口。
以前的攻擊方式
以前有過一個研究,將條碼作為一筆輸入源看待,能通過條碼觸發(fā)計算機內存的溢出,或觸發(fā)格式化字符串,還能 SQL 注入等。
還有一種更簡單的攻擊方式,大部分應用場景下,條碼種的數(shù)字都是按照序號排列的,比如你去商店買個東西,商家給你一個條碼