noorqureshi/security-skills/code-review-java
Claude Code and agent skill by noorqureshi/security-skills
- community
Checking that the SKILL.md file is still in the repository.
Security review of Java code — dangerous sinks and Spring pitfalls. Load when reviewing a Java/ Spring codebase/PR, on .java source in scope, or "review this Java". Signals: pom.xml/build.gradle, Spring/Spring Boot, ObjectInputStream, XML parsers, Runtime.exec, JNDI/lookups.
Install
npx vskill@latest install noorqureshi/security-skills/code-review-javaSKILL.md
Java / Spring source review
When it applies
Reviewing Java source, most often a Spring/Spring Boot service. Java's biggest hitters are deserialization, XXE-by-default, and expression-language injection — all high impact and all grep-able.
Why it works
Several Java APIs are unsafe by default (XML parsers resolve external entities; ObjectInputStream instantiates arbitrary classes) and frameworks expose powerful expression languages (SpEL/OGNL) that turn a string into code. Tracing the source to a request parameter or message body confirms reach.
Sinks & patterns (grep, then trace to user input)
- Deserialization:
ObjectInputStream.readObject, JacksonenableDefaultTyping/polymorphic
types, XMLDecoder, SnakeYAML new Yaml().load, unsafe readValue with type info → RCE gadgets.
- XXE:
DocumentBuilderFactory,SAXParser,XMLInputFactory,TransformerFactorywithout
setFeature(disallow-doctype)/secure-processing.
- Command exec:
Runtime.getRuntime().exec,ProcessBuilderwith concatenated input. - Expression injection: SpEL (
SpelExpressionParser,@Value("#{...}")on input), OGNL
(Struts), MVEL; template engines with unescaped output.
- SQL/HQL:
Statement/string-built queries,createQuerywith concatenation. - SSRF:
URL.openConnection,RestTemplate,HttpClient,WebClienton user URLs. - JNDI:
InitialContext.lookup, log4j-style${jndi:...}(Log4Shell) reachable from input.
Framework specifics
- Spring: mass assignment via
@ModelAttribute/DataBinder(missingsetAllowedFields),
exposed/unsecured Actuator endpoints, @RequestMapping path traversal, permit-all misconfig in SecurityFilterChain, SpEL in @PreAuthorize.
- Struts/older MVC: OGNL injection (S2-* CVEs).
Method
rgfor the sinks; trace to controller params, headers, or message consumers.- Check XML parser factory configuration everywhere XML is read.
- Review the Spring Security config for accidental
permitAll()/disabled CSRF on state-changing routes. - Confirm with
web-deserialization,web-xxe,web-ssrf, orweb-command-injection.
Gotchas
- Jackson is safe unless default/polymorphic typing is enabled — check for it specifically.
find-sec-bugs/CodeQL surface candidates; you still must prove input reaches the sink.- Log4Shell-style lookups can fire from headers (User-Agent, X-Forwarded-For), not just body.
References
OWASP Deserialization & XXE cheat sheets; SpEL/OGNL injection research; find-sec-bugs rules.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/code-review/code-review-java/SKILL.md
Popularity
- Repository stars
- 24
- Repository forks
- 7
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/noorqureshi/security-skills/code-review-java)