Paper 2023/190

Practical Security Analysis of Zero-Knowledge Proof Circuits

Hongbo Wen, University of California, Santa Barbara
Jon Stephens, The University of Texas at Austin
Yanju Chen, University of California, Santa Barbara
Kostas Ferles, Veridise
Shankara Pailoor, The University of Texas at Austin
Kyle Charbonnet, Ethereum Foundation
Isil Dillig, University of Texas Austin, Veridise
Yu Feng, University of California, Santa Barbara, Veridise

As privacy-sensitive applications based on zero-knowledge proofs (ZKPs) gain increasing traction, there is a pressing need to detect vulnerabilities in ZKP circuits. This paper studies common vulnerabilities in Circom (the most popular domain-specific language for ZKP circuits) and describes a static analysis framework for detecting these vulnerabilities. Our technique operates over an abstraction called the circuit dependence graph (CDG) that captures key properties of the circuit and allows expressing semantic vulnerability patterns as queries over the CDG abstraction. We have implemented 9 different detectors using this framework and perform an experimental evaluation on over 258 circuits from popular Circom projects on Github. According to our evaluation, these detectors can identify vulnerabilities, including previously unknown ones, with high precision and recall.

Available format(s)
Publication info
Security AnalysisZero-Knowledge Proof CircuitsVulnerability Detection
Contact author(s)
hongbowen @ ucsb edu
jon @ cs utexas edu
yanju @ cs ucsb edu
kostas @ veridise com
spailoor @ cs utexas edu
kylecharbonnet @ gmail com
isil @ cs utexas edu
yufeng @ cs ucsb edu
2023-02-15: last of 2 revisions
2023-02-13: received
See all versions
Short URL
Creative Commons Attribution


      author = {Hongbo Wen and Jon Stephens and Yanju Chen and Kostas Ferles and Shankara Pailoor and Kyle Charbonnet and Isil Dillig and Yu Feng},
      title = {Practical Security Analysis of Zero-Knowledge Proof Circuits},
      howpublished = {Cryptology ePrint Archive, Paper 2023/190},
      year = {2023},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.