探索 GitHub Copilot 等 AI 助手對代碼安全的影響

斯坦福大學的一組研究人員研究了在編寫代碼時使用智能助手對代碼中漏洞出現的影響。 我們考慮了基於 OpenAI Codex 機器學習平台的解決方案,例如 GitHub Copilot,它允許您生成相當複雜的代碼塊,直至現成的函數。 這些擔憂與以下事實有關,即由於來自公共 GitHub 存儲庫的真實代碼(包括那些包含漏洞的代碼)被用於訓練機器學習模型,因此合成代碼可能會重複錯誤並提示包含漏洞的代碼,並且也沒有考慮到在處理外部數據時需要執行額外的檢查。

該研究涉及 47 名具有不同編程經驗的志願者 - 從學生到具有十年經驗的專業人士。 參與者被分為兩組——實驗組(33 人)和對照組(14 人)。 兩個小組都可以訪問任何圖書館和互聯網資源,包括使用 Stack Overflow 中的現成示例。 實驗組有機會使用 AI 助手。

每個參與者都被分配了 5 個與編寫代碼相關的任務,在這些代碼中很容易犯下導致漏洞的錯誤。 例如,有編寫加密和解密函數、使用數字簽名、處理文件路徑或 SQL 查詢中涉及的數據、在 C 代碼中處理大數字、處理網頁中顯示的輸入等任務。 考慮到編程語言對使用 AI 助手時獲得的代碼安全性的影響,作業涵蓋了 Python、C 和 JavaScript。

結果發現,與未使用人工智能助手的參與者相比,使用基於 codex-davinci-002 模型的智能人工智能助手的參與者生成的代碼安全性要低得多。 總體而言,在使用 AI 助手的小組中,只有 67% 的參與者能夠提供正確且安全的代碼,而在另一組中,這一數字為 79%。

與此同時,自尊指標發生了逆轉——使用 AI 助手的參與者認為他們的代碼會比另一組參與者的代碼更安全。 此外,有人指出,參與者越不信任 AI 助手,花費更多時間解析和更改給定提示,代碼中的漏洞就越少。

例如,從密碼庫複製的代碼包含比 AI 助手建議的代碼更安全的默認參數值。 此外,在使用 AI 助手時,選擇不太可靠的加密算法和不對返回值進行身份驗證的問題已修復。 在C數操作任務中,使用AI助手編寫的代碼錯誤較多,導致整數溢出。

此外,紐約大學的一個小組在 58 月進行了一項類似的研究,有 10 名學生參與,他們被要求用 C 實現一個處理購物清單的結構。 結果顯示,AI 助手對代碼安全的影響可以忽略不計——使用 AI 助手的用戶平均多犯了大約 XNUMX% 的安全相關錯誤。

探索 GitHub Copilot 等 AI 助手對代碼安全的影響


來源: opennet.ru

添加評論