checking-session-security
About
This skill audits web application session management for security vulnerabilities like session fixation and weak ID generation. It analyzes session handling code, timeout configurations, and security settings across various frameworks. Use it when you need to review session security or identify session-related risks in your application code.
Quick Install
Claude Code
Recommended/plugin add https://github.com/jeremylongshore/claude-code-plugins-plusgit clone https://github.com/jeremylongshore/claude-code-plugins-plus.git ~/.claude/skills/checking-session-securityCopy and paste this command in Claude Code to install this skill
Documentation
Prerequisites
Before using this skill, ensure:
- Source code accessible in {baseDir}/
- Session management code locations known (auth modules, middleware)
- Framework information (Express, Django, Spring, etc.)
- Configuration files for session settings
- Write permissions for security report in {baseDir}/security-reports/
Instructions
1. Code Discovery Phase
Locate session management code:
- Authentication/login handlers
- Session middleware configuration
- Cookie handling code
- Session storage implementations
- Logout/session termination code
Common file patterns:
**/auth/**,**/session/**,**/middleware/**session.config.*,auth.config.*- Framework-specific:
settings.py,application.yml,web.config
2. Session ID Security Analysis
Generation Strength:
- Check for cryptographically secure random generators
- Verify sufficient entropy (at least 128 bits)
- Ensure unpredictable session ID patterns
- No sequential or timestamp-based IDs
Bad Patterns to Detect:
// INSECURE: Predictable
sessionId = Date.now() + userId;
sessionId = Math.random().toString();
// SECURE: Cryptographically random
sessionId = crypto.randomBytes(32).toString('hex');
3. Session Fixation Vulnerability Check
Verify session ID regeneration:
- New session ID generated after login
- Session ID changes on privilege escalation
- Old session ID invalidated after 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
4. Session Timeout Analysis
Check timeout configurations:
- Idle timeout (session inactivity limit)
- Absolute timeout (maximum session lifetime)
- Remember-me token expiration
- Sensitive operation re-authentication
Configuration Review:
- Idle timeout: 15-30 minutes recommended
- Absolute timeout: 8-12 hours maximum
- Financial apps: Shorter timeouts (5-10 minutes)
- Sensitive operations: Force re-authentication
5. Cookie Security Attributes
Verify secure cookie flags:
HttpOnly: Prevents JavaScript access (XSS protection)Secure: Ensures HTTPS-only transmissionSameSite: Prevents CSRF attacks (Strict or Lax)DomainandPath: Properly scoped
Insecure Cookie:
res.cookie('sessionId', sessionId); // No security flags
Secure Cookie:
res.cookie('sessionId', sessionId, {
httpOnly: true,
secure: true,
sameSite: 'strict',
maxAge: 3600000 // 1 hour
});
6. Session Storage Security
Evaluate storage mechanisms:
- Server-side storage (recommended): Redis, Memcached, database
- Encrypted storage for sensitive data
- No sensitive data in client-side cookies
- Proper session cleanup on logout
Check for:
- Sessions persisting after logout
- Lack of session invalidation
- Sensitive data stored in cookies
- Unencrypted session stores
7. Session Hijacking Protections
Verify anti-hijacking measures:
- IP address binding (with caution for mobile users)
- User-Agent validation
- Token-based CSRF protection
- Automatic logout on suspicious activity
8. Concurrent Session Management
Check concurrent session handling:
- Limit concurrent sessions per user
- Session conflict detection
- Force logout previous sessions option
- Session monitoring and alerting
Output
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');
});
}
}
2. Missing HttpOnly Flag
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
High Priority Findings
3. Weak Session Timeout
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
4. Insecure Session ID Generation
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...]
Session Configuration Summary
- Session Store: Redis (Good)
- Cookie Secure Flag: Missing (Critical)
- Cookie HttpOnly Flag: Missing (Critical)
- Cookie SameSite: None (High Risk)
- Idle Timeout: 24 hours (Too Long)
- Session Regeneration: Not Implemented (Critical)
Compliance Check
- OWASP Session Management: 4/10 controls implemented
- PCI-DSS 8.1.8: Non-compliant (timeout too long)
- NIST 800-63B: Partial compliance
Remediation Priority
- [CRITICAL] Implement session regeneration on login
- [CRITICAL] Enable HttpOnly and Secure cookie flags
- [HIGH] Reduce session timeout to 30 minutes
- [HIGH] Implement cryptographically secure session IDs
- [MEDIUM] Add SameSite=Strict to cookies
- [MEDIUM] Implement concurrent session limits
**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
GitHub Repository
Related Skills
subagent-driven-development
DevelopmentThis skill executes implementation plans by dispatching a fresh subagent for each independent task, with code review between tasks. It enables fast iteration while maintaining quality gates through this review process. Use it when working on mostly independent tasks within the same session to ensure continuous progress with built-in quality checks.
algorithmic-art
MetaThis Claude Skill creates original algorithmic art using p5.js with seeded randomness and interactive parameters. It generates .md files for algorithmic philosophies, plus .html and .js files for interactive generative art implementations. Use it when developers need to create flow fields, particle systems, or other computational art while avoiding copyright issues.
executing-plans
DesignUse the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.
cost-optimization
OtherThis Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.
