Skip to content

Add advisory for ark-groth16 missing public input length check - #3410

Open
D33BaT0 wants to merge 2 commits into
rustsec:mainfrom
D33BaT0:main
Open

D33BaT0 wants to merge 2 commits into
rustsec:mainfrom
D33BaT0:main

Conversation

@D33BaT0

@D33BaT0 D33BaT0 commented Oct 20, 2026

Copy link
Copy Markdown

Affected crate(s)

  • ark-groth16 (1,274,253 recent downloads; 7,115,682 total; 0.6.0 itself: 164,388. crates.io, 2026-10-20)

Links to upstream issue(s) or PR(s)

This issue is the request to turn that report into an advisory:
#3404

Severity

The native verifier accepts a public-input slice of the wrong length instead of returning an error. Extra elements are ignored, so they are not bound by the proof. Missing elements are treated as zero. A caller that treats a successful verification as covering the whole slice can therefore
accept a statement the proof does not cover.

Callers that already check public_inputs.len() + 1 == vk.gamma_abc_g1.len() are unaffected. A proof still only attests to the statement it was created for; this is not a break of Groth16 soundness and it does not leak witness data. There is no fixed release (patched = []).

Truncation and zero-padding are the two directions of this one missing check, so this PR adds one advisory, not two.

Checklist

  • Advisory filename(s) starts with RUSTSEC-0000-0000 as the ID
  • date field is set to the public disclosure date
  • Contains a concise and descriptive title after advisory metadata
  • Asked maintainer(s) if publishing an advisory is appropriate
    (not checked: upstream was asked about the bug, not about publishing an advisory, and has not answered)

Document a security advisory for ark-groth16 regarding missing public input length check in the verifier. This advisory outlines the affected functions and versions, along with a detailed explanation of the issue and its implications.
Update the vulnerability description for Groth16 verifier to clarify the missing public input length check and its implications.
@djc

djc commented Oct 26, 2026

Copy link
Copy Markdown
Member

[ ] Asked maintainer(s) if publishing an advisory is appropriate
(not checked: upstream was asked about the bug, not about publishing an advisory, and has not answered)

For active maintainers, we defer to their judgement whether an advisory is appropriate; RustSec does not want to be a mechanism for bypassing maintainers.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants