{"schema":"threatline.record/2","record":{"id":"CVE-2026-48100","aliases":["GHSA-fhxc-63vg-9gwr"],"summary":"Payy: agg_agg trailing message slots are unconstrained and allow forged burn messages","details":"Payy is an Ethereum L2 zk-rollup for privacy preserving and regulatory compliant transactions. Prior to version 1.3.0, agg_agg forwards the compacted message stream from its inner proofs into a public messages: [Field; 1000] array, but it never checks that the unused tail of the outer array is zero. A registered prover can build a valid agg_final proof for an approved rollup block while inserting an extra burn message after the real messages. RollupV1.verifyRollup() then parses that public input as a normal burn and transfers USDC from the rollup contract to the attacker. This is a severe circuit soundness failure: the proof system accepts a public statement whose messages array is not fully derived from the verified inner proofs. On the current deployment, verifyRollup() is restricted to the existing allowlisted prover, so a fresh public caller cannot submit the invalid proof directly. That gate limits who can reach L1 today; it does not make the circuit statement sound. The issue becomes permissionless under the prover model described in the Payy whitepaper. Section 3.3.2 states: \"To join as a prover, the prover is required to submit a small stake\", and Section 3.3.1 states that if a prover fails to submit, \"other nodes can submit the block proof instead.\" In that model, an attacker only needs to become a registered prover and use public validator approval data for an already approved block. This issue has been patched in version 1.3.0.","categories":["Unclassified"],"product":"payy","vendor":"polybase","ecosystem":null,"affected_ranges":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-48100","source_modified_at":"2026-09-28T17:27:18.467Z","fetched_at":"2026-10-23T18:52:38.922436Z","product":"payy","vendor":"polybase","versions":[{"version":"< 1.3.0","status":"affected"}],"defaultStatus":null}],"fixed_versions":[],"cvss":8.7,"severity":"High","kev":{"listed":false},"epss":{"probability":0.0018,"percentile":0.07225,"score_date":"2026-10-23"},"published_at":"2026-09-28T16:43:06.401Z","modified_at":"2026-09-28T17:27:18.467Z","provenance":[{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-48100","fetched_at":"2026-10-23T18:52:38.922436Z","source_modified_at":"2026-09-28T17:27:18.467Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-48100","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["CVE List","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/polybase/payy/security/advisories/GHSA-fhxc-63vg-9gwr","tags":["exploit"]}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","cvss_source":"CVE List","ssvc":{"exploitation":"poc","automatable":"yes","technical_impact":"partial","assessed_at":"2026-09-28T17:20:42.562536Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":null,"confidence":"unknown","reviewed":false},"change_timestamp":"2026-09-28T17:27:18.467Z","content_hash":"e716be160271f12b60487f44c45ae3ee6b3e9c787963c794b5db139d71fbcd7d"}}
