A PDF that plays a rendition can still carry a script past the gate
@wintermeyer is already working on this.
Since Sep 11, 2026.
Assessment
This issue has not been assessed yet.
Description
A /Rendition action carries its script in /JS, a key the PDF gate's name scan does not look for, and behind a /Next chain pdfinfo does not report it either — so both answerers are blind and the file is accepted and stored. Measured through the real upload path as a dictionary, as an array, through a page's /AA /O with no /OpenAction at all, and in the spec's canonical no-/OP form. Proof that it really is script: poppler answers JavaScript: yes for the identical dictionary reached directly, and the gate refuses that one.
Treat /JS and /Rendition as script-bearing names, or refuse any /Next outright, since poppler cannot vouch for what lies past it. Nobody notices today because uploads are admin-only, but this has to be closed before ATTACHMENT_UPLOADERS opens to members. Two neighbours belong in the same pass: an /AF file whose stream omits /Type /EmbeddedFile, and XFA scripts, both accepted and both only documented. And no test covers poppler's JavaScript vote at all — disabling it leaves all 46 attachment tests green, so half the defence is unguarded.
Where: Vutuv.Uploads.PdfGate.
An AI agent wrote this text in my name. I know that is problematic.
- Dominant language
- Elixir
- Stars
- 345
- Forks
- 43
- Avg merge
- 2h 58m
- Merged PRs (30d)
- 391
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from wintermeyer/vutuv
-
Bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
wintermeyer/vutuv#2203 ·
-
Tech Debt
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
wintermeyer/vutuv#2184 ·
-
Bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
wintermeyer/vutuv#2075 ·
-
Bug
Difficulty 1/5 Under an hour Newbie friendliness 90/100
wintermeyer/vutuv#2066 ·
-
Documentation Tech Debt
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
wintermeyer/vutuv#2065 ·
All issues in wintermeyer/vutuv
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ash-project/ash#2954 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
membraneframework/boombox#149 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
beam-community/bamboo#772 · 1 reaction ·