Home/區塊鏈 / 揭秘 gnark 零知識證明庫漏洞 (CVE-2025-57801):AI 輔助挖掘與風險剖析

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. 緩解建議

  1. 立即升級至 gnark v0.9.5(已修復錯誤處理路徑)。
  2. 在驗證前加入 public_inputs.len() 檢查,確保輸入數量與電路定義一致。
  3. 使用安全審計工具(如 cargo audit)定期掃描依賴。
  4. 啟用 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 官方資料與安全建議為最終依據。

揭秘 gnark 零知識證明庫漏洞 (CVE-2025-57801):AI 輔助挖掘與風險剖析

🧠 本文章與所附圖片部分內容為 AI 生成或 AI 輔助產製。文中提及之商標、品牌名稱、產品圖片及相關標識, 其著作權與商標權均屬原權利人所有,本網站僅作為資訊呈現與示意使用

最新文章

推薦文章

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

分析完成 ✔