# Java Frontend Audit

Java 源码前端安全类漏洞审计。当在 Java 白盒审计中需要检测前端安全漏洞时触发。 覆盖 5 类风险: XSS(JSP/Thymeleaf/FreeMarker...

- Repository: https://github.com/wgpsec/AboutSecurity (1833 stars)
- Category: Security
- License: see repository
- Last updated: 2026-10-24
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add wgpsec/AboutSecurity --skill java-frontend-audit -g -a claude-code -y`
Codex: `npx skills add wgpsec/AboutSecurity --skill java-frontend-audit -g -a codex -y`
Cursor: `npx skills add wgpsec/AboutSecurity --skill java-frontend-audit -g -a cursor -y`
Gemini CLI: `npx skills add wgpsec/AboutSecurity --skill java-frontend-audit -g -a gemini-cli -y`

## Description

Java 源码前端安全类漏洞审计。当在 Java 白盒审计中需要检测前端安全漏洞时触发。 覆盖 5 类风险: XSS(JSP/Thymeleaf/FreeMarker 输出转义)、CSRF(Spring Security/自定义 Token)、 开放重定向(sendRedirect/forward)、CRLF 注入(Header/Cookie)、Session 管理(固定/超时/并发)。 需要 java-audit-pipeline 提供的数据流证据。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Java 前端安全类漏洞源码审计
本 skill 聚焦源码层面判断"前端安全漏洞是否成立"，核心是验证用户输入在输出到 HTTP 响应（HTML/Header/Cookie/重定向）过程中的过滤与转义是否充分。构造 payload、绕 WAF 等运行时利用技术属于对应黑盒 exploit skill 范畴。

## 深入参考

- 5 类前端漏洞的危险模式 / 安全模式代码对比 / EVID 证据示例 -> [references/frontend-vuln-patterns.md](references/frontend-vuln-patterns.md)

---

## 5 类前端安全漏洞速查表

| 类型 | 典型 Sink | 危险模式 | 严重度 |
|------|-----------|----------|--------|
| XSS | JSP `<%= %>`, `th:utext`, `${var?no_esc}`, `out.println()` | 用户输入未经转义直接输出到 HTML/JS 上下文 | High-Medium |
| CSRF | 状态变更 POST/PUT/DELETE 接口 | `csrf().disable()` 或缺少 Token 校验的写操作端点 | High-Medium |
| 开放重定向 | `sendRedirect()`, `return "redirect:" + url` | 用户可控 URL 直接传入重定向函数 | Medium |
| CRLF 注入 | `setHeader()`, `addHeader()`, `addCookie()` | 用户输入未过滤 `\r\n` 直接写入 HTTP 头 | Medium-High |
| Session 管理 | `getSession()`, `Cookie` 构造, `session-timeout` | 登录后未重建 Session / Cookie 缺少安全属性 | Medium-High |

## 通用审计流程（4 步）

**Step 1 -- 确认 EVID 证据点**: 从 `java-audit-pipeline` Phase 3 产出的 EVID_* 证据中，筛选前端安全类条目（EVID_XSS_*、EVID_CSRF_*、EVID_REDIR_*、EVID_CRLF_*、EVID_SESSION_*）。没有 EVID 证据的 Sink 只能标"待验证"。

**Step 2 -- 判断过滤有效性**: 追踪 Source->Sink 路径上每一步过滤/转义操作，评估其对当前漏洞类型是否有效。常见陷阱: `<c:out>` 安全但 `<%= %>` 不转义、`th:text` 安全但 `th:utext` 不转义、URL 白名单可被 `//evil.com` 绕过。

**Step 3 -- 评估绕过可能性**: 过滤存在但不充分时，分析具体绕过路径（上下文切换、编码差异、URL 解析差异等）。能给出绕过思路则标"已确认"，否则标"待验证"并记录已知过滤方式。

**Step 4 -- 确定严重度**: 使用 `java-audit-pipeline` 的三维度评分公式 `Score = R*0.40 + I*0.35 + C*0.25`。XSS 存储型 I=2-3，反射型 I=1-2；CSRF 取决于被保护操作的影响。

## XSS 审计要点

The rest: https://github.com/wgpsec/AboutSecurity/blob/HEAD/skills/code-audit/java/java-frontend-audit/SKILL.md
