OW

Applies OWASP standards and security checklists to code review and development.

Install

mkdir -p .claude/skills/owasp-security && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18163" && unzip -o skill.zip -d .claude/skills/owasp-security && rm skill.zip

Installs to .claude/skills/owasp-security

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Use when reviewing code for security vulnerabilities, implementing authentication/authorization, handling user input, or discussing web application security. Covers OWASP Top 10:2025, ASVS 5.0, and Agentic AI security (2026).
225 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Provide quick reference for OWASP Top 10:2025 vulnerabilities and prevention
  • Review code for input handling validation and parameterized queries
  • Check authentication and session management for secure hashing and token entropy
  • Verify access control implementation, including framework-level auth middleware
  • Examine data protection for encryption, TLS, and secret management
  • Review error handling for fail-closed patterns and internal exposure

How it works

The skill provides checklists and code patterns based on OWASP Top 10:2025, ASVS 5.0, and Agentic AI security to guide code review and implementation.

Inputs & outputs

You give it
Code or design documents related to web application security
You get back
Security best practices, checklists, and code patterns for prevention

When to use owasp-security

  • Secure code review
  • Implement authentication
  • Check against OWASP standards

About this skill

OWASP Security Best Practices Skill

Apply these security standards when writing or reviewing code.

Quick Reference: OWASP Top 10:2025

#VulnerabilityKey Prevention
A01Broken Access ControlDeny by default, enforce server-side, verify ownership
A02Security MisconfigurationHarden configs, disable defaults, minimize features
A03Supply Chain FailuresLock versions, verify integrity, audit dependencies
A04Cryptographic FailuresTLS 1.2+, AES-256-GCM, Argon2/bcrypt for passwords
A05InjectionParameterized queries, input validation, safe APIs
A06Insecure DesignThreat model, rate limit, design security controls
A07Auth FailuresMFA, check breached passwords, secure sessions
A08Integrity FailuresSign packages, SRI for CDN, safe serialization
A09Logging FailuresLog security events, structured format, alerting
A10Exception HandlingFail-closed, hide internals, log with context

Security Code Review Checklist

When reviewing code, check for these issues:

Input Handling

  • All user input validated server-side
  • Using parameterized queries (not string concatenation)
  • Input length limits enforced
  • Allowlist validation preferred over denylist

Authentication & Sessions

  • Passwords hashed with Argon2/bcrypt (not MD5/SHA1)
  • Session tokens have sufficient entropy (128+ bits)
  • Sessions invalidated on logout
  • MFA available for sensitive operations

Access Control

  • Check for framework-level auth middleware (e.g., Next.js middleware.ts, proxy.ts, Express middleware) before flagging missing per-route auth
  • Authorization checked on every request
  • Using object references user cannot manipulate
  • Deny by default policy
  • Privilege escalation paths reviewed

Data Protection

  • Sensitive data encrypted at rest
  • TLS for all data in transit
  • No sensitive data in URLs/logs
  • Secrets in environment/vault (not code)

Error Handling

  • No stack traces exposed to users
  • Fail-closed on errors (deny, not allow)
  • All exceptions logged with context
  • Consistent error responses (no enumeration)

Secure Code Patterns

SQL Injection Prevention

# UNSAFE
cursor.execute(f"SELECT * FROM users WHERE id = {user_id}")

# SAFE
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))

Command Injection Prevention

# UNSAFE
os.system(f"convert {filename} output.png")

# SAFE
subprocess.run(["convert", filename, "output.png"], shell=False)

Password Storage

# UNSAFE
hashlib.md5(password.encode()).hexdigest()

# SAFE
from argon2 import PasswordHasher
PasswordHasher().hash(password)

Access Control

# UNSAFE - No authorization check
@app.route('/api/user/<user_id>')
def get_user(user_id):
    return db.get_user(user_id)

# SAFE - Authorization enforced
@app.route('/api/user/<user_id>')
@login_required
def get_user(user_id):
    if current_user.id != user_id and not current_user.is_admin:
        abort(403)
    return db.get_user(user_id)

Error Handling

