CVE-2024-45040 in gnark
Zusammenfassung
von VulDB • 04.06.2026
gnark ist eine schnelle zk-SNARK-Bibliothek, die eine High-Level-API zum Entwerfen von Schaltungen bietet. Vor Version 0.11.0 bricht die Implementierung von Commitments zu privaten Zeugen in Groth16 das Zero-Knowledge-Prinzip (Zero-Knowledge-Eigenschaft). Die Schwachstelle betrifft nur Groth16-Beweise mit Commitments. Insbesondere PLONK-Beweise sind nicht betroffen.
Die Schwachstelle beeinträchtigt die Zero-Knowledge-Eigenschaft der Beweise: Wenn die Zeugenwerte (geheim oder intern) klein sind, kann ein Angreifer möglicherweise alle möglichen Kombinationen aufzählen, um den tatsächlichen Wert abzuleiten. Sind die möglichen Werte für die zu commitenden Variablen groß oder werden viele Werte committed, ist es rechnerisch nicht durchführbar, alle gültigen Möglichkeiten aufzulisten. Die Vollständigkeit (Completeness) und Korrektheit (Soundness) der Beweise wird dadurch jedoch nicht beeinträchtigt.
Die Schwachstelle wurde in Version 0.11.0 behoben. Der Patch zur Behebung des Problems besteht darin, zum Zeitpunkt der Beweisgenerierung einen zusätzlichen randomisierten Wert zur Liste der commiteten Werte hinzuzufügen, um die übrigen committeden Werte zu maskieren. Als Workaround kann der Benutzer manuell ein Commitment für einen randomisierten Wert erstellen.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.