核心概念
本文提出了一種名為 PROSEC 的主動式安全對齊方法,旨在強化程式碼大型語言模型在程式碼生成過程中的安全性,並防止產生易受攻擊的程式碼。
摘要
書目資訊
Xu, X., Su, Z., Guo, J., Zhang, K., Wang, Z., & Zhang, X. (2024). PROSEC: Fortifying Code LLMs with Proactive Security Alignment. arXiv preprint arXiv:2411.12882v1.
研究目標
本研究旨在解決程式碼大型語言模型 (LLM) 在程式碼生成過程中產生安全漏洞的問題,並提出一個名為 PROSEC 的主動式安全對齊方法來增強程式碼 LLM 的安全性。
方法
PROSEC 的方法包含兩個主要步驟:
- 錯誤誘發指令合成: 利用 Common Weakness Enumerations (CWEs) 和 ChatGPT,合成可能誘發程式碼 LLM 產生漏洞程式碼的指令。
- 對齊資料集建構: 使用程式碼 LLM 執行合成的指令,並利用漏洞檢測器識別不安全的程式碼片段。接著,利用程式碼 LLM 修復這些漏洞程式碼,並將其與原始程式碼配對,形成用於對齊訓練的資料集。
主要發現
- PROSEC 合成的指令比標準指令調整資料集誘發了 25 倍的漏洞程式碼。
- 使用 PROSEC 訓練的模型比使用 SafeCoder 訓練的模型安全 29.2% 到 35.5%。
- PROSEC 對程式碼 LLM 的效用影響不到 2 個百分點。
主要結論
PROSEC 是一種有效的方法,可以在不影響程式碼 LLM 整体效用的情況下,顯著提高其生成安全程式碼的能力。
意義
本研究為程式碼 LLM 的安全對齊提供了新的思路,並為構建更安全的 AI 驅動程式碼生成系統奠定了基礎。
局限與未來研究方向
- 未來可以進一步研究如何過濾標準指令調整資料集中的雜訊,以提高 PROSEC 的效用。
- 可以探索將 PROSEC 應用於其他程式碼 LLM 和程式語言的可能性。
統計資料
PROSEC 合成的指令比標準指令調整資料集誘發了 25 倍的漏洞程式碼。
使用 PROSEC 訓練的模型比使用 SafeCoder 訓練的模型安全 29.2% 到 35.5%。
PROSEC 對程式碼 LLM 的效用影響不到 2 個百分點。
SafeCoder 從 1.45 億個 git commits 中收集了 465 個真實漏洞程式碼的範例。