AI將取代人類?機器人ChatGPT能測漏洞、審代碼還能修bug
11月30日,OpenAI研究實驗室推出了聊天機器人ChatGPT,一躍成為人工智能領域的“當紅炸子雞”。
有賬號的人在問它各種天馬行空的問題,沒賬號的人都在求賬號注冊攻略,連埃隆·馬斯克都在推特公開評價它“scary good”。截至當地時間12月5日,ChatGPT已經擁有超過100萬用戶。
對于網絡安全從業者來說,ChatGPT到底能干什么?也許是代碼審計、漏洞檢測、編寫軟件或對shellcode進行逆向。
什么是GPT?
根據OpenAI介紹,ChatGPT 由GPT-3.5 系列模型提供支持,使用Azure AI 超算的文本和代碼數據進行訓練。
GPT全稱為Generative PreTraining,是由人工智能研發公司OpenAI開發的,一種用戶文本生成的自然語言處理(NPL)模型。目前GPT的公開版本是GPT-3,發行于2020年5月,GPT-3.5是GPT-3的微調版本,目前OpenAI公司還未官方宣布更新。
依據GPT-3的公開資料,它是當時規模最大的神經網絡,擁有1750億個參數的自然語言深度學習模型。
網安人如何用ChatGPT?
盡管ChatGPT似乎上知天文下至地理,但除了回答問題和智能寫稿,它似乎對網絡安全從業人士沒有什么用處?
其實,ChatGPT的用途不只是圍繞著問答,只要是文本,不論是語言文本還是代碼文本,它都可以回答。已經有不少網安人士開始嘗試開發ChatGPT的各種用途。以下是網安人士摸索出的用法:
1.調試代碼和修復代碼
ChatGPT不僅可以發現代碼中的錯誤,還能修復錯誤并用簡單的英語語句向你解釋修復方法。
2.檢測安全漏洞,也許還能創建PoC
ChatGPT可以判斷一段代碼是否包含安全漏洞,它會用簡單的語言解釋判斷原因。有用戶指出,OpenAI可以檢測到代碼樣本中的XSS漏洞,也許可以訓練AI更進一步,要求它提供漏洞的PoC。
3.部署虛擬的虛擬機
研究院Jonas Degrave展示了如何將ChatGPT變成一個成熟的Linux終端,并通過瀏覽器與“虛擬機”交互。實際上,終端并沒有運行真正的Linux虛擬機,對命令行輸入的響應完全基于與AI的對話。
ChatGPT變成了一個Linux終端
4.用ChatGPT遍歷維度
在測試中,研究員向ChatGPT提供如下文本,要求遍歷維度,ChatGPT的反饋是“門戶已成功打開”。
用ChatGPT遍歷維度
5.生成namp掃描
和上述部署虛擬的Linux終端一樣,用ChatGPT生成namp掃描并不需要運行真正的 nmap 應用程序。
6.零編碼編寫軟件
研究員要求ChatGPT“創建一個PHP程序,掃描主機上的開放端口”,得到了如下結果。
機器學習愛好者和UNCC助理教授Benjamin J Radford,要求ChatGPT“將一字棋游戲的代碼寫入文件,使用gcc編譯該文件然后執行。”ChatGPT實現了該功能。
ChatGPT按要求編寫的PHP代碼
7.對shellcode進行逆向工程并用C語言重寫
ChatGPT能夠解碼 base64字符串和反向(已知)字符串的MD5哈希值,這對于逆向工程師和惡意軟件分析師來說,特別有助于審查混淆、重復打包、編碼或最小化的樣本。
研究員還用ChatGPT解碼了隨機生成的 ascii 編碼的外殼代碼,結果ChatGPT不僅對功能做了解釋,還將其用C語言重新編寫。
ChatGPT做不了什么?
當然,ChatGPT存在很明顯的局限性,其開發者談到了AI當前的一些問題,例如學習語料庫截止到2021年,它無法回答2022年及之后發生的事情。同時,它需要連接互聯網使用。如果未連接互聯網,其回應內容都來自離線訓練的模型。例如,未聯網時ChatGPT無法回答今天的天氣。
研究人員指出,ChatGPT有時會給出看似合理但不正確的答案。ChatGPT對輸入文本的措辭變化也反應稍顯遲鈍。當一個問題它無法回答時,稍微變化一下問法,ChatGPT則能回答該問題。
該模型有時還存在回答過于冗長,重復使用某些短語或預料。OpenAI表示這可能是訓練數據偏差的結果,因為培訓師更喜歡豐富而全面的答案。
有時,模型在回答模棱兩可的問題時會猜測用戶的意圖。
研發人員表示,ChatGPT最大的問題是,即使OpenAI已經訓練模型要拒絕不合適的指令或問題,但它仍然可能會響應有害指令或表現出偏見的行為。
為了解決這些限制,OpenAI表示計劃定期更新模型,同時收集用戶對有問題的模型輸出的反饋。OpenAI尤其關注“可能發生的有害輸出、新風險和可能的緩解措施”,公司還宣布將舉辦ChatGPT反饋競賽,獎金為 500 美元的API積分。