Skip to content

πŸ›‘οΈ Sentinel: [CRITICAL] Fix RCE vulnerability in PDF compilation#310

Open
anchapin wants to merge 1 commit into
mainfrom
sentinel-pdf-rce-fix-799660862591101811
Open

πŸ›‘οΈ Sentinel: [CRITICAL] Fix RCE vulnerability in PDF compilation#310
anchapin wants to merge 1 commit into
mainfrom
sentinel-pdf-rce-fix-799660862591101811

Conversation

@anchapin
Copy link
Copy Markdown
Owner

🚨 Severity: CRITICAL
πŸ’‘ Vulnerability: Arbitrary Code Execution (RCE) / Command Injection via LaTeX. pdflatex and pandoc were being called in cli/pdf/converter.py and cli/generators/cover_letter_generator.py without the -no-shell-escape flag.
🎯 Impact: If user input is injected into the .tex file without being properly escaped, an attacker could use the \write18 command to execute arbitrary shell commands on the host machine. The lack of a timeout also exposed the application to Denial of Service (DoS) attacks via infinite compilation loops.
πŸ”§ Fix: Added the -no-shell-escape flag to pdflatex and --pdf-engine-opt=-no-shell-escape to pandoc subprocess calls. Added a timeout=30 to process.communicate() with proper exception handling to kill the process and clean up resources if it hangs.
βœ… Verification: Verified by reviewing the subprocess calls in the modified files and running the test suite (tests/test_pdf_security.py).


PR created automatically by Jules for task 799660862591101811 started by @anchapin

Added `-no-shell-escape` flag to `pdflatex` and `--pdf-engine-opt=-no-shell-escape` to `pandoc` in `cli/pdf/converter.py` and `cli/generators/cover_letter_generator.py`. This prevents arbitrary code execution vulnerabilities during PDF generation.
Also added a `timeout=30` to `subprocess.communicate()` to prevent infinite loops and potential DoS attacks.

Co-authored-by: anchapin <6326294+anchapin@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown
Contributor

πŸ‘‹ 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 @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Copy link
Copy Markdown

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @anchapin, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

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.

1 participant