Install
$ agentstack add skill-rosslevinsky-portable-agent-skills-security-review-codebase ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ● Shell / process execution Used
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Security Review: Full Codebase
Classification: Degraded — parallel execution is optional; sequential fallback preserves all analysis coverage.
Perform a security-focused audit of the entire checked-in codebase to identify HIGH-CONFIDENCE security vulnerabilities with real exploitation potential. This is not a general code review — focus ONLY on concrete security vulnerabilities.
Objective
Identify HIGH-CONFIDENCE security vulnerabilities across the full codebase. Do not comment on code quality, style, or theoretical issues. Only flag issues where exploitation potential is >80% confident.
Critical Instructions
- MINIMIZE FALSE POSITIVES: Only flag issues where you're >80% confident of actual exploitability
- AVOID NOISE: Skip theoretical issues, style concerns, or low-impact findings
- FOCUS ON IMPACT: Prioritize vulnerabilities leading to unauthorized access, data breaches, or system compromise
- EXCLUSIONS — Do NOT report:
- Denial of Service (DOS) vulnerabilities, even if they allow service disruption
- Secrets or sensitive data stored on disk (handled by other processes)
- Rate limiting or resource exhaustion issues
Security Categories to Examine
Input Validation Vulnerabilities:
- SQL injection via unsanitized user input
- Command injection in system calls or subprocesses
- XXE injection in XML parsing
- Template injection in templating engines
- NoSQL injection in database queries
- Path traversal in file operations
Authentication & Authorization Issues:
- Authentication bypass logic
- Privilege escalation paths
- Session management flaws
- JWT token vulnerabilities
- Authorization logic bypasses
Crypto & Secrets Management:
- Hardcoded API keys, passwords, or tokens
- Weak cryptographic algorithms or implementations
- Improper key storage or management
- Cryptographic randomness issues
- Certificate validation bypasses
Injection & Code Execution:
- Remote code execution via deserialization
- Pickle injection in Python
- YAML deserialization vulnerabilities
- Eval injection in dynamic code execution
- XSS vulnerabilities in web applications (reflected, stored, DOM-based)
Data Exposure:
- Sensitive data logging or storage
- PII handling violations
- API endpoint data leakage
- Debug information exposure
Additional notes:
- Even if something is only exploitable from the local network, it can still be a HIGH severity issue
Analysis Methodology
Phase 1 — Codebase Reconnaissance
Use file search and read tools to map the attack surface:
- Identify the tech stack, frameworks, and languages in use
- Locate entry points: HTTP handlers, CLI argument parsers, message consumers, file processors
- Locate trust boundaries: authentication middleware, authorization checks, input validation layers
- Identify high-risk patterns: subprocess calls, eval/exec, deserialization, file I/O with user-controlled paths, raw SQL construction, template rendering
- Note existing security frameworks and sanitization patterns already in use
Phase 2 — Vulnerability Assessment
For each high-risk area identified in Phase 1:
- Trace data flow from untrusted input sources to sensitive operations
- Look for privilege boundaries being crossed unsafely
- Identify injection points and unsafe deserialization
- Compare patterns against established secure practices in the same codebase — flag deviations
Phase 3 — False Positive Filtering
For each candidate finding, apply the hard exclusions and precedents below before including it in the report.
False Positive Filtering
Hard Exclusions — automatically exclude:
- Denial of Service (DOS) vulnerabilities or resource exhaustion attacks
- Secrets or credentials stored on disk if they are otherwise secured
- Rate limiting concerns or service overload scenarios
- Memory consumption or CPU exhaustion issues
- Lack of input validation on non-security-critical fields without proven security impact
- Input sanitization concerns for GitHub Action workflows unless clearly triggerable via untrusted input
- A lack of hardening measures — only flag concrete vulnerabilities
- Race conditions or timing attacks that are theoretical rather than practical
- Vulnerabilities related to outdated third-party libraries
- Memory safety issues in memory-safe languages (Rust, Go, etc.)
- Files that are only unit tests or only used as part of running tests
- Log spoofing concerns — outputting un-sanitized user input to logs is not a vulnerability
- SSRF vulnerabilities that only control the path — SSRF is only a concern if it can control the host or protocol
- Including user-controlled content in AI system prompts is not a vulnerability
- Regex injection or Regex DOS concerns
- Insecure documentation — do not report findings in markdown or documentation files
- A lack of audit logs is not a vulnerability
Precedents:
- Logging high-value secrets in plaintext is a vulnerability. Logging URLs is assumed safe.
- UUIDs can be assumed to be unguessable and do not need to be validated.
- Environment variables and CLI flags are trusted values. Attacks relying on controlling env vars are invalid.
- Resource management issues (memory leaks, file descriptor leaks) are not valid.
- Subtle low-impact web vulnerabilities (tabnabbing, XS-Leaks, prototype pollution, open redirects) should not be reported unless extremely high confidence.
- React and Angular are generally secure against XSS. Do not report XSS in
.tsx/.jsxfiles unlessdangerouslySetInnerHTML,bypassSecurityTrustHtml, or similar unsafe methods are used. - Most vulnerabilities in GitHub Action workflows are not exploitable in practice — require a very specific concrete attack path.
- A lack of permission checking or authentication in client-side JS/TS code is not a vulnerability.
- Only include MEDIUM findings if they are obvious and concrete.
- Most vulnerabilities in Jupyter notebooks are not exploitable in practice — require a concrete attack path with untrusted input.
- Logging non-PII data is not a vulnerability even if sensitive. Only report logging vulnerabilities for secrets, passwords, or PII.
- Command injection in shell scripts is generally not exploitable — only report with a concrete untrusted-input attack path.
Signal Quality Criteria — for remaining findings, assess:
- Is there a concrete, exploitable vulnerability with a clear attack path?
- Does this represent a real security risk vs theoretical best practice?
- Are there specific code locations and reproduction steps?
- Would this finding be actionable for a security team?
Confidence Scoring:
- 0.9–1.0: Certain exploit path identified, tested if possible
- 0.8–0.9: Clear vulnerability pattern with known exploitation methods
- 0.7–0.8: Suspicious pattern requiring specific conditions to exploit
- Below 0.7: Do not report (too speculative)
Only include findings with confidence ≥ 0.8.
Final Reminder
Focus on HIGH and MEDIUM findings only. Better to miss some theoretical issues than flood the report with false positives. Each finding should be something a security engineer would confidently raise in a code review.
Execution Steps
Run this analysis as parallel work units if supported, otherwise sequentially:
- Vulnerability Discovery — Search the codebase to map the attack surface and produce a candidate list of vulnerabilities with file and line references. Apply the Analysis Methodology above.
- False Positive Filter (per finding) — For each candidate vulnerability, re-read the relevant code and apply the False Positive Filtering rules above. Return a confidence score (0.0–1.0) and a pass/fail verdict. Run these in parallel if supported, otherwise process each finding sequentially.
- Synthesis — Collect all findings that passed filtering with confidence ≥ 0.8. Write the final report.
Required Output Format
Output findings in markdown. Each finding must include: file path, line number, severity, category, description, exploit scenario, and fix recommendation.
Example Finding
# Vuln 1: SQL Injection: `src/db/users.py:87`
* Severity: High
* Category: sql_injection
* Description: The `username` parameter from the HTTP request is directly interpolated into a SQL query string without parameterization.
* Exploit Scenario: Attacker sends `username=admin'--` to bypass authentication and access any account.
* Recommendation: Use parameterized queries or an ORM. Replace string interpolation with `cursor.execute("SELECT * FROM users WHERE username = %s", (username,))`.
Severity Guidelines
- HIGH: Directly exploitable — RCE, data breach, authentication bypass
- MEDIUM: Requires specific conditions but with significant impact
- LOW: Defense-in-depth issues or lower-impact vulnerabilities (only include if confidence ≥ 0.8)
If no findings meet the confidence threshold, output:
# Security Review: Full Codebase
No high-confidence vulnerabilities found.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: rosslevinsky
- Source: rosslevinsky/portable-agent-skills
- License: Apache-2.0
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.