# UNSAFE - Exposes internals
@app.errorhandler(Exception)
def handle_error(e):
    return str(e), 500

# SAFE - Fail-closed, log context
@app.errorhandler(Exception)
def handle_error(e):
    error_id = uuid.uuid4()
    logger.exception(f"Error {error_id}: {e}")
    return {"error": "An error occurred", "id": str(error_id)}, 500

Fail-Closed Pattern

# UNSAFE - Fail-open
def check_permission(user, resource):
    try:
        return auth_service.check(user, resource)
    except Exception:
        return True  # DANGEROUS!

# SAFE - Fail-closed
def check_permission(user, resource):
    try:
        return auth_service.check(user, resource)
    except Exception as e:
        logger.error(f"Auth check failed: {e}")
        return False  # Deny on error

Agentic AI Security (OWASP 2026)

When building or reviewing AI agent systems, check for:

RiskDescriptionMitigation
ASI01: Goal HijackPrompt injection alters agent objectivesInput sanitization, goal boundaries, behavioral monitoring
ASI02: Tool MisuseTools used in unintended waysLeast privilege, fine-grained permissions, validate I/O
ASI03: Identity & Privilege AbuseDelegated trust, inherited credentials, role chain exploitsShort-lived scoped tokens, identity verification
ASI04: Supply ChainCompromised plugins/MCP serversVerify signatures, sandbox, allowlist plugins
ASI05: Code ExecutionUnsafe code generation/executionSandbox execution, static analysis, human approval
ASI06: Memory PoisoningCorrupted RAG/context dataValidate stored content, segment by trust level
ASI07: Insecure Inter-Agent CommsSpoofing/intercepting agent-to-agent messagesAuthenticate, encrypt, verify message integrity
ASI08: Cascading FailuresErrors propagate across systemsCircuit breakers, graceful degradation, isolation
ASI09: Human-Agent Trust ExploitationOver-trust in agents leveraged to manipulate usersLabel AI content, user education, verification steps
ASI10: Rogue AgentsCompromised agents acting maliciouslyBehavior monitoring, kill switches, anomaly detection

Agent Security Checklist

  • All agent inputs sanitized and validated
  • Tools operate with minimum required permissions
  • Credentials are short-lived and scoped
  • Third-party plugins verified and sandboxed
  • Code execution happens in isolated environments
  • Agent communications authenticated and encrypted
  • Circuit breakers between agent components
  • Human approval for sensitive operations
  • Behavior monitoring for anomaly detection
  • Kill switch available for agent systems

ASVS 5.0 Key Requirements

Level 1 (All Applications)

  • Passwords minimum 12 characters
  • Check against breached password lists
  • Rate limiting on authentication
  • Session tokens 128+ bits entropy
  • HTTPS everywhere

Level 2 (Sensitive Data)

  • All L1 requirements plus:
  • MFA for sensitive operations
  • Cryptographic key management
  • Comprehensive security logging
  • Input validation on all parameters

Level 3 (Critical Systems)

  • All L1/L2 requirements plus:
  • Hardware security modules for keys
  • Threat modeling documentation
  • Advanced monitoring and alerting
  • Penetration testing validation

Language-Specific Security Quirks

Important: The examples below are illustrative starting points, not exhaustive. When reviewing code, think like a senior security researcher: consider the language's memory model, type system, standard library pitfalls, ecosystem-specific attack vectors, and historical CVE patterns. Each language has deeper quirks beyond what's listed here.

Different languages have unique security pitfalls. Here are the top 20 languages with key security considerations. Go deeper for the specific language you're working in:


JavaScript / TypeScript

Main Risks: Prototype pollution, XSS, eval injection

// UNSAFE: Prototype pollution
Object.assign(target, userInput)
// SAFE: Use null prototype or validate keys
Object.assign(Object.create(null), validated)

// UNSAFE: eval injection
eval(userCode)
// SAFE: Never use eval with user input

Watch for: eval(), innerHTML, document.write(), prototype chain manipulation, __proto__


Python

Main Risks: Pickle deserialization, format string injection, shell injection

# UNSAFE: Pickle RCE
pickle.loads(user_data)
# SAFE: Use JSON or validate source
json.loads(user_data)

# UNSAFE: Format string injection
query = "SELECT * FROM users WHERE name = '%s'" % user_input
# SAFE: Parameterized
cursor.execute("SELECT * FROM users WHERE name = %s", (user_input,))

Watch for: pickle, eval(), exec(), os.system(), subprocess with shell=True


Java

Main Risks: Deserialization RCE, XXE, JNDI injection

// UNSAFE: Arbitrary deserialization
ObjectInputStream ois = new ObjectInputStream(userStream);
Object obj = ois.readObject();

// SAFE: Use allowlist or JSON
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(json, SafeClass.class);

Watch for: ObjectInputStream, Runtime.exec(), XML parsers without XXE protection, JNDI lookups


C#

Main Risks: Deserialization, SQL injection, path traversal

// UNSAFE: BinaryFormatter RCE
BinaryFormatter bf = new BinaryFormatter();
object obj = bf.Deserialize(stream);

// SAFE: Use System.Text.Json
var obj = JsonSerializer.Deserialize<SafeType>(json);

Watch for: BinaryFormatter, JavaScriptSerializer, TypeNameHandling.All, raw SQL strings


PHP

Main Risks: Type juggling, file inclusion, object injection

// UNSAFE: Type juggling in auth
if ($password == $stored_hash) { ... }
// SAFE: Use strict comparison
if (hash_equals($stored_hash, $passwo

---

*Content truncated.*

When not to use it

  • When the user is not reviewing code for security vulnerabilities
  • When the user is not implementing authentication/authorization
  • When the user is not handling user input or discussing web application security

Limitations

  • Focuses on OWASP Top 10:2025, ASVS 5.0, and Agentic AI security (2026)
  • The provided code examples are entry points, not complete coverage for every language
  • Does not automatically scan code for vulnerabilities

How it compares

This skill offers a structured, complete framework for security review and implementation, covering specific vulnerabilities and providing concrete code examples, which is more systematic than ad-hoc security considerations.

Compared to similar skills

owasp-security side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
owasp-security (this skill)03moReviewIntermediate
software-security216moNo flagsIntermediate
fix-dependabot-alerts185moReviewIntermediate
backend-security-coder243moNo flagsIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

software-security

project-codeguard

A software security skill that integrates with Project CodeGuard to help AI coding agents write secure code and prevent common vulnerabilities. Use this skill when writing, reviewing, or modifying code to ensure secure-by-default practices are followed.

2186

fix-dependabot-alerts

microsoft

Fix Dependabot security alerts by updating vulnerable npm dependencies. Use when the user mentions "dependabot", "security alerts", "vulnerability", "CVE", or wants to update packages with security issues.

1872

backend-security-coder

sickn33

Expert in secure backend coding practices specializing in input validation, authentication, and API security. Use PROACTIVELY for backend security implementations or security code reviews.

2446

equilateral-agents

Equilateral-AI

22 production-ready AI agents with database-driven orchestration for security reviews, code quality analysis, deployment validation, infrastructure checks, and compliance. Auto-activates for security concerns, deployment tasks, code reviews, quality checks, and compliance questions. Includes upgrade paths to enterprise features (GDPR, HIPAA, multi-account AWS, ML-based optimization).

564

top-100-web-vulnerabilities-reference

davila7

This skill should be used when the user asks to "identify web application vulnerabilities", "explain common security flaws", "understand vulnerability categories", "learn about injection attacks", "review access control weaknesses", "analyze API security issues", "assess security misconfigurations", "understand client-side vulnerabilities", "examine mobile and IoT security flaws", or "reference the OWASP-aligned vulnerability taxonomy". Use this skill to provide comprehensive vulnerability definitions, root causes, impacts, and mitigation strategies across all major web security categories.

547

differential-review

trailofbits

Performs security-focused differential review of code changes (PRs, commits, diffs). Adapts analysis depth to codebase size, uses git history for context, calculates blast radius, checks test coverage, and generates comprehensive markdown reports. Automatically detects and prevents security regressions.

3115

Search skills

Search the agent skills registry