導讀:古人問:以子之矛,攻子之盾,何如?
Google reCaptcha 團隊:其人弗能應也……內心苦,說不出。
作者:若名
來源:AI科技大本營(ID:rgznai100)
如果你透過 Google 搜尋購買演唱會門票或者註冊論壇賬號,系統會提示你必須點選幾個圖框、音訊或者移動滑鼠等操作來確認是人類在操作驗證而不是機器人。
其背後的驗證機制就是 CAPTCHA(驗證碼),保護網際網路服務免受諸如 Sybil 的攻擊,這是網際網路防止自動建立帳戶和濫用服務的第一道防線。
而 Google 的 reCaptcha 服務是最受歡迎的驗證碼系統之一,目前被成千上萬的網站用於測試使用者是否是人類,以防範機器人的攻擊。
reCAPTCHA 釋出之後,無論是安全專家還是研究人員都在試圖挑戰它,找出它的漏洞,比如一些專家就試圖透過反向影象搜尋、深度學習和“ 實驗神經科學資料 ” 來進行攻擊。
這些方法要麼成功率較低或者很快就被 Google 團隊迅速補上了漏洞。但其中一種攻擊方法讓 Google 團隊看上去束手無策。
馬裡蘭大學的研究人員聲提出的 unCaptcha 攻擊方法 unCaptcha 可以輕鬆騙過 Google reCaptcha。他們使用來自實時網站的超過 450 次 reCaptcha 挑戰來評估 unCaptcha,並證明可以在 5.42 秒內以 85.15% 的準確率進行破解。
該方法的原理讓人萬萬沒想到的是:在使用者請求語音驗證碼後,只要把收到的內容轉發給 Google 語音轉文字 API,然後把收到的回覆進行提交,最後竟然給輕易破解了。
古人問:以子之矛,攻子之盾,何如?
Google reCaptcha 團隊:其人弗能應也……內心苦,說不出。
微博網友如此調侃:
怎麼會這樣呢?
上述研究人員最初在 2017 年開發了 UnCaptcha,他們在發表的論文《unCaptcha: A Low-resource Defeat of reCaptcha’s Audio Challenge》中給出了更為詳細的解釋:
透過 UnCaptcha 下載音訊驗證碼,將音訊分成單個數字音訊片段,將片段上傳到多個其他語音轉文字服務(包括 Google),然後將這些服務得出的結果轉換為數字編碼。隨後經過一些同音詞猜測後,它會決定哪個語音到文字輸出最接近準確值,然後將答案上傳到 CAPTCHA 欄位。
這還是 unCaptcha 1.0 版本,成功率便達到 85%。在這一版釋出後,Google 隨即修複了一些漏洞,包括提升瀏覽器自動檢測效能以及將驗證方式從數字編碼切換為短語音,這成功防止了 unCaptcha 的攻擊。
不過,上述研究人員在 2018 年 6 月升級了新方法,unCaptcha v2 依然可以繞過這些防禦機制,並且“魔高一丈”,準確性比以前更高,達到了 90%。
這次他們還公佈了 v2 版的程式碼和更詳盡的步驟,研究人員稱 unCaptcha2 的操作方法很簡單:
-
導航到 Google 的 ReCaptcha 演示網站
-
導航到 ReCaptcha 的音訊挑戰
-
下載音訊挑戰
-
將音訊挑戰提交到 Speech To Text
-
解析響應和型別答案
-
按提交並檢查是否成功
▲過程演示
由於 unCaptcha2 必須轉到螢幕上的特定坐標,因此你需要根據設定更新坐標。這些坐標位於 run.py 的頂部。在 Linux 上,使用命令 xdotool getmouselocation –shell 查詢滑鼠的坐標可能會有所幫助。
你還需要為選擇的任何語音轉文字的 API 設定證書。由於 Google,微軟和 IBM 的語音轉文本系統看起來效果最好,因此這些系統已包含在 queryAPI.py 中。
此外,你必鬚根據需要設定使用者名稱和密碼,對於 Google 的 API,必須使用包含 Google 應用程式證書的檔案設定環境變數(GOOGLE_APPLICATION_CREDENTIALS)。
最後,使用安裝依賴項 pip install -r dependencies.txt,大功告成。
到此你還有疑惑問這難道不是駭客攻擊嗎?Google 沒報警?研究人員的說法是,他們已經聯絡了 Google ReCaptcha 團隊,提醒 Recaptcha 更新後的系統安全性更差了,所以後者完全瞭解這次攻擊的事件,而研究人員非但沒有受到任何干擾,而且在破解成功率如此之高的情況下,ReCaptcha 團隊甚至允許他們公佈程式碼。
當然,這些研究人員這麼努力找 ReCaptcha 的 bug,並善意提醒ReCaptcha 團隊基礎架構的問題,卻沒能得到 Google 的獎勵,研究人員也特意強調了這一點。
ReCaptcha 團隊暫時未給出應對攻擊的進一步措施,但研究人員最後釋出免責宣告稱,當 Google 再度更新 ReCaptcha 服務時,他們將不再更新 GitHub 庫。因此,他們預計 unCaptcha2 攻擊方法未來會失效,專案本身也會隨時中斷。
來源:
http://uncaptcha.cs.umd.edu/
論文連結:
http://uncaptcha.cs.umd.edu/papers/uncaptcha_woot17.pdf
程式碼和資料:
https://github.com/ecthros/uncaptcha
https://github.com/ecthros/uncaptcha2