| name | security-assessment |
| description | Vulnerability review, OWASP patterns, secure coding practices, and threat modeling approaches. Use when reviewing code security, designing secure systems, performing threat analysis, or validating security implementations. |
Security Assessment
A specialized skill for systematic security evaluation of code, architecture, and infrastructure. Combines threat modeling methodologies with practical code review techniques to identify and remediate security vulnerabilities.
When to Use
- Reviewing code changes for security vulnerabilities
- Designing new features with security requirements
- Performing threat analysis on system architecture
- Validating security controls in infrastructure
- Assessing third-party integrations and dependencies
- Preparing for security audits or compliance reviews
Threat Modeling with STRIDE
STRIDE is a threat modeling framework that categorizes threats by their nature. Apply this model during architecture review and feature design.
Spoofing (Authentication)
Threat: Attacker pretends to be another user or system.
Questions to ask:
- How do we verify the identity of users and systems?
- Can authentication tokens be stolen or forged?
- Are there any authentication bypass paths?
Mitigations:
- Strong authentication mechanisms (MFA)
- Secure token generation and validation
- Session management with proper invalidation
Tampering (Integrity)
Threat: Attacker modifies data in transit or at rest.
Questions to ask:
- Can data be modified between components?
- Are database records protected from unauthorized changes?
- Can configuration files be altered?
Mitigations:
- Input validation at all boundaries
- Cryptographic signatures for critical data
- Database integrity constraints and audit logs
Repudiation (Non-repudiation)
Threat: Attacker denies performing an action.
Questions to ask:
- Can we prove who performed an action?
- Are audit logs tamper-resistant?
- Is there sufficient logging for forensics?
Mitigations:
- Comprehensive audit logging
- Secure, immutable log storage
- Digital signatures for critical operations
Information Disclosure (Confidentiality)
Threat: Attacker gains access to sensitive information.
Questions to ask:
- What sensitive data exists in this system?
- How is data protected at rest and in transit?
- Are error messages revealing internal details?
Mitigations:
- Encryption for sensitive data (TLS, AES)
- Proper access controls and authorization
- Sanitized error messages
Denial of Service (Availability)
Threat: Attacker makes the system unavailable.
Questions to ask:
- What resources can be exhausted?
- Are there rate limits on expensive operations?
- How does the system handle malformed input?
Mitigations:
- Rate limiting and throttling
- Input validation and size limits
- Resource quotas and timeouts
Elevation of Privilege (Authorization)
Threat: Attacker gains higher privileges than intended.
Questions to ask:
- Can users access resources beyond their role?
- Are privilege checks performed consistently?
- Can administrative functions be accessed by regular users?
Mitigations:
- Principle of least privilege
- Role-based access control (RBAC)
- Authorization checks at every layer
OWASP Top 10 Review Patterns
Systematic patterns for identifying the most critical web application security risks.
A01: Broken Access Control
Review pattern:
- Identify all endpoints and their expected access levels
- Trace authorization logic from request to resource
- Test for horizontal privilege escalation (accessing other users' data)
- Test for vertical privilege escalation (accessing admin functions)
- Verify CORS configuration restricts origins appropriately
Red flags:
- Authorization based on client-side state
- Direct object references without ownership verification
- Missing authorization checks on API endpoints
A02: Cryptographic Failures
Review pattern:
- Map all sensitive data flows (credentials, PII, financial)
- Verify encryption at rest and in transit
- Check for hardcoded secrets in code or configuration
- Review cryptographic algorithm choices
- Verify key management practices
Red flags:
- Sensitive data in logs or error messages
- Deprecated algorithms (MD5, SHA1, DES)
- Secrets in source control
A03: Injection
Review pattern:
- Identify all user input entry points
- Trace input flow to database queries, OS commands, LDAP
- Verify parameterized queries or proper escaping
- Check for dynamic code execution (eval, exec)
- Review XML parsing for XXE vulnerabilities
Red flags:
- String concatenation in queries
- User input in system commands
- Disabled XML external entity protection
A04: Insecure Design
Review pattern:
- Verify threat modeling was performed
- Check for abuse case handling (rate limits, quantity limits)
- Review business logic for security assumptions
- Assess multi-tenancy isolation
- Verify secure defaults
Red flags:
- No rate limiting on authentication
- Trust assumptions without verification
- Security as an afterthought
A05: Security Misconfiguration
Review pattern:
- Review default configurations for security settings
- Check for unnecessary features or services
- Verify error handling does not expose details
- Review security headers (CSP, HSTS, X-Frame-Options)
- Check cloud resource permissions
Red flags:
- Debug mode in production
- Default credentials unchanged
- Overly permissive cloud IAM policies
A06: Vulnerable Components
Review pattern:
- Inventory all dependencies and their versions
- Check for known vulnerabilities (CVE databases)
- Verify dependencies from trusted sources
- Review for unused dependencies
- Check for version pinning
Red flags:
- Unpinned dependencies
- Known critical vulnerabilities
- Dependencies from unofficial sources
A07: Authentication Failures
Review pattern:
- Review password policy enforcement
- Check session management implementation
- Verify brute force protection
- Review token generation and validation
- Check credential storage mechanisms
Red flags:
- Weak password requirements
- Sessions that do not invalidate on logout
- Predictable session tokens
A08: Integrity Failures
Review pattern:
- Review CI/CD pipeline security
- Check for unsigned code or dependencies
- Review deserialization of untrusted data
- Verify update mechanism security
- Check for code review requirements
Red flags:
- Deserialization without integrity checks
- Unsigned updates or dependencies
- No code review before deployment
A09: Logging and Monitoring Failures
Review pattern:
- Verify authentication events are logged
- Check for authorization failure logging
- Review log content for sensitive data
- Verify log integrity protection
- Check alerting configuration
Red flags:
- Missing authentication failure logs
- Sensitive data in logs
- No alerting on suspicious patterns
A10: SSRF
Review pattern:
- Identify all server-side URL fetching
- Verify URL validation against allowlist
- Check for internal network blocking
- Review URL scheme restrictions
- Verify response handling
Red flags:
- User-controlled URLs without validation
- Internal addresses not blocked
- Raw responses returned to users
Secure Coding Practices
Input Validation
Always validate on the server side, regardless of client validation:
function validateInput(input) {
// Type validation
if (typeof input !== 'string') {
throw new ValidationError('Input must be a string');
}
// Length validation
if (input.length > MAX_LENGTH) {
throw new ValidationError('Input exceeds maximum length');
}
// Format validation (allowlist approach)
if (!ALLOWED_PATTERN.test(input)) {
throw new ValidationError('Input contains invalid characters');
}
return sanitize(input);
}
Output Encoding
Context-appropriate encoding prevents injection:
- HTML context: Encode
<,>,&,",' - JavaScript context: Use JSON.stringify or hex encoding
- URL context: Use encodeURIComponent
- SQL context: Use parameterized queries (never encode manually)
Secrets Management
Never commit secrets to source control:
// Bad: Hardcoded secret
const apiKey = "sk-1234567890abcdef";
// Good: Environment variable
const apiKey = process.env.API_KEY;
if (!apiKey) {
throw new ConfigurationError('API_KEY not configured');
}
Error Handling for Security
Separate internal logging from user-facing errors:
try {
await processRequest(data);
} catch (error) {
// Log full details internally
logger.error('Request processing failed', {
error: error.message,
stack: error.stack,
userId: user.id,
requestId: request.id
});
// Return generic message to user
throw new UserError('Unable to process request');
}
Infrastructure Security Considerations
Network Security
- Segment networks to limit blast radius
- Use private subnets for internal services
- Implement network policies in Kubernetes
- Restrict egress traffic to known destinations
Container Security
- Use minimal base images (distroless, Alpine)
- Run as non-root user
- Set read-only root filesystem where possible
- Scan images for vulnerabilities
- Limit container capabilities
Secrets in Infrastructure
- Use secret management services (Vault, AWS Secrets Manager)
- Inject secrets as environment variables, not files
- Rotate secrets regularly
- Audit secret access
Cloud IAM
- Apply principle of least privilege
- Use service accounts with minimal permissions
- Audit IAM policies regularly
- Avoid using root/admin accounts for routine operations
Code Review Security Focus Areas
Priority areas for security-focused code review:
- Authentication and session management - Token generation, validation, session lifecycle
- Authorization checks - Access control at all layers
- Input handling - All user input paths
- Data exposure - Logs, errors, API responses
- Cryptography usage - Algorithm selection, key management
- Third-party integrations - Data sharing, authentication
- Error handling - Information leakage, fail-secure behavior
Best Practices
- Perform threat modeling before implementation
- Apply defense in depth (multiple security layers)
- Assume breach: design for detection and containment
- Automate security testing in CI/CD
- Keep dependencies updated and audited
- Document security decisions and accepted risks
- Train developers on secure coding practices
References
checklists/security-review-checklist.md- Comprehensive security review checklist