owasp-top-10
OWASP Top 10:2025 security vulnerabilities. Covers access control, injection, supply chain, cryptographic failures, and more. Use for security reviews. USE WHEN: user mentions "OWASP 2025", "Top 10", "security review", "vulnerability assessment", asks about "broken access control", "injection", "supply chain", "cryptographic failures", "exception handling" DO NOT USE FOR: general OWASP (2021) - use `owasp` instead, secrets - use `secrets-management`, dependencies - use `supply-chain`
What this skill does
# OWASP Top 10:2025
## When NOT to Use This Skill
- **OWASP Top 10:2021** - Use `owasp` skill for 2021 version
- **Detailed secrets management** - Use `secrets-management` skill
- **Detailed supply chain security** - Use `supply-chain` skill for in-depth dependency management
- **License compliance** - Use `license-compliance` skill
> **Deep Knowledge**: Use `mcp__documentation__fetch_docs` with technology: `owasp` for comprehensive documentation.
## Quick Reference
| Rank | Category | Prevention |
|------|----------|------------|
| A01 | Broken Access Control | Authorization checks, deny by default |
| A02 | Security Misconfiguration | Hardening, security headers, no defaults |
| A03 | Supply Chain Failures | Dependency audits, lockfiles, SBOMs |
| A04 | Cryptographic Failures | Strong algorithms, proper key management |
| A05 | Injection | Parameterized queries, input validation |
| A06 | Insecure Design | Threat modeling, secure patterns |
| A07 | Authentication Failures | MFA, rate limiting, secure sessions |
| A08 | Integrity Failures | Signed updates, safe deserialization |
| A09 | Logging Failures | Audit logs, alerting, monitoring |
| A10 | Exception Handling | Graceful errors, no info leakage |
## A01: Broken Access Control
```typescript
// Always verify ownership
if (resource.userId !== currentUser.id) {
throw new ForbiddenException();
}
// Deny by default
const allowed = permissions.includes(requiredPermission);
if (!allowed) throw new ForbiddenException();
// Rate limit sensitive endpoints
app.use('/api/admin/*', adminRateLimiter);
```
## A02: Security Misconfiguration
```typescript
// Security headers
import helmet from 'helmet';
app.use(helmet());
// Strict CORS
app.use(cors({
origin: ['https://myapp.com'],
credentials: true
}));
// Hide errors in production
if (process.env.NODE_ENV === 'production') {
app.use((err, req, res, next) => {
res.status(500).json({ error: 'Internal error' });
});
}
```
## A03: Supply Chain Failures (NEW in 2025)
```bash
# Audit dependencies
npm audit
pip-audit
mvn dependency-check:check
# Use lockfiles
npm ci # Instead of npm install
# Verify package integrity
npm install --ignore-scripts
npm config set ignore-scripts true
```
## A04: Cryptographic Failures
```typescript
// Strong password hashing
import { hash, verify } from 'argon2';
const hashed = await hash(password, { type: argon2id });
// Secure random
import { randomBytes, randomUUID } from 'crypto';
const token = randomBytes(32).toString('hex');
// AES-256-GCM for encryption (not CBC)
```
## A05: Injection
```typescript
// SQL - use parameterized queries
const user = await prisma.user.findUnique({ where: { id } });
await db.query('SELECT * FROM users WHERE id = $1', [id]);
// Command - use execFile, not exec
import { execFile } from 'child_process';
execFile('ls', ['-la', safeArg]);
// XSS - sanitize HTML
import DOMPurify from 'dompurify';
element.innerHTML = DOMPurify.sanitize(userInput);
```
## A06: Insecure Design
Key practices:
- Threat modeling during design phase
- Secure design patterns (fail-safe, defense in depth)
- Security requirements in user stories
- Abuse case testing
## A07: Authentication Failures
```typescript
// Rate limiting
import rateLimit from 'express-rate-limit';
const loginLimiter = rateLimit({
windowMs: 15 * 60 * 1000,
max: 5
});
// Secure cookies
res.cookie('session', token, {
httpOnly: true,
secure: true,
sameSite: 'strict'
});
// Strong passwords (12+ chars, mixed)
```
## A08: Integrity Failures
```typescript
// Verify signatures on updates
// Use subresource integrity (SRI)
<script src="lib.js"
integrity="sha384-..."
crossorigin="anonymous">
</script>
// Safe deserialization
// Avoid: JSON.parse(untrusted)
// Use: zod/yup validation
```
## A09: Logging & Alerting Failures
```typescript
// Log security events
logger.warn({
event: 'auth_failure',
userId: attemptedId,
ip: req.ip,
timestamp: new Date().toISOString()
});
// Events to log:
// - Login success/failure
// - Password changes
// - Permission denied
// - Rate limit exceeded
```
## A10: Exception Handling (NEW in 2025)
```typescript
// Graceful error handling
try {
await riskyOperation();
} catch (error) {
logger.error({ error, context });
// Generic response to user
throw new InternalServerException('Operation failed');
}
// Never expose stack traces
// Never expose internal paths
// Never expose SQL/DB errors
```
## Security Scanning Commands
```bash
# Dependencies
npm audit --json
snyk test
# Secrets
gitleaks detect
trufflehog git file://.
# SAST
semgrep --config=p/security-audit .
# Docker
trivy image myimage:latest
```
## Checklist
| Risk | Prevention |
|------|------------|
| SQL Injection | Parameterized queries, ORMs |
| XSS | Escape output, CSP headers |
| CSRF | CSRF tokens, SameSite cookies |
| Auth issues | MFA, rate limiting, secure sessions |
| Secrets | Environment variables, vaults |
| Supply chain | Audit, lockfiles, SBOMs |
## Anti-Patterns
| Anti-Pattern | Why It's Bad | Correct Approach |
|--------------|--------------|------------------|
| Checking permissions in frontend only | Client-side bypass (A01) | Always verify on backend |
| Using weak crypto (MD5, DES) | Easily broken (A04) | Use AES-256-GCM, argon2, SHA-256+ |
| `npm install` in CI/CD | Non-deterministic builds (A03) | Use `npm ci` with lockfiles |
| Catching all exceptions silently | Hides security issues (A10) | Log errors, fail gracefully |
| Trusting user input in queries | Injection attacks (A05) | Always use parameterized queries |
| No session timeout | Session hijacking (A07) | Implement idle + absolute timeout |
## Quick Troubleshooting
| Issue | Likely Cause | Solution |
|-------|--------------|----------|
| npm audit shows vulnerabilities | Outdated dependencies (A03) | Run `npm audit fix` or update manually |
| Login always fails after 5 attempts | Rate limiter too strict (A07) | Review rate limit settings |
| Secrets leaked in git history | Committed .env file (A02) | Use BFG to clean history, rotate secrets |
| Database queries slow/failing | SQL injection attack (A05) | Review logs, switch to parameterized queries |
| Users accessing others' data | Missing authorization (A01) | Add ownership checks in all endpoints |
| Stack traces in production | Exception handling disabled (A10) | Enable production error handling |
## Related Skills
- [Supply Chain Security](../supply-chain/SKILL.md)
- [Secrets Management](../secrets-management/SKILL.md)
- [JWT Security](../../authentication/jwt/SKILL.md)
Related in Security
mac-ops
IncludedComprehensive macOS workstation operations — diagnose kernel panics, identify failing drives, audit launchd startup items, decode wake reasons, triage TCC permission denials, manage APFS snapshots, recover from no-boot. Use for: Mac is slow, slow bootup, won't boot, kernel panic, kernel_task hot, mds_stores CPU, photoanalysisd, cloudd, login loop, gray screen, sleep wake failure, drive failing, IO errors, APFS snapshots eating space, Time Machine local snapshots, Spotlight indexing, launchd, LaunchAgent, LaunchDaemon, login items, TCC permissions, Full Disk Access, Screen Recording denied, Gatekeeper, quarantine, com.apple.quarantine, app is damaged, helper tool, /Library/PrivilegedHelperTools, pmset, wake reasons, dark wake, sysdiagnose, panic.ips, DiagnosticReports, configuration profile, MDM profile, remote diagnostics over SSH.
a11y-audit
IncludedRun accessibility audits on web projects combining automated scanning (axe-core, Lighthouse) with WCAG 2.1 AA compliance mapping, manual check guidance, and structured reporting. Output is configurable: markdown report only, markdown plus machine-readable JSON, or markdown plus issue tracker integration. Use this skill whenever the user mentions "accessibility audit", "a11y audit", "WCAG audit", "accessibility check", "compliance scan", or asks to check a web project for accessibility issues. Also trigger when the user wants to verify WCAG conformance or map findings to a specific standard (CAN-ASC-6.2, EN 301 549, ADA/AODA).
erpclaw
IncludedAI-native ERP system with self-extending OS. Full accounting, invoicing, inventory, purchasing, tax, billing, HR, payroll, advanced accounting (ASC 606/842, intercompany, consolidation), and financial reporting. 413 actions across 14 domains, 43 expansion modules. Constitutional guardrails, adversarial audit, schema migration. Double-entry GL, immutable audit trail, US GAAP.
assess
IncludedAssesses and rates quality 0-10 across multiple dimensions (correctness, maintainability, security, performance, testability, simplicity) with pros/cons analysis. Compares against project conventions and prior decisions from memory. Produces structured evaluation reports with actionable improvement suggestions. Use when evaluating code, designs, architectures, or comparing alternative approaches.
spring-boot-security-jwt
IncludedProvides JWT authentication and authorization patterns for Spring Boot 3.5.x covering token generation with JJWT, Bearer/cookie authentication, database/OAuth2 integration, and RBAC/permission-based access control using Spring Security 6.x. Use when implementing authentication or authorization in Spring Boot applications.
code-hardcode-audit
IncludedDetect hardcoded values, magic numbers, and leaked secrets. TRIGGERS - hardcode audit, magic numbers, PLR2004, secret scanning.