This project is pre-1.0 and only the main branch receives fixes. There are no
maintained release branches.
Please do not open a public issue for a security report.
Use GitHub's private vulnerability reporting: go to the Security tab → Report a vulnerability. That opens a private advisory visible only to the maintainers, and it is the only supported channel.
Include what you have — the affected version or commit, what an attacker can do, and a reproduction if you have one. A report without a working exploit is still worth sending.
Expect an acknowledgement within a week. Fixes go to main first; if a release
is affected, the advisory is published alongside it.
scriptorium runs locally over files you supply. The parts worth attention:
- Untrusted PDFs. The pipeline shells out to
pdftoppm,pdftotextandpdfinfo(poppler),tesseract, and parses PDFs withpikepdf. A malicious document is handled by those dependencies, so a parser vulnerability is theirs to fix — report it upstream, and here if this project's use of them makes it reachable when it otherwise would not be. - Configuration is code-adjacent.
documents/*.yamlsupplies regular expressions that run against document text. A config from an untrusted source can cause catastrophic backtracking. Treat configs the way you would treat a script. - Nothing in this project talks to a network. Level 2 must make no network call
at all —
tests/test_levels.pyenforces that by breakingsocket, so a regression there is a bug worth reporting.
Out of scope: OCR inaccuracy. Wrong text is a correctness issue, tracked in public issues, and the whole design assumes engines make mistakes.