Quick security audit checking for hardcoded secrets, SSRF vectors, injection points, dependency issues, and missing security headers
Perform a focused security audit on the codebase, checking for common vulnerabilities and security misconfigurations.
Run through each security check systematically and report all findings.
Search for potential secrets in the codebase:
# Patterns to search for
API_KEY, api_key, apiKey, ApiKey
PASSWORD, password, Password, passwd
SECRET, secret, Secret
TOKEN, token, Token
CREDENTIAL, credential, Credential
PRIVATE_KEY, private_key, privateKey
AUTH, auth (in assignment context)
Bearer, Basic (hardcoded auth headers)
Using Grep tool, search for these patterns in:
src/main/java/**/*.javasrc/main/resources/*.ymlsrc/main/resources/*.properties*.env* files (except .env.example)docker-compose*.ymlExclude:
src/test/**)${...}, System.getenv())Identify potential Server-Side Request Forgery vulnerabilities:
Search for:
new URL(), URI.create(), HttpRequest.newBuilder()Check:
In this project, examine:
GoogleMapsService.java - URL unshorteningForecastService.java - Windguru API callsSearch for potential injection vulnerabilities:
Command Injection:
Runtime.exec(), ProcessBuilder
String concatenation with external input
SQL Injection (if applicable):
String query = "SELECT * FROM " + userInput
Statement.execute() with concatenated strings
Log Injection:
log.info("User: " + userInput) // without sanitization
XSS in responses:
Returning user input in HTML without encoding
Check for:
Analyze build.gradle for:
Version Issues:
Key dependencies to check:
spring-boot-starter-* (current: 3.5.x)
okhttp (current: 4.12.x)
gson
spring-ai-*
playwright (for E2E)
Recommend:
./gradlew dependencyUpdates if availableCheck for missing security headers in responses:
Required headers:
X-Content-Type-Options: nosniffX-Frame-Options: DENY or SAMEORIGINX-XSS-Protection: 1; mode=blockStrict-Transport-Security (HSTS)Content-Security-PolicyReferrer-PolicyCheck locations:
nginx.conf (if applicable)NettyConfig.java or similarAuthentication/Authorization:
Sensitive Data Exposure:
CORS Configuration:
*)?## Security Audit Report
### Summary
| Category | Issues Found | Severity |
|----------|--------------|----------|
| Hardcoded Secrets | X | Critical/None |
| SSRF Vectors | X | High/Medium/None |
| Injection Points | X | Critical/None |
| Dependencies | X | High/Medium/Low |
| Security Headers | X | Medium/None |
### Critical Issues (Immediate Action Required)
#### [Issue Title]
**File**: `path/to/file.java:line`
**Type**: [Hardcoded Secret / Injection / etc.]
**Risk**: [What could happen if exploited]
**Evidence**:
```java
// problematic code
Remediation: [How to fix]
...
...
## Execution Steps
1. **Secrets scan**: Use `Grep` to search for secret patterns across the codebase
2. **SSRF analysis**: Read HTTP client code and URL handling logic
3. **Injection check**: Search for string concatenation patterns in sensitive contexts
4. **Dependency review**: Read `build.gradle` and check versions
5. **Headers check**: Examine security configuration and filters
6. **Compile report**: Organize findings by severity
## Notes
- Focus on actionable findings, not theoretical risks
- Distinguish between actual secrets and configuration placeholders
- Consider the context (e.g., test data vs production code)
- For dependencies, note that patch versions usually don't have CVEs
- This is a quick audit; recommend periodic deep security reviews
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer