Files
picpeak/frontend/.claudedocs/scans/security-2025-01-12.md
T
paul 1773ed5f95
Mirror to GitHub / mirror (push) Successful in 26s
Test and Lint / backend-test (push) Successful in 1m11s
continuous-integration/drone/push Build is passing
Test and Lint / frontend-test (push) Successful in 2m28s
Version and Release / version-bump (push) Successful in 32s
Version and Release / trigger-drone (push) Has been skipped
Initial commit - Project start (July 17, 2025)
Original: feat: enhance security logging and ensure rate limit blocks are properly tracked

- Add comprehensive logging for rate limit blocks with full request details
  - IP address (with proper proxy detection), user agent, headers, timestamps
  - Rate limit info (current count, limit, remaining, reset time)
  - Separate tracking for auth vs general endpoints

- Enhance authentication failure logging
  - JWT validation failures with detailed error info
  - Admin auth attempts without token
  - Failed token validation with user context
  - All events include IP, path, method, user agent

- Improve Winston logger configuration for production
  - Add automatic log rotation (10MB errors, 50MB combined)
  - Create separate security.log for auth/rate limit events
  - Ensure logs directory exists automatically
  - Add structured JSON format for log aggregation
  - Support container logging with LOG_TO_CONSOLE env var

- Create comprehensive documentation
  - Security logging guide with examples
  - Monitoring recommendations
  - Configuration reference

- Add test script to verify logging functionality

All rate limit settings remain configurable via admin panel:
- Window duration, max requests, auth limits
- Skip authenticated requests option
- Public endpoints only option

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 16:57:07 +02:00

7.5 KiB

PicPeak Security Scan Report

Date: January 12, 2025
Scan Type: Comprehensive Security Audit
Platform: PicPeak Photo Sharing Platform
Scanner: Claude Code Security Scanner

Executive Summary

A comprehensive security scan of the PicPeak photo sharing platform reveals critical vulnerabilities that require immediate attention. While the application implements some security best practices, several high-severity issues could lead to data breaches, unauthorized access, and system compromise.

Overall Risk Assessment: HIGH 🔴

Critical Issues Found: 8
High-Risk Issues: 7
Medium-Risk Issues: 6
Low-Risk Issues: 2

Critical Vulnerabilities Requiring Immediate Action

1. Hardcoded Secrets and Credentials 🔴

JWT Secret Fallback

  • Location: backend/src/routes/protectedImages.js:15,27
  • Severity: CRITICAL
  • Impact: Complete authentication bypass if environment variable not set
const secret = process.env.JWT_SECRET || 'your-secret-key'; // VULNERABLE

Default Admin Password

  • Location: backend/migrations/init.js:14, setup-remaining-files.sh:121
  • Severity: HIGH
  • Impact: Known default credentials allow unauthorized admin access
  • Current: Hardcoded admin123 password

2. SQL Injection Vulnerabilities 🔴

Direct Template Literal Interpolation

  • Location: backend/src/routes/adminDashboard.js:214,221,227,252,269
  • Severity: HIGH
  • Impact: Potential database compromise
.whereRaw(`timestamp >= datetime("now", "-${days} days")`) // VULNERABLE

LIKE Query Injection

  • Locations:
    • backend/src/routes/adminPhotos.js:476
    • backend/src/routes/adminEvents.js:156-158
  • Severity: MEDIUM
  • Impact: Query manipulation through special characters

3. Authentication & Authorization Flaws 🔴

Missing Token Type Validation

  • Location: Admin middleware
  • Severity: HIGH
  • Impact: Gallery tokens could potentially access admin endpoints

Weak Password Requirements

  • Current: Only 6 characters minimum
  • Severity: MEDIUM
  • Impact: Vulnerable to brute force attacks

Rate Limiting Bypass

  • Location: backend/server.js:57-73
  • Severity: HIGH
  • Impact: Invalid JWT tokens bypass rate limiting

4. Cross-Site Scripting (XSS) 🔴

Stored XSS in CMS

  • Location: frontend/src/pages/public/LegalPage.tsx:106
  • Severity: CRITICAL
  • Impact: Malicious scripts execute for all visitors
dangerouslySetInnerHTML={{ __html: page.content }} // VULNERABLE

5. File Upload Vulnerabilities 🟡

Path Traversal Risk

  • Location: backend/server.js:104-110
  • Severity: HIGH
  • Impact: Access to files outside intended directories

Insufficient MIME Type Validation

  • Multiple locations
  • Severity: MEDIUM
  • Impact: Malicious file upload bypass

6. Security Headers & Configuration 🟡

Missing Critical Headers

  • Missing: CSP, X-Frame-Options, Strict-Transport-Security
  • Severity: MEDIUM
  • Impact: Reduced defense against various attacks

Permissive CORS Configuration

  • Location: backend/server.js:30-49
  • Severity: MEDIUM
  • Impact: Allows multiple origins including localhost

Dependency Analysis

NPM Audit Results

  • Backend: 0 vulnerabilities found
  • Frontend: 0 vulnerabilities found
  • Status: All dependencies are up to date

Detailed Findings by Category

Authentication Security

  1. JWT Implementation Issues:

    • No refresh token mechanism
    • 24-hour token expiration for all types
    • No token revocation capability
    • Hardcoded fallback secret
  2. Session Management:

    • In-memory session storage (not scalable)
    • No Redis implementation despite comments
    • Incomplete session cleanup
  3. Password Security:

    • Weak requirements (6 chars minimum)
    • Fixed bcrypt rounds (10)
    • No password complexity requirements
    • No breach checking

Data Security

  1. SQL Injection Risks:

    • Template literal interpolation in whereRaw()
    • Unescaped LIKE queries
    • Missing input validation on some parameters
  2. XSS Vulnerabilities:

    • Stored XSS in CMS content
    • No Content Security Policy
    • Missing output encoding in some areas
  3. Information Disclosure:

    • Detailed error messages exposed
    • Console.error statements with sensitive data
    • No audit logging for security events

Infrastructure Security

  1. File Upload Issues:

    • Path traversal vulnerability
    • Weak MIME type validation
    • No virus scanning
    • Missing content validation
  2. Network Security:

    • Missing security headers
    • Permissive CORS policy
    • No HTTPS enforcement
    • Rate limiting can be bypassed

Priority 1: Critical (Implement Immediately)

  1. Remove Hardcoded Secrets
// Replace fallback with error
const secret = process.env.JWT_SECRET;
if (!secret) {
  throw new Error('JWT_SECRET environment variable is required');
}
  1. Fix SQL Injection
// Use parameterized queries
.whereRaw('timestamp >= datetime("now", ? || " days")', [`-${days}`])
  1. Sanitize CMS Content
import DOMPurify from 'dompurify';
dangerouslySetInnerHTML={{ __html: DOMPurify.sanitize(page.content) }}

Priority 2: High (Implement Within 1 Week)

  1. Add Token Type Validation
if (decoded.type !== 'admin') {
  return res.status(401).json({ error: 'Invalid token type' });
}
  1. Implement Security Headers
app.use(helmet({
  contentSecurityPolicy: {
    directives: {
      defaultSrc: ["'self'"],
      scriptSrc: ["'self'", "'unsafe-inline'"],
      styleSrc: ["'self'", "'unsafe-inline'"],
      imgSrc: ["'self'", "data:", "https:"],
    },
  },
}));
  1. Fix Rate Limiting Bypass
// Check token validity before skipping rate limit
try {
  const decoded = jwt.verify(token, process.env.JWT_SECRET);
  return decoded && decoded.type === 'admin';
} catch (err) {
  return false; // Apply rate limiting on invalid tokens
}

Priority 3: Medium (Implement Within 1 Month)

  1. Enhance Password Security

    • Minimum 12 characters
    • Complexity requirements
    • Breach checking integration
  2. Implement File Security

    • Content-based validation
    • Path traversal protection
    • Virus scanning
  3. Add Security Monitoring

    • Audit logging
    • Failed login tracking
    • Anomaly detection

Security Checklist

  • Remove all hardcoded secrets
  • Fix SQL injection vulnerabilities
  • Add XSS protection (DOMPurify)
  • Implement proper token validation
  • Add all security headers
  • Fix rate limiting bypass
  • Enhance password requirements
  • Add file upload security
  • Implement audit logging
  • Set up security monitoring
  • Document security procedures
  • Conduct penetration testing

Conclusion

The PicPeak platform has significant security vulnerabilities that need immediate attention. The most critical issues are hardcoded secrets, SQL injection risks, and stored XSS vulnerabilities. While the codebase shows some security awareness (bcrypt hashing, JWT usage, input validation), the implementation has serious flaws that could lead to system compromise.

Recommended Action: Address all critical vulnerabilities immediately before deploying to production. Consider a professional security audit after implementing these fixes.


Generated by Claude Code Security Scanner
Scan completed: 2025-01-12