{"id":"CVE-2025-24802","state":"PUBLISHED","title":"Soundness issue with Plonky2 look up tables","description":"Plonky2 is a SNARK implementation based on techniques from PLONK and FRI. Lookup tables, whose length is not divisible by 26 = floor(num_routed_wires / 3) always include the 0 -> 0 input-output pair. Thus a malicious prover can always prove that f(0) = 0 for any lookup table f (unless its length happens to be divisible by 26). The cause of problem is that the LookupTableGate-s are padded with zeros. A workaround from the user side is to extend the table (by repeating some entries) so that its length becomes divisible by 26. This vulnerability is fixed in 1.0.1.","publishedAt":"2025-01-30T19:20:14.250Z","updatedAt":"2025-01-30T19:55:17.620Z","severity":{"score":8.6,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["0xPolygonZero plonky2"],"affected":[{"vendor":"0xPolygonZero","product":"plonky2","versions":[{"version":"= 1.0.0","status":"affected"}]}],"references":["https://github.com/0xPolygonZero/plonky2/security/advisories/GHSA-hj49-h7fq-px5h","https://github.com/0xPolygonZero/plonky2/commit/091047f7f10cae082716f3738ad59a583835f7b6","https://github.com/0xPolygonZero/plonky2/blob/main/plonky2/src/plonk/prover.rs#L97"],"weaknesses":["CWE-1240"],"ingestedAt":"2026-10-29T20:08:47.682Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2025/24xxx/CVE-2025-24802.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.1","cveMetadata":{"cveId":"CVE-2025-24802","state":"PUBLISHED","datePublished":"2025-01-30T19:20:14.250Z","dateUpdated":"2025-01-30T19:55:17.620Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2025-01-23T17:11:35.838Z"},"containers":{"cna":{"title":"Soundness issue with Plonky2 look up tables","descriptions":[{"lang":"en","value":"Plonky2 is a SNARK implementation based on techniques from PLONK and FRI. Lookup tables, whose length is not divisible by 26 = floor(num_routed_wires / 3) always include the 0 -> 0 input-output pair. Thus a malicious prover can always prove that f(0) = 0 for any lookup table f (unless its length happens to be divisible by 26). The cause of problem is that the LookupTableGate-s are padded with zeros. A workaround from the user side is to extend the table (by repeating some entries) so that its length becomes divisible by 26. This vulnerability is fixed in 1.0.1."}],"affected":[{"vendor":"0xPolygonZero","product":"plonky2","versions":[{"version":"= 1.0.0","status":"affected"}]}],"references":[{"url":"https://github.com/0xPolygonZero/plonky2/security/advisories/GHSA-hj49-h7fq-px5h","name":"https://github.com/0xPolygonZero/plonky2/security/advisories/GHSA-hj49-h7fq-px5h","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/0xPolygonZero/plonky2/commit/091047f7f10cae082716f3738ad59a583835f7b6","name":"https://github.com/0xPolygonZero/plonky2/commit/091047f7f10cae082716f3738ad59a583835f7b6","tags":["x_refsource_MISC"]},{"url":"https://github.com/0xPolygonZero/plonky2/blob/main/plonky2/src/plonk/prover.rs#L97","name":"https://github.com/0xPolygonZero/plonky2/blob/main/plonky2/src/plonk/prover.rs#L97","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":8.6,"baseSeverity":"HIGH","confidentialityImpact":"NONE","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"CHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-1240","lang":"en","description":"CWE-1240: Use of a Cryptographic Primitive with a Risky Implementation","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2025-01-30T19:20:14.250Z"},"source":{"advisory":"GHSA-hj49-h7fq-px5h","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2025-01-30T19:54:59.096334Z","id":"CVE-2025-24802","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2025-01-30T19:55:17.620Z"}}]}}}