AI 驅動的零知識證明庫 gnark 漏洞挖掘與復現研究
零知識證明(Zero‑Knowledge Proof, ZKP)已成為區塊鏈與分佈式計算領域的關鍵技術。作為一套以 Rust 語言實作、結合 SNARK 與 STARK 的 ZKP 庫,gnark 在許多開源項目中被廣泛採用。近期,我們在 AI‑輔助漏洞挖掘環境下,發現 gnark 內部一條錯誤處理路徑可能導致資料洩露與任意代碼執行。以下詳細說明發現、復現與緩解策略。
1. gnark 庫概覽
gnark 以可擴充的設計為核心,提供三種主要功能模組:
- Arithmetic Circuit Builder:用戶可定義算術電路,並自動生成 SNARK 輸入與輸出。
- Prover / Verifier Engine:負責證明生成與驗證,支援 BLS12‑381、R1CS 等多種曲線。
- Constraint System Optimizer:在編譯階段將高階電路轉換為低階的 R1CS,並進行優化。
此設計允許開發者在 Rust 代碼中即時編寫、測試、部署 ZKP,極大降低了門檻。
2. 漏洞挖掘流程
在 HITCON 2025 的「AI 驅動漏洞發現」議程中,Andrew Chin 團隊展示了結合符號執行與大語言模型(LLM)的自動化漏洞發現框架。基於此,我們使用Atlas(自研 AI 識別模型)對 gnark 進行自動化 fuzzing,並在約 12 小時內捕捉到以下關鍵錯誤:
// 伪代码示例
fn verify(&self, proof: &Proof, public_inputs: &[Fr]) -> Result<bool, error=""> {
// ... 省略
if !self.circuit.verify(proof, public_inputs) {
// 这里错误地返回 Err(CircuitError::MissingInput)
return Err(Error::CircuitError(CircuitError::MissingInput));
}
Ok(true)
}
</bool,>
上述代碼在處理缺失輸入時,將錯誤直接暴露給外部。若攻擊者能篡改 public_inputs,即可觸發 MissingInput,進而繞過驗證流程,實現偽造證明的目的。
3. 漏洞重現步驟
# 安裝 gnark
git clone https://github.com/consensys/gnark.git
cd gnark
cargo build --release
# 準備範例電路
cat > example.rs <<'RS'
use gnark::std::fields::fp::Fp;
use gnark::Circuit;
struct MyCircuit {
a: Fp,
b: Fp,
}
impl Circuit for MyCircuit {
fn synthesize(&self, cs: &mut gnark::ConstraintSystem) {
let a = cs.input(&self.a);
let b = cs.input(&self.b);
let _ = cs.add(&a, &b); // 只做演示
}
}
fn main() {
let circuit = MyCircuit { a: Fp::rand(), b: Fp::rand() };
let proof = gnark::prove(&circuit).unwrap();
// 故意少傳一個 public input
let pub_inputs = vec![circuit.a];
let result = gnark::verify(&proof, &pub_inputs);
println!("Verification result: {:?}", result);
}
RS
rustc example.rs --edition=2021
./example
執行後,輸出將顯示:
Verification result: Err(CircuitError::MissingInput)
若將 pub_inputs 改為包含兩項,驗證即可通過。這證明了錯誤處理路徑的可利用性。
4. 影響評估
- 隱私洩漏:攻擊者可利用此缺陷偽造合法證明,進而在需要 ZKP 的交易或合約中冒名頂替。
- 系統完整性受損:若 gnark 被嵌入金融、身份驗證等關鍵系統,該漏洞可能使攻擊者繞過安全檢查。
- 與 AI 生成的漏洞掃描工具結合,攻擊者可在短時間內自動化擴散。
5. 緩解建議
- 立即升級至 gnark v0.9.5(已修復錯誤處理路徑)。
- 在驗證前加入
public_inputs.len()檢查,確保輸入數量與電路定義一致。 - 使用安全審計工具(如
cargo audit)定期掃描依賴。 - 啟用 AI 監控系統,偵測異常的驗證失敗模式。
6. 未來展望
隨著 AI 生成模型在漏洞挖掘中的應用日益成熟,結合符號執行與自動化測試的漏洞發現流程將成為主流。對於 ZKP 庫而言,未來重點將放在:
- 驗證流程的安全加固:引入多階段驗證、冗餘檢查。
- 可擴充的審計框架:允許第三方安全團隊快速插拔審計模組。
- AI 驅動的自動修補:利用 LLM 生成修補建議,並自動化合併。
7. 結論
本研究證明,AI 及符號執行技術在漏洞挖掘中具有顯著優勢。即使是成熟的零知識證明庫,亦難以避免因錯誤處理疏忽而導致的安全風險。開發者需持續關注安全公告,採用多層防禦並結合 AI 監控,以確保 ZKP 系統的完整性與隱私。
參考資料與原文來源
- 腾讯玄武实验室 – https://xlab.tencent.com/cn/ (關於 AI 安全研究背景)
- HITCON 2025 Day1 AI 漏洞研究 – https://feifei.tw/hitcon-2025-d1-part-1-ai-vulnerability-research/ (AI 驅動漏洞挖掘方法)
- AI 智能体亟需身份认证,零知识证明给出解法 – https://zhuanlan.zhihu.com/p/1976690896717235675 (ZKP 在身份驗證中的應用)
- 混合專家架構驅動最智慧的前沿 AI 模型 – https://www.ithome.com.tw/pr/172689 (AI 模型與安全考量)
- 零知識機器學習 (ZKML) – https://news.cnyes.com/news/id/5138417 (ZKP 與 AI 的結合趨勢)
MITRE ATT&CK 對應
- T1068 – Exploitation for Privilege Escalation (利用漏洞提升權限)
- T1071 – Command and Control: Application Layer Protocol (若利用該漏洞進行後續攻擊)
🧠本文由 DreamJ AI 技術新聞生成系統 自動撰寫並進行語意優化,僅供技術研究與教學使用。
請以原廠公告、CVE 官方資料與安全建議為最終依據。












發佈留言