feat(security): add timeout to PDF compilation subprocesses#144
feat(security): add timeout to PDF compilation subprocesses#144
Conversation
Add a 30-second timeout to `pdflatex` and `pandoc` subprocess calls in `TemplateGenerator` to prevent indefinite hanging (DoS risk). Explicitly set `shell=False` for security. Added `tests/test_template_generator_security.py` to verify the fix. Co-authored-by: anchapin <6326294+anchapin@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
Add a 30-second timeout to `pdflatex` and `pandoc` subprocess calls in `TemplateGenerator` to prevent indefinite hanging (DoS risk). Explicitly set `shell=False` for security. Added `tests/test_template_generator_security.py` to verify the fix and ensured it is formatted with black. Co-authored-by: anchapin <6326294+anchapin@users.noreply.github.com>
Add a 30-second timeout to `pdflatex` and `pandoc` subprocess calls in `TemplateGenerator` to prevent indefinite hanging (DoS risk). Explicitly set `shell=False` for security. Added `tests/test_template_generator_security.py` to verify the fix and ensured it complies with black, isort, and ruff formatting standards. Co-authored-by: anchapin <6326294+anchapin@users.noreply.github.com>
🛡️ Sentinel: [MEDIUM] Add timeout to PDF compilation to prevent DoS
Vulnerability:
The
pdflatexandpandoccommands were executed usingsubprocess.Popen().communicate()without a timeout. In certain scenarios (e.g., waiting for user input, infinite loops in TeX), this could cause the process to hang indefinitely, leading to a Denial of Service (DoS) condition.Fix:
timeout=30toprocess.communicate()calls incli/generators/template.py.shell=Falsetosubprocess.Popencalls for explicit security.subprocess.TimeoutExpiredto kill the process and raise a descriptiveRuntimeError.Verification:
tests/test_template_generator_security.pywhich mockssubprocess.Popento simulate a timeout and verifies that the process is killed and the correct exception is raised.PR created automatically by Jules for task 11471057020964618685 started by @anchapin