Analyze session management implementations to identify security vulnerabilities in web applications. Use when you need to audit session handling, check for session fixation risks, review session timeout configurations, or validate session ID generation security. Trigger with phrases like "check session security", "audit session management", "review session handling", or "session fixation vulnerability".
Limited to specific tools
Additional assets for this skill
This skill is limited to using the following tools:
assets/README.mdreferences/README.mdscripts/README.mdscripts/report_generator.pyscripts/session_security_scanner.pyname: checking-session-security description: | Analyze session management implementations to identify security vulnerabilities in web applications. Use when you need to audit session handling, check for session fixation risks, review session timeout configurations, or validate session ID generation security. Trigger with phrases like "check session security", "audit session management", "review session handling", or "session fixation vulnerability". allowed-tools:
Before using this skill, ensure:
Locate session management code:
Common file patterns:
**/auth/**, **/session/**, **/middleware/**session.config.*, auth.config.*settings.py, application.yml, web.configGeneration Strength:
Bad Patterns to Detect:
// INSECURE: Predictable
sessionId = Date.now() + userId;
sessionId = Math.random().toString();
// SECURE: Cryptographically random
sessionId = crypto.randomBytes(32).toString('hex');
Verify session ID regeneration:
Vulnerable Pattern:
# INSECURE: Reuses existing session ID
def login(username, password):
if authenticate(username, password):
session['authenticated'] = True # Session ID not regenerated
Secure Pattern:
# SECURE: Regenerates session ID
def login(username, password):
if authenticate(username, password):
session.regenerate() # New session ID
session['authenticated'] = True
Check timeout configurations:
Configuration Review:
Verify secure cookie flags:
HttpOnly: Prevents JavaScript access (XSS protection)Secure: Ensures HTTPS-only transmissionSameSite: Prevents CSRF attacks (Strict or Lax)Domain and Path: Properly scopedInsecure Cookie:
res.cookie('sessionId', sessionId); // No security flags
Secure Cookie:
res.cookie('sessionId', sessionId, {
httpOnly: true,
secure: true,
sameSite: 'strict',
maxAge: 3600000 // 1 hour
});
Evaluate storage mechanisms:
Check for:
Verify anti-hijacking measures:
Check concurrent session handling:
The skill produces:
Primary Output: Session security report saved to {baseDir}/security-reports/session-security-YYYYMMDD.md
Report Structure:
# Session Security Analysis Report
Analysis Date: 2024-01-15
Application: Web Portal
Framework: Express.js
## Executive Summary
- Overall Security Rating: MEDIUM RISK
- Critical Issues: 2
- High Priority Issues: 4
- Recommendations: 8
## Critical Findings
### 1. Session Fixation Vulnerability
**File**: {baseDir}/src/auth/login.js
**Line**: 45
**Issue**: Session ID not regenerated after authentication
**Risk**: Attacker can hijack authenticated session
**Code**:
```javascript
function handleLogin(req, res) {
if (validateCredentials(req.body)) {
req.session.authenticated = true; // VULNERABLE
res.redirect('/dashboard');
}
}
Remediation:
function handleLogin(req, res) {
if (validateCredentials(req.body)) {
req.session.regenerate((err) => { // SECURE
req.session.authenticated = true;
res.redirect('/dashboard');
});
}
}
File: {baseDir}/config/session.js
Line: 12
Issue: Session cookies accessible to JavaScript
Risk: XSS attacks can steal session tokens
Remediation: Set httpOnly: true in cookie configuration
File: {baseDir}/config/session.js
Line: 15
Issue: Session timeout set to 24 hours
Risk: Extended exposure window for compromised sessions
Current: maxAge: 86400000 // 24 hours
Recommendation: maxAge: 1800000 // 30 minutes
File: {baseDir}/src/auth/session-manager.js Line: 28 Issue: Using Math.random() for session IDs Risk: Predictable session IDs enable brute-force attacks Remediation: Use crypto.randomBytes()
[Additional findings...]
**Secondary Outputs**:
- Vulnerable code snippets with line numbers
- Remediation code examples
- Framework-specific configuration guide
## Error Handling
**Common Issues and Resolutions**:
1. **Cannot Locate Session Management Code**
- Error: "No session handling code found in {baseDir}/"
- Resolution: Search for framework-specific patterns
- Fallback: Request explicit file paths from user
2. **Framework Not Recognized**
- Error: "Unknown session framework"
- Resolution: Apply generic session security checks
- Note: Framework-specific recommendations unavailable
3. **Encrypted or Obfuscated Code**
- Error: "Cannot analyze minified/compiled code"
- Resolution: Request source code or unminified version
- Limitation: Document inability to fully audit
4. **Custom Session Implementation**
- Error: "Non-standard session management detected"
- Resolution: Apply fundamental security principles
- Extra Scrutiny: Custom implementations often have flaws
5. **Configuration in Environment Variables**
- Error: "Session config in environment, not code"
- Resolution: Request .env.example or config documentation
- Fallback: Provide general configuration recommendations
## Resources
**OWASP Guidelines**:
- Session Management Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html
- OWASP Top 10 - Broken Authentication: https://owasp.org/www-project-top-ten/
**Standards and Best Practices**:
- NIST 800-63B Authentication: https://pages.nist.gov/800-63-3/sp800-63b.html
- PCI-DSS Session Requirements: https://www.pcisecuritystandards.org/
**Framework-Specific Guides**:
- Express.js Session Security: https://expressjs.com/en/advanced/best-practice-security.html
- Django Session Framework: https://docs.djangoproject.com/en/stable/topics/http/sessions/
- Spring Session: https://spring.io/projects/spring-session
**Security Tools**:
- Burp Suite for session testing
- OWASP ZAP session analysis
- Browser DevTools for cookie inspection
**Common Vulnerabilities**:
- CWE-384: Session Fixation
- CWE-613: Insufficient Session Expiration
- CWE-539: Information Exposure Through Persistent Cookies
- CWE-5 52: Insufficiently Protected Credentials