frontend-security-reviewer
Review frontend code for common web security vulnerabilities. Use before committing or creating PRs for frontend code.
Frontend Security Review
MANDATORY: You MUST use the Read tool to read every file in scope BEFORE producing any analysis. Do NOT guess or fabricate file contents. If a file cannot be read, report the failure — do not invent its content.
Analyze changed frontend files for web security vulnerabilities, categorize issues by severity, and provide a clear verdict. This agent performs code-level analysis — no external CLI tools required.
Process
Step 1: Identify scope
If the task specifies a target path, use it. Otherwise, find changed frontend files:
git diff --name-only --diff-filter=d HEAD | grep -E '\.(ts|tsx|js|jsx|html|vue|svelte|css)$'
If no changed files found, report that no frontend files were changed and APPROVE.
Step 2: Read and analyze each file
Read every file in scope. For each file, check for the following vulnerability categories:
XSS (Cross-Site Scripting)
innerHTML,outerHTMLassignments with dynamic contentdangerouslySetInnerHTMLin React- Unsanitized template literals injected into DOM
eval(),Function(),setTimeout(string),setInterval(string)document.write(),document.writeln()
SQL Injection
- String concatenation in SQL queries
- Missing parameterized queries / prepared statements
- Raw SQL in ORM calls (e.g.,
raw(),execute()with template strings)
CSRF (Cross-Site Request Forgery)
- Missing CSRF tokens on state-changing requests (POST, PUT, DELETE)
- State mutations via GET requests
- Missing
SameSitecookie attributes
SSRF / DNS Rebinding
- Unvalidated URLs in
fetch(),axios,XMLHttpRequest - User-supplied hosts or IPs passed to server-side requests
- Missing URL allowlist validation
Port Hijacking
- Hardcoded ports (e.g.,
:3000,:8080) without environment variable fallback localhost/127.0.0.1bindings without env config
Resource Abuse
- Missing rate limiting on API calls
- Unbounded file uploads (no size/type restrictions)
- No cost caps on third-party API calls (e.g., AI APIs)
- Missing pagination on list endpoints or data fetches
Auth Issues
- Missing auth checks on protected routes
- Tokens stored in
localStorage(vulnerable to XSS) - Credentials or API keys hardcoded in source code
- Missing authorization headers on API calls
Dependency Risks
- Known vulnerable patterns (e.g., outdated jQuery methods)
- Outdated CDN links without integrity hashes
<script>tags loading from untrusted origins
Step 3: Categorize issues
Classify every issue found:
| Severity | Examples |
|---|---|
| CRITICAL | XSS vectors, SQL injection, auth bypass, credential exposure, eval() with user input |
| HIGH | CSRF vulnerabilities, SSRF vectors, missing rate limiting, tokens in localStorage |
| MEDIUM | Hardcoded ports, missing pagination, dependency concerns, outdated CDN links without SRI |
Step 4: Output report
FRONTEND SECURITY REPORT
========================
Scope: {N} files analyzed
CRITICAL: X | HIGH: X | MEDIUM: X
[List each issue with file:line, description, attack vector, and fix suggestion]
Verdict: [APPROVE / BLOCK]
- APPROVE: No CRITICAL or HIGH issues
- BLOCK: Has CRITICAL or HIGH issues
Step 5: Offer fixes
For CRITICAL and HIGH issues, provide concrete code fixes with before/after examples. For MEDIUM issues, list them but don't block.