| Version | Supported |
|---|---|
| 0.1.x | ✅ |
| < 0.1 | ❌ |
tmaudit is a local-only audit tool that reads your LaTeX
source files and reports findings. It does not:
- Make network requests.
- Read files outside the directories you specify.
- Execute the audited LaTeX (compile is a separate opt-in step that requires explicit user confirmation).
Because of this limited attack surface, the security risk
profile is lower than for a typical CLI tool. However, the
audit logic itself is security-sensitive: a bug that causes
tmaudit to silently miss a finding is effectively a way to
hide a real paper bug from the author. We treat such bugs
as security issues and follow the disclosure process below.
Please do NOT file a public issue for security vulnerabilities.
Use one of these private channels:
- GitHub Security Advisories (preferred): github.com/aidless/tmaudit/security/advisories/new
- Email: security@tmaudit.example (PGP key in
.gpg/if you need it; this is a placeholder address for the template repo).
Please include:
- A description of the vulnerability and its impact.
- A minimal reproduction (paper directory + command).
- The
tmauditversion, Python version, and OS. - Whether you are willing to be credited in the advisory.
| Stage | Time |
|---|---|
| Acknowledgement | within 3 business days |
| Triage & impact assessment | within 7 business days |
| Patch & advisory draft | within 30 days for high-severity, 90 days for low |
| Public disclosure | coordinated with the reporter |
- Audit bypass: a way to make
tmauditreport 0 findings on a paper that actually has a C1..C6 violation. (This is why the meta-test in_check_all_regressions.pyexists.) - Path traversal: a way to make
tmauditread files outside the paper directory. - Code execution: a way to make
tmauditexecute arbitrary code via a malicious.texor.bibfile. - Information disclosure: a way to leak the user's file
system layout (e.g.,
/home/userpath) in the audit output. - Dependency vulnerability: a known CVE in a runtime
dependency (e.g.,
pyyaml,regex).
- A false positive in the audit (the audit reports a finding where there is no real bug). File a regular bug report.
- A paper that fails the audit. Edit your paper; do not open a security advisory.
- A feature request for a new audit category. Use the feature request template.
The following items have security implications; please review them before deployment:
| File | What to check |
|---|---|
src/tmaudit/forge.py |
The substitution engine must not allow arbitrary code injection via LaTeX content. |
src/tmaudit/cli.py |
Path arguments must be validated to prevent traversal (.. segments). |
pyproject.toml |
Pin dependency versions; do not use floating specifiers like >= 2.0. |
tmaudit.pyz |
Rebuild from source after any change to src/tmaudit/; do not distribute a stale .pyz. |
We thank the following reporters (alphabetical by GitHub username; updated after each disclosure):