4.2 AI驅動的原始碼審計​

​

​

概述​

隨著AI程式設計工具（如Claude Code、Trae等）在企業中的大規模應用，AI生成程式碼的比例已達到60%~70%。在此背景下，利用AI對原始碼進行安全審計成為必然趨勢——AI寫的程式碼，由AI來審計，形成了"以矛攻盾"的新型安全檢測模式。​

本文從程式碼審計的基礎出發，系統介紹手工審計方法、靜態審計工具、AI審計思路，並深入探討多款AI程式碼審計工具的實戰應用，最後透過靶場演練展示完整的審計流程。​

​

​

目錄​

1.

手工程式碼審計​

2.

靜態程式碼審計工具​

3.

AI程式碼審計思路​

4.

AI程式碼審計工具與實戰​

5.

CI/CD整合​

6.

實戰演練：Tmall\_demo審計​

7.

總結與展望​

​

​

一、手工程式碼審計​

1.1 審計維度​

手工程式碼審計是安全工程師的基礎技能，需關注以下核心維度：​

​



| 審計維度 | 審計要點 | 常見漏洞型別 |
| --- | --- | --- |
| 輸入驗證 | 使用者輸入是否經過嚴格校驗 | SQL隱碼攻擊、XSS、命令注入 |
| 認證授權 | 身份驗證邏輯是否完善 | 未授權訪問、越權操作 |
| 會話管理 | Session/Cookie處理是否安全 | 會話固定、會話劫持 |
| 資料儲存 | 敏感資料是否加密儲存 | 明文儲存、弱加密 |
| 檔案操作 | 檔案讀寫是否安全可控 | 路徑遍歷、檔案上傳 |
| 資料庫操作 | SQL拼接是否存在風險 | SQL隱碼攻擊 |
| 日誌記錄 | 日誌是否包含敏感資訊 | 資訊洩露 |



​

1.2 審計流程​

​

Code block​

Plain Text

┌─────────────────────────────────────────────────────┐​

│ 程式碼審計流程 │​

├─────────────────────────────────────────────────────┤​

│ 1. 需求分析 → 理解業務邏輯和安全要求 │​

​

1.3 優缺點分析​

​



| 維度 | 優點 | 缺點 |
| --- | --- | --- |
| 準確性 | 能夠發現深層邏輯漏洞 | 依賴審計人員經驗 |
| 深度 | 可進行業務邏輯層面分析 | 效率低下 |
| 覆蓋範圍 | 針對性強 | 容易遺漏 |
| 成本 | 無需額外工具 | 人力成本高 |



​

​

​

二、靜態程式碼審計工具​

2.1 常見工具​

2.1.1 SonarQube​

特點：​

•

支援20+種程式語言​

•

整合CI/CD流程​

•

提供視覺化儀錶板​

•

規則可自定義​

安裝與使用：​

​

Code block​

Bash

docker run -d --name sonarqube -p 9000:9000 sonarqube:latest​

​

sonar-scanner \\​

\-Dsonar.projectKey=myproject \\​

\-Dsonar.sources=. \\​

\-Dsonar.host.url=http://localhost:9000 \\​

\-Dsonar.login=<token>​

​

2.1.2 Checkmarx​

特點：​

•

商業級靜態分析工具​

•

支援多語言深度掃描​

•

整合IDE和CI/CD​

•

提供詳細漏洞報告​

2.1.3 Semgrep​

特點：​

•

開源工具，社群活躍​

•

規則可自定義，易於編寫​

•

支援多語言​

•

速度快，適合CI/CD整合​

安裝與使用：​

​

Code block​

Bash

pip install semgrep​

​

semgrep scan --config=p/default​

semgrep scan --config=rules/ --lang=python​

​

2.1.4 Bandit（Python專用）​

特點：​

•

Python程式碼安全掃描工具​

•

專門檢測Python常見漏洞​

•

支援自定義外掛​

安裝與使用：​

​

Code block​

Bash

pip install bandit​

bandit -r . -f json -o report.json​

​

2.1.5 ESLint + eslint-plugin-security（JavaScript專用）​

安裝與使用：​

​

Code block​

Bash

npm install eslint eslint-plugin-security --save-dev​

​

配置檔案 .eslintrc：​

​

Code block​

JSON

{​

"plugins": \["security"\],​

"extends": \["plugin:security/recommended"\]​

}​

​

執行掃描：​

​

Code block​

Bash

npx eslint .​

​

2.2 侷限性​

​



| 侷限性 | 說明 |
| --- | --- |
| 誤報率高 | 大量告警需要人工確認 |
| 邏輯漏洞檢測能力弱 | 難以發現業務邏輯層面的漏洞 |
| 上下文理解有限 | 無法理解完整的業務流程 |
| 規則滯後 | 新漏洞型別需要更新規則 |
| 依賴配置 | 規則配置不當會影響效果 |



​

​

​

三、AI程式碼審計思路​

3.1 AI審計的優勢​

​



| 優勢 | 說明 |
| --- | --- |
| 上下文理解 | 能夠理解完整的業務邏輯和程式碼上下文 |
| 跨檔案分析 | 可以追蹤跨多個檔案的資料流 |
| 漏洞聯想 | 能夠將分散的程式碼片段關聯起來發現攻擊鏈 |
| 動態學習 | 能夠學習最新的漏洞型別和攻擊手法 |
| 效率提升 | 自動化分析，減少人工工作量 |



​

3.2 分層審計策略​

​

Code block​

Plain Text

┌─────────────────────────────────────────────────────────┐​

│ AI程式碼審計架構 │​

├─────────────────────────────────────────────────────────┤​

│ 第一層：程式碼理解層 │​

│ ├─ 程式碼解析與結構化 │​

│ ├─ 資料流分析 │​

​

3.3 提示詞工程應用​

基礎審計Prompt模板：​

​

Code block​

Plain Text

​

深度審計Prompt模板：​

​

Code block​

Plain Text

​

3.4 關鍵技巧​

1.

程式碼分塊策略：將大型程式碼庫分成可管理的模組，逐塊審計​

2.

上下文注入：為AI提供專案的架構文件、配置檔案等上下文資訊​

3.

互動式審計：透過多輪對話深入分析可疑程式碼片段​

4.

漏洞驗證：利用AI生成POC程式碼驗證漏洞真實性​

5.

報告生成：讓AI自動生成結構化的審計報告​

​

​

四、AI程式碼審計工具與實戰​

4.1 靶場環境​

使用Tmall\_demo作為實戰靶場：​

​

Code block​

Bash

git clone https://gitee.com/project\_team/Tmall\_demo.git​

cd Tmall\_demo​

ls -la​

​

專案結構：​

​

Code block​

Plain Text

Tmall\_demo/​

├── src/​

│ ├── main/​

│ │ ├── java/​

│ │ │ └── com/​

│ │ │ └── tmall/​

│ │ │ ├── controller/ # 控制器層​

│ │ │ ├── service/ # 服務層​

│ │ │ ├── mapper/ # 資料訪問層​

│ │ │ ├── entity/ # 實體類​

│ │ │ └── config/ # 配置類​

│ │ └── resources/​

│ │ ├── application.yml # 應用配置​

│ │ └── mapper/ # SQL對映檔案​

│ └── test/ # 測試程式碼​

​

4.2 Trae​

簡介：Trae是一款AI程式設計助手，支援程式碼審計功能，對話視窗輸入的提示詞字數上限6000。​

審計流程：​

1.

開啟專案：在Trae中開啟目標專案，讓AI瞭解專案結構​

2.

編寫審計Prompt：根據審計目標編寫針對性提示詞​

3.

互動式分析：對可疑程式碼進行深入分析​

審計示例：​

待審計程式碼：​

​

Code block​

Java

@RequestMapping("/login")​

public String login(String username, String password) {​

String sql \= "SELECT \* FROM users WHERE username = '" + username + "' AND password = '" + password + "'";​

User user \= jdbcTemplate.queryForObject(sql, User.class);​

return "success";​

}​

​

審計結果：​

​

Code block​

Plain Text

漏洞型別：SQL隱碼攻擊​

漏洞位置：UserController.java:25​

漏洞描述：直接將使用者輸入拼接進SQL語句，未做任何轉義處理​

風險等級：高​

​

4.3 Claude Code Audit Skill​

簡介：專業白盒程式碼安全審計Skill，支援9種語言、55+漏洞型別，具備多Agent並行分析與攻擊鏈自動構建能力。​

專案地址：[https://github.com/3stoneBrother/code-audit/](https://github.com/3stoneBrother/code-audit/)​

安裝與使用：​

​

Code block​

Bash

git clone https://github.com/3stoneBrother/code-audit.git​

cd code-audit​

npm install​

node audit.js --target /path/to/project --output report.md​

​

審計流程：​

1.

程式碼掃描：遍歷專案所有程式碼檔案​

2.

漏洞檢測：使用預定義規則匹配常見漏洞模式​

3.

深度分析：呼叫Claude進行語義層面的深入分析​

4.

報告生成：輸出結構化的審計報告​

4.4 DeepAudit​

簡介：基於AI的程式碼審計平臺，支援Web介面操作。​

Docker部署：​

​

Code block​

Bash

curl -fsSL https://raw.githubusercontent.com/lintsinghua/DeepAudit/v3.0.0/docker-compose.prod.cn.yml | docker compose -f - up -d​

​

部署驗證：​

​

Code block​

Bash

docker ps​

\# 訪問管理介面：http://192.168.142.142:3000/admin​

​

配置流程：​

​



| 步驟 | 配置項 | 值 |
| --- | --- | --- |
| 註冊 | 郵箱 | [wuya@qq.com](mailto:wuya@qq.com) |
| 註冊 | 密碼 | 123456 |
| 模型配置 | 模型名稱 | deepseek-chat |
| 模型配置 | API地址 | [https://api.deepseek.com](https://api.deepseek.com) |
| 模型配置 | API Key | \[使用者API Key\] |



​

專案審計：​

1.

建立專案：輸入專案名稱、路徑和程式語言​

2.

開始審計：系統自動掃描程式碼、呼叫AI分析、生成報告​

3.

檢視報告：包含漏洞統計、詳情列表、嚴重程度分佈和修復建議​

4.5 MonkeyCode AI Scanner​

簡介：線上程式碼審計平臺，提供Web介面操作。​

使用方式：​

1.

訪問官方網站註冊賬號​

2.

上傳或匯入程式碼倉庫​

3.

選擇審計規則​

4.

等待審計結果​

5.

檢視漏洞報告​

4.6 其他工具​

4.6.1 DeepSec​

專案地址：[https://github.com/vercel-labs/deepsec](https://github.com/vercel-labs/deepsec)（2200+ Star）​

安裝與使用：​

​

Code block​

Bash

npx deepsec init​

cd .deepsec​

pnpm install​

​

4.6.2 AIxVuln​

專案地址：[https://github.com/m4xxxxx/AIxVuln](https://github.com/m4xxxxx/AIxVuln)（149 Star）​

下載地址：​

​

Code block​

Plain Text

https://github.com/m4xxxxx/AIxVuln/releases/download/v1.3/AIxVuln-web-linux-amd64.tar.gz​

​

安裝與使用：​

​

Code block​

Bash

tar -xzf AIxVuln-web-linux-amd64.tar.gz​

./AIxVuln-web​

\# 訪問Web介面：http://localhost:8080​

​

4.6.3 CodeScan​

專案地址：[https://github.com/Ernket/CodeScan](https://github.com/Ernket/CodeScan)​

特點：​

•

多語言支援​

•

AI驅動的漏洞檢測​

•

視覺化報告​

4.7 工具對比​

​



| 工具 | 部署方式 | 語言支援 | AI能力 | 易用性 | 推薦度 |
| --- | --- | --- | --- | --- | --- |
| Trae | 本地IDE外掛 | 多語言 | 強 | 高 | ★★★★★ |
| Claude Skill | 本地部署 | 9種 | 強 | 中 | ★★★★☆ |
| DeepAudit | Docker部署 | 多語言 | 強 | 高 | ★★★★☆ |
| MonkeyCode | 線上 | 多語言 | 中 | 高 | ★★★☆☆ |
| DeepSec | 本地命令列 | 多語言 | 中 | 中 | ★★★☆☆ |
| AIxVuln | 本地部署 | 多語言 | 中 | 中 | ★★★☆☆ |



​

​

​

五、CI/CD整合​

5.1 整合思路​

將AI程式碼審計整合到CI/CD流程中，實現程式碼提交時的自動化安全檢查：​

​

Code block​

Plain Text

┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐​

│ 程式碼提交 │ -> │ CI流水線 │ -> │ AI程式碼審計 │ -> │ 部署/回滾 │​

│ (Git Push) │ │ (GitHub │ │ (DeepSec/ │ │ │​

│ │ │ Actions) │ │ Semgrep) │ │ │​

​

5.2 GitHub Actions整合示例​

​

Code block​

YAML

​

5.3 GitLab CI整合示例​

​

Code block​

YAML

​

​

​

六、實戰演練：Tmall\_demo審計​

6.1 審計準備​

​

Code block​

Bash

git clone https://gitee.com/project\_team/Tmall\_demo.git​

cd Tmall\_demo​

find . -name "\*.java" | head -20​

​

6.2 配置檔案分析​

目標檔案：src/main/resources/application.yml​

​

Code block​

YAML

server:​

port: 8080​

​

spring:​

datasource:​

url: jdbc:mysql://localhost:3306/tmall?useSSL=false​

username: root​

password: password​

driver-class-name: com.mysql.cj.jdbc.Driver​

​

審計結果：​

​



| 專案 | 內容 |
| --- | --- |
| 漏洞型別 | 敏感資訊洩露 |
| 漏洞位置 | application.yml |
| 漏洞描述 | 資料庫密碼明文儲存在配置檔案中 |
| 風險等級 | 中 |
| 修復建議 | 使用環境變數或配置中心管理敏感資訊 |



​

修復方案：​

​

Code block​

YAML

spring:​

datasource:​

username: ${DB\_USERNAME:root}​

password: ${DB\_PASSWORD:password}​

​

6.3 Controller層審計​

目的碼：​

​

Code block​

Java

@RequestMapping("/register")​

public String register(User user) {​

String sql \= "INSERT INTO users (username, password, email) VALUES ('" ​

\+ user.getUsername() + "', '" ​

\+ user.getPassword() + "', '" ​

​

審計結果：​

​



| 專案 | 內容 |
| --- | --- |
| 漏洞型別 | SQL隱碼攻擊 |
| 漏洞位置 | UserController.java:35 |
| 漏洞描述 | INSERT語句使用字串拼接，存在注入風險 |
| 風險等級 | 高 |
| 修復建議 | 使用引數化查詢 |



​

修復程式碼：​

​

Code block​

Java

String sql \= "INSERT INTO users (username, password, email) VALUES (?, ?, ?)";​

jdbcTemplate.update(sql, user.getUsername(), user.getPassword(), user.getEmail());​

​

6.4 檔案上傳功能審計​

目的碼：​

​

Code block​

Java

​

審計結果：​

​



| 專案 | 內容 |
| --- | --- |
| 漏洞型別 | 路徑遍歷、檔案上傳漏洞 |
| 漏洞位置 | FileController.java:20 |
| 漏洞描述 | 未驗證副檔名，可能上傳惡意檔案；未對檔名進行過濾，存在路徑遍歷風險 |
| 風險等級 | 高 |



​

修復建議：​

1.

限制允許上傳的檔案型別​

2.

對檔名進行安全處理​

3.

使用隨機生成的檔名​

修復程式碼：​

​

Code block​

Java

@RequestMapping("/upload")​

​

6.5 審計報告​

漏洞統計​

​



| 嚴重程度 | 數量 | 型別 |
| --- | --- | --- |
| 高危 | 3 | SQL隱碼攻擊×2、檔案上傳 |
| 中危 | 2 | 敏感資訊洩露、弱密碼策略 |
| 低危 | 5 | 日誌資訊洩露、未授權訪問等 |



​

修復優先順序​

1.

立即修復：SQL隱碼攻擊漏洞、檔案上傳漏洞​

2.

儘快修復：敏感資訊洩露、弱密碼策略​

3.

計劃修復：其他低危漏洞​

​

​

七、總結與展望​

7.1 AI程式碼審計的價值​

​



| 價值維度 | 說明 |
| --- | --- |
| 效率提升 | 自動化分析，減少人工工作量 |
| 覆蓋範圍 | 能夠發現人工難以發現的漏洞 |
| 學習能力 | 能夠學習最新的漏洞型別 |
| 成本降低 | 減少安全審計的人力成本 |



​

7.2 AI程式碼審計的侷限性​

​



| 侷限性 | 說明 |
| --- | --- |
| 誤報問題 | AI可能產生誤報，需要人工驗證 |
| 深度限制 | 對於複雜業務邏輯，AI理解能力有限 |
| 上下文依賴 | 需要提供足夠的上下文資訊 |
| 資料隱私 | 上傳程式碼到雲端可能存在隱私風險 |



​

7.3 未來發展方向​

1.

多模態程式碼分析：結合程式碼、文件、測試用例進行綜合分析​

2.

實時審計：在開發過程中實時提供安全建議​

3.

漏洞修復自動化：AI自動生成修復程式碼​

4.

安全知識庫整合：結合最新的安全知識庫進行分析​

5.

邊緣部署：支援本地部署，保護程式碼隱私​

​

​

實踐任務​

1.

使用Trae對Tmall\_demo專案進行完整審計，輸出審計報告​

2.

部署DeepAudit，配置DeepSeek模型，對專案進行審計​

3.

嘗試使用DeepSec對專案進行CI/CD整合​

4.

對比不同工具的審計結果，分析各自優缺點​

​

​

版權資訊：八方網域-無涯​