π‘οΈ Sentinel: [HIGH] Fix XSS vulnerability in email previews - #354
π‘οΈ Sentinel: [HIGH] Fix XSS vulnerability in email previews#354brycejohnson1417 wants to merge 1 commit into
Conversation
Co-authored-by: brycejohnson1417 <257422776+brycejohnson1417@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. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
π¨ Severity: HIGH
π‘ Vulnerability: The
PppSavingsPanelcomponent usesdangerouslySetInnerHTMLto render email previews. Even withDOMPurify.sanitize, displaying external HTML directly into the DOM can pose XSS risks and styling leakage.π― Impact: Attackers could potentially inject malicious scripts or CSS that execute in the context of the main application, leading to session hijacking, data theft, or defacement.
π§ Fix: Replaced
dangerouslySetInnerHTMLwith a sandboxed<iframe>using thesrcDocattribute andsandbox="allow-popups allow-popups-to-escape-sandbox". This creates an isolated browsing context, preventing script execution and CSS leakage while allowing legitimate link clicks. Inline CSS was injected into thesrcDocto maintain the original styling.β Verification: Verified locally by running static checks (
npm run lint,npm run typecheck), Playwright browser tests, and visually inspecting the email preview rendering in the local development server.PR created automatically by Jules for task 13632711383386383544 started by @brycejohnson1417