spring-security
Skill2 starsChanged 48 days agoMITView on GitHub
Audits Spring Boot / Spring (Java) applications for framework-specific vulnerabilities — JPQL/native query concatenation, JdbcTemplate string-concat SQL injection, MyBatis ${} substitution, Thymeleaf th:utext and JSP scriplet XSS, Spring Security misconfigurations (csrf().disable(), permitAll() on sensitive matchers), Actuator endpoint over-exposure (env/heapdump leak credentials), hardcoded datasource/JWT secrets in properties, Jackson enableDefaultTyping deserialization, SpEL injection, session cookie flags, and stacktrace inclusion. Use when the project has pom.xml or build.gradle with spring dependencies.
4 other projects use a version of this.
Adopted by
Most recently taken up by
- PL-Coding-GmbH/Skillstheir own version, first seen Nov 8, 2026
- github/awesome-copilottheir own version, first seen Nov 8, 2026
- senoritadeveloper01/claude-skillstheir own version, first seen Mar 24, 2026
- jander99/skillstheir own version, first seen Mar 15, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- github/awesome-copilot★ 41ksame name
- PL-Coding-GmbH/Skills★ 18same name
- senoritadeveloper01/claude-skills★ 4same name
- jander99/skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository23 other files it gives its agents.
- android-code-securitySkill
- auth-reviewSkill
- config-hardeningSkill
- container-iac-securitySkill
- course-platform-securitySkill
- crypto-reviewSkill
- cve-researchSkill
- data-exposureSkill
- dependency-vulnsSkill
- design-threat-reviewSkill
- django-securitySkill
- dotnet-securitySkill
- flow-securitySkill
- flutter-securitySkill
- graphql-securitySkill
- injection-flawsSkill
- laravel-securitySkill
- llm-securitySkill
- mobile-securitySkill
- rails-securitySkill
- secrets-detectionSkill
- security-auditSkill
- skill-forgeSkill
The file
Files
Spring Security
Step 0 — Detect
rg -n "spring-boot|springframework" -g 'pom.xml' -g 'build.gradle*' | head -5
rg --files -g 'application*.properties' -g 'application*.yml' -g '*SecurityConfig*'Record Spring Boot/Framework version (Spring4Shell check: ../cve-research/vuln-db/entries/), Security config style (WebSecurityConfigurerAdapter vs SecurityFilterChain), template engine.
Step 1 — Configuration files
rg -n "password|secret|include-stacktrace|exposure|cookie" -g 'application*.properties' -g 'application*.yml' -g 'application*.yaml'spring.datasource.password=.../server.ssl.key-store-password=/ JWT secret hardcoded → Critical in public repos, High otherwisemanagement.endpoints.web.exposure.include=*(or env,heapdump listed) → Critical:/actuator/envleaks every property incl. credentials;/actuator/heapdumpleaks in-memory secretsserver.error.include-stacktrace=always→ Mediumserver.servlet.session.cookie.secure=false/http-only=false→ Medium
Step 2 — Spring Security config
rg -n "csrf\(\)\.disable|permitAll|antMatchers|authorizeHttpRequests|@PreAuthorize|@EnableWebSecurity" src/http.csrf().disable()with cookie sessions → High (state-changing endpoints).antMatchers("/admin/**").permitAll()→ Critical@PreAuthorize/@PostAuthorizeabsent across controllers with role-sensitive ops → High (verify per-handler)- CORS config:
allowedOrigins("*")+allowCredentials(true)→ Critical (per spec should fail, frameworks reflect)
Step 3 — SQL injection
rg -n "createQuery\([\"'][^\"']*\+|createNativeQuery.*\+|jdbcTemplate\.\w+\([\"'][^\"']*\+" src/
rg -n "\\\$\{" -g '*.xml' src/ # MyBatis mappers- String-concatenated
createQuery/createNativeQuery/JdbcTemplate.query→ Critical (fix: bound params:name/?) - MyBatis
${...}(string substitution) vs#{...}(prepared) — any${}reachable from request params → Critical
Step 4 — XSS / templates
rg -n "th:utext|<%=|escapeXml=\"false\"|c:out" src/main/resources/templates/ src/ 2>/dev/nullCensus, don't sample: disposition every hit. Severity by privilege direction per ../injection-flaws/SKILL.md (XSS table) — unprivileged-authored content rendered unescaped in a staff view = Critical.
th:utext="${user...}"→ direction-triaged (th:textescapes)- JSP scriplets
<%= user %>→ direction-triaged escapeXml="false"on c:out → direction-triaged
Step 5 — Deserialization & SpEL
rg -n "enableDefaultTyping|ObjectInputStream|readObject|parseExpression" src/- Jackson
enableDefaultTyping()/@JsonTypeInfo(use=Id.CLASS)on external input → Critical (polymorphic gadget chains) ObjectInputStream.readObjecton network data → CriticalspelParser.parseExpression(userInput)→ Critical (SpEL = RCE)- Spring expression in
@Valuefrom constants → safe
Step 6 — Files & commands
rg -n "FileInputStream\(|Files\.(read|copy)|new File\(" src/ | rg -i "request|param" | head
rg -n "Runtime\.getRuntime|ProcessBuilder" src/- File ops with request params → traversal, High
Runtime.exec(String)single-string form → High (argument injection);exec(String[])/ProcessBuilder list → OK-ish
Reporting
Severity table above; fixes are localized (bound params, th:text, matcher tightening). Cross-reference framework CVEs (Spring4Shell, historic) via ../cve-research/SKILL.md and dependency CVEs via ../dependency-vulns/SKILL.md.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

