資訊中心管理
安全程式碼ChatGPT 協助程式碼開發 ? 小心變得更不安全
從帶有破壞式創新技術的 AI 工具上市以來,不少開發的程式人員或業餘愛好者紛紛利用這些技術,僅須一個指令即可完成所有程式開發的任務。對此,資安專家以許多情況為例,直言這些由 AI 產生的程式碼不但品質堪憂且漏洞百出,若為缺乏資安意識的人士所用,恐衍生大量不安全的應用程式與網站開發,進而衝擊毫無戒心的消費者。

此外,也有充分了解資安的人士將它們用於不義之處。每當令人讚嘆的 AI 技術問世時,似乎都難逃出現負面教材的命運。同樣的技術往往會淪為惡意手段,例如網路釣魚、「深偽」(Deepfake)詐騙影片、惡意軟體創作與常見的腳本小子(script kiddie)惡作劇。而如今,在 AI 技術的加持下,這些非法行為能在更短的時間內完成,且進入門檻也更低。

當然,網路上總有不少誘餌式標題文章大讚這類發明具有革命性意義,或至少非常人所能及。而在大型語言模型(LLM)式的 AI 技術勢將改變工作各層面(不單只是軟體開發)之際,我們有必要停下腳步,仔細思考背後所潛藏的風險。而作為程式編碼的左右手, ChatGPT 或許壞就壞在過於「人性化」。

編碼模式乏善可陳卻又不可或缺

儘管 ChatGPT 帶給人類眾多驚奇與奧妙,但毫不意外地,經過數十年既有程式碼與知識庫的訓練,它在瀏覽程式碼時會與人類落入同樣的陷阱。為了解決這個問題,除了乏善可陳卻又不可或缺的的編碼模式外,它不得不仰賴一個具備良好資安意識的使用者,向 AI 提出適當的問題與正確的「詠唱(Prompt)」,最終才「可能」得以藉由 AI 編寫出安全的程式碼範例。

1703058550091

即便如此,若從安全性的角度來看,我們仍無法確保, ChatGPT 所提供的程式碼片段準確且功能正常。使用 ChatGPT 的人都知道, AI 很容易出現憑空捏造、虛假且具有誤導性的答案,我們稱之為「 幻 覺(hallucination)」, 像 是 程式在被要求執行某些特定 JSON 作業時, ChatGPT 虛構出不存在的資料庫,進 而 招 致「 幻 覺 搶 註(hallucination squatting)」。換言之,威脅者將滿心歡喜地利用某些惡意軟體,藉以假冒。
ChatGPT 力推的虛構資料庫。最終,我們都得面對這樣一個現實:整體而言,我們從未期待開發者具備足夠的資安意識,而業界需要開發者編寫安全程式碼時,也未要求他們做好充分準備。這點將隨著 ChatGPT 接收大量訓練數據而更加明顯。至少在初期,我們可以預期產出的安全性結果同樣差強人意。對此,開發者必須能在辨識出安全性程式錯誤後自行修復,不然就是設計出更好的詠唱 (Prompt),以取得更穩健可靠的程式碼。

這個論點已在史丹佛大學團隊的研究中

1703058683601

獲得應證。他們透過第一批大規模使用者研究實驗,觀察使用者如何與 AI 程式編寫助理互動,處理及解決各式各樣的安全相關功能。

除了上述問題外,我們的未來勢必還會充斥其它不可避免的 AI 威脅。因此,開發者比任何時候都更需要精進資安技能,並對程式碼品質抱持更高標準,不論它們來自何方。

立意良善卻釀成資料外洩災難

為奇,尤其是當前開發者必須面對更多的責任、更緊迫的交期,同時又肩負公司所賦予的創新重任。然而,即便立意良善,利用 AI 編寫程式碼時,若缺乏資安意識,開發者無法辨識生成後程式碼的安全性,後續必然會衍生棘手的資安問題。換言之,所有開發者皆可透過 AI/ ML 工具編寫更多程式碼的同時,安全風險高低將因人安全意識水平而異。

因此,企業必須能深切體察到,儘管人員未經專業訓練也能更快產出編碼,但背後的技術債累積速度也會隨之增加。
甚至當我們 4 月針對 ChatGPT 進行初步測試時,赫然發現它會犯下非常基本的錯誤,甚至有導致災難性後果之虞。

當我們要求它利用 MySQL 資料庫以 PHP 建立一套登入流程時,它很快地便完成函數程式碼。然而,它卻預設將密碼以純文字的形式儲存於資料庫、以代碼的方式儲存資料庫連接驗證,並使用了可能導致 SQL 注入式攻擊的編碼模式(儘管它的確也對輸入參數進行一定程度的篩選後,才產生此錯誤)。換言之,無論從哪個角度來看,都是新手才會犯的
錯誤:

儘管我們可透過更進一步且精確的「詠唱(prompt)」確保錯誤獲得修正,但這需要大量的資安知識方能成事。任憑這些工具被廣泛使用,就像是放任一群資淺工程師負責您的專案。倘若這個程式碼被用來建立敏感的基礎結構或處理個資,難保不會成為一顆令人提心吊膽的定時炸彈。

當然,正如資淺工程師的技術會隨著時間更加純熟, AI / ML 能力亦可望有所改善。到了明年,它或許就不會再犯下如此明顯又粗淺的安全錯誤。然而,鑒於它仍有導致安全錯誤之虞,我們還是得大幅提升自身資安技能,以便追蹤更加嚴峻、隱蔽且棘手的安全漏洞。

尋找與修復安全漏洞:人類準備尚嫌不足,又遇 AI 拉大差距

儘管業界熱烈討論「測試左移」(shiftleft testing)已有數年之久,但大多數企業仍得面對「開發團隊極度缺乏實用資安知識」的現實。因此,我們必須加倍努力,提供最合適的工具與教育訓練,協助他們步上軌道。

就現況而言,人類對於眼前的安全性程式錯誤仍未作好準備,更遑論 AI 所衍生的全新挑戰。以詠唱注入(prompt injection) 和幻覺搶註(hallucination squatting)為例,這些全新的攻擊媒介頗有野火燎原之勢。鑒於 AI 技術將是未來開發者編寫程式碼的重要軍火庫,教育他們如何安全且有效地運用這些生產利器的勢頭已刻不容緩。

1703058993812