Skip to content

Comments

🛡️ Sentinel: [CRITICAL] Fix LaTeX injection in Cover Letter Generator#141

Merged
anchapin merged 2 commits intomainfrom
sentinel/fix-cover-letter-latex-injection-5353573970625624386
Feb 19, 2026
Merged

🛡️ Sentinel: [CRITICAL] Fix LaTeX injection in Cover Letter Generator#141
anchapin merged 2 commits intomainfrom
sentinel/fix-cover-letter-latex-injection-5353573970625624386

Conversation

@anchapin
Copy link
Owner

This PR fixes a critical LaTeX injection vulnerability in the Cover Letter Generator. Previously, user input (e.g., company name) was rendered into LaTeX templates using a standard Jinja2 environment, allowing malicious LaTeX commands (like \input{...}) to be executed during PDF compilation.

Changes:

  • Modified cli/generators/cover_letter_generator.py to use get_jinja_tex_env, which includes a finalize hook that automatically escapes all variable output using latex_escape.
  • Updated cli/utils/template_utils.py to add datetime.now (aliased as now) to the tex_env globals, as it was missing and caused a regression in templates that use {{ now() }}.
  • Added tests/test_cover_letter_security.py to verify the fix and prevent regression.
  • Documented the vulnerability and fix in .jules/sentinel.md.

Verification:

  • Ran reproduce_issue.py (created during investigation) which confirmed the fix.
  • Ran existing tests (pytest) to ensure no regressions.

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

- Introduce `get_jinja_tex_env` to `CoverLetterGenerator` to enforce auto-escaping of LaTeX special characters.
- Add `now` global to `tex_env` in `template_utils.py` to fix regression.
- Add regression test `tests/test_cover_letter_security.py`.
- Add journal entry to `.jules/sentinel.md`.

Co-authored-by: anchapin <6326294+anchapin@users.noreply.github.com>
@google-labs-jules
Copy link
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

@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

- Remove unused `pathlib.Path` import.
- Sort imports to satisfy `isort`.

Co-authored-by: anchapin <6326294+anchapin@users.noreply.github.com>
@anchapin anchapin merged commit b5dd519 into main Feb 19, 2026
18 checks passed
@anchapin anchapin deleted the sentinel/fix-cover-letter-latex-injection-5353573970625624386 branch February 19, 2026 01:27
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