GitHub Copilot拒絕“以色列”和“女人”,遇到屏蔽詞就罷工了
本文經AI新媒體量子位(公眾號ID:QbitAI)授權轉載,轉載請聯系出處。
GitHub的AI代碼生成插件Copilot發布才兩個多月,就闖下不少大禍。
照搬過開源代碼,還有生成的內容包含用戶隱私和歧視性語言等。
GitHub的對策也夠粗暴——拉清單。
覺得不合適的詞統統列入敏感詞,現在連Boy和Girl都不能用了。
大神的平方根倒數速算法連代碼帶注釋里的“what the f**k?”就被Copilot原樣照搬。
這事被曝光后,Github悄悄把能召喚出這段經典代碼的“q rsqrt”提示詞加入了黑名單,順便把f**k相關的詞也給加進去了。
發現這事的是紐約大學的副教授Brendan Dolan-Gavitt,他最近一項研究就是找出Copilot加密敏感詞列表中的上千個詞。

翻過他的履歷后才發現,這位破解大師還因為找敏感詞這事在IEEE上發過論文。
以色列和性別詞匯都不讓用
Brendan發現Copilot敏感詞列表就在VS Code的插件包里,只不過是加密的。
加密后的敏感詞是32位Hash值,逆運算解密不太可能。
不過這位大哥在敏感詞領域頗有經驗,直接用以前搜集到的常見敏感詞挨個碰撞。
常見的都嘗試過以后,剩下的就暴力窮舉。
窮舉法最大的難點在于同一個Hash值可能對應許多詞,他舉例“-1223469448”就對應80萬個11位字母數字的組合。
于是Brendon搞了個GPT-2模型用來判斷哪種組合最像英語。

就這樣遇到困難解決苦難,破解方法從最開始的簡單窮舉,最后都用上了GPU加速和Z3解約束算法(Constraint Solver)
最終現存的1170個敏感詞他找出了1168個,只剩最后兩個算出來的結果實在沒有長得像人話的,只好放棄了。
通過對Copilot插件每一個版本分析,他還能跟蹤具體哪個敏感詞是在哪次更新中添加的。

他們把敏感詞分了9大類25小類。
不過也有一些不算攻擊性但可能出現爭議的,比如Israel(以色列)和Palestan(巴勒斯坦),還有Man、Women、Girl、Boy這些常見的性別稱謂。
敏感詞對用戶輸入的提示詞和Copilot給出的建議結果都有效。
他測試讓Copilot生成一個國家列表,按字母順序生成到伊朗、伊拉克,下一個講道理是以色列的時候就卡住了。
Debug日志給出的信息是檢測到了slur(侮辱性語言)。

Brendon認為列敏感詞的方法只能算一個80分的臨時措施,并不能真正解決問題,畢竟真正解決需要仔細核查訓練數據,還挺花時間的。
順便說一下,Github知道這事以后打算把敏感詞列表從插件包里挪到服務器端,增加破解的難度。
在IEEE發過敏感詞論文
Brendon此舉吸引了大量關注,他也借機宣傳了一下之前的研究。
歡迎新來的老鐵,你們可能同樣會喜歡我去年在IEEE S&P發的論文,我們用自動方法提取了手機App里的敏感詞列表和其他秘密。
在這篇論文中,他和團隊測試了15萬個安卓App,其中4000多個存在敏感詞列表。
這些App分別來自谷歌商店,百度手機助手和三星手機預裝App。
他們把敏感詞分了9大類25小類。

然后重點測試了幾個App,列了一個表,黑點代表存在該類的敏感詞。

列幾個有趣的結論:
- 被屏蔽最多的是下流話(13)和恐嚇威脅(11)。
- 有的App屏蔽了簡單密碼,比如1234這種。
- 中文App的敏感詞數量顯著多于英文和韓文的。
最后,團隊還把找到的所有敏感詞匯總成一個大表,英文、中文和韓文部分都有。
但是由于里面的詞實在太辣眼,根本不適合公開發表,論文最終版里這張大表被移除了。
除了敏感詞以外,他們還發現了很多App存在秘密入口,比如NBC Sports里點擊13次版本號,輸入密碼后就能進入隱藏的Debug界面,蘋果版還和安卓版密碼一樣。

密碼是“UUDDLRLRBASS”
有點“上上下下左右左右BABA”那味了。
IEEE論文地址:
https://panda.moyix.net/~moyix/papers/inputscope_oakland20.pdf