Changelog

Version 2.2.0 (April 7, 2026) - Production Ready Release

  • Documentation: Complete production deployment guide (PRODUCTION.md)
  • Production: Nginx serverblock configuration with SSL/TLS
  • Production: Let's Encrypt certificate generation guide
  • Security: Production checklist with 10+ verification steps
  • Backups: Automated database backup scripts and restoration procedures
  • Monitoring: Logging configuration and health check monitoring
  • Performance: Docker resource limits and Nginx caching tuning
  • Logging: LOG_LEVEL set to WARN for production
  • Logging: File-based logging enabled by default
  • Configuration: Production environment fully configured in .env
  • Docker: docker-compose.prod.yml ready for deployment
  • Testing: All production deployment scenarios verified
  • Status: ✅ Production-ready deployment

Version 2.1.2 (April 7, 2026) - Docker Permission Fixes & UI Cleanup

  • Bugfix: CRITICAL - Fixed Docker EACCES: permission denied error when writing .env file
  • Bugfix: Non-root Docker user (nodejs:1001) can now start without permission errors
  • Improvement: Environment initialization now gracefully handles read-only filesystems
  • Improvement: Keys are auto-generated in-memory if not provided via environment variables
  • Improvement: Docker can now be run without pre-existing .env file
  • Docker: Dockerfile now creates .env with correct permissions for nodejs user
  • Docker: Development mode (docker-compose.yml) now allows optional key generation
  • UI: Removed Security Notice warning box (unnecessary notification)
  • UI: Removed form field animations for cleaner, faster interface
  • Bugfix: Fixed missing decryptFile() function in view.js attachment handling
  • Feature: Attachment decryption now properly implemented with file metadata
  • Port: Changed from 3000 to 9285 across all configurations

Version 2.1.1 (April 7, 2026) - Critical Security Audit & Fixes

  • Security: CRITICAL FIX - Database encryption now uses per-note random salt
  • Security: Fixed salt reuse vulnerability that broke decryption after server restart
  • Security: Each encrypted value now includes: IV:Salt:Ciphertext format for proper recovery
  • Security: Data persistence guaranteed across server restarts and redeploys
  • Security: Proper backward compatibility for legacy note format detection
  • Security: Unified attachment size limit to 10MB (client and server)
  • Security: Consistent file size validation across all interfaces
  • Bugfix: FIXED - Helmet CSP configuration error (upgradeInsecureRequests invalid directive syntax)
  • Bugfix: Removed invalid CSP directive value that caused server startup failure
  • Bugfix: HTTPS upgrades now properly delegated to reverse proxy level (Nginx)
  • Documentation: Comprehensive security audit report added (SECURITY_AUDIT.md)
  • Testing: Coverage improvements for cryptographic operations
  • Quality: Code review and hardening based on security audit

Version 2.1.0 (April 6, 2026) - Docker & Security Hardening

  • Docker: Complete Docker containerization with Alpine Linux for production
  • Docker: Multi-stage Dockerfile with optimized image size (~150MB)
  • Docker: docker-compose.yml for development environment
  • Docker: docker-compose.prod.yml with Nginx reverse proxy setup
  • Docker: Health checks and resource limits configured
  • Docker: Non-root user execution for security
  • Deployment: Deploy script (deploy.sh) for easy dev/prod deployment
  • Deployment: Nginx configuration with SSL/TLS support and security headers
  • Deployment: Complete DOCKER.md guide for deployment procedures
  • Configuration: .env.example template with production checklist
  • Security: Fixed hardcoded salt in database encryption (CRITICAL)
  • Security: Improved random IV generation for each encryption operation
  • Security: Reduced JSON body size limit from 50MB to 5MB to prevent DoS
  • Security: Removed detailed validation error messages exposed to clients
  • Security: Improved Helmet CSP with upgrade-insecure-requests directive
  • Security: Reduced attachment size limit from 15MB to 10MB
  • Security: Added additional archive file extensions to blacklist (.bz2, .xz, .iso)
  • Security: Generic error messages to prevent information disclosure
  • Security: Improved logging to not expose sensitive information
  • Infrastructure: .dockerignore for cleaner Docker builds
  • Documentation: Comprehensive Docker deployment guide
  • Linux Ready: Full Linux/Kubernetes compatibility with Docker

Version 2.0.0 (April 6, 2026) - Security Simplification

  • Redesign: Complete UI overhaul with modern dark mode design
  • Security: Removed unnecessary forensic countermeasures (multiple-pass overwrites, VACUUM operations)
  • Security: Simplified security architecture while maintaining strong encryption
  • Performance: Improved server performance by removing complex deletion operations
  • Logging: Moved to minimal, non-persistent logging approach
  • Developer: Localhost excluded from rate limiting for easier development
  • Documentation: Updated privacy policy and security documentation to reflect simplified approach
  • Architecture: Reduced codebase complexity while improving maintainability

Version 1.4.0 (September 6, 2025)

  • Security: Implemented database encryption at rest with AES-256-CBC
  • Security: Auto-generation of secure encryption keys (DB, session, CSRF)
  • Security: Added protection against zip bombs and malicious compressed files
  • Security: Implemented magic byte detection for compressed file types
  • Security: Added compression ratio analysis to detect zip bombs
  • Security: Enhanced rate limiting with environment variable configuration
  • Security: Fixed critical client-side sanitization vulnerability in sanitize.js
  • Security: Implemented dynamic CSP nonce generation per request (prevents nonce reuse attacks)
  • Security: Enhanced timing attack protection with constant response delays
  • Security: Added comprehensive file-type validation with whitelist approach
  • Security: Implemented persistent audit logging with automatic 30-day retention
  • Security: Added file-based audit log storage with daily rotation
  • Security: Removed honeypot bot detection (user preference for better UX)
  • New: Added forensic-grade secure delete button for browser memory clearing
  • New: Implemented multiple-overwrite deletion of note content and attachments
  • New: Added blob URL revocation for secure attachment cleanup
  • New: Secure delete automatically redirects to main page after completion
  • Improved: Comprehensive error handling system with visual feedback
  • Improved: Professional error display with retry functionality
  • Improved: Form validation with field-specific error messages
  • Improved: Toast notifications for user feedback
  • Improved: HTTP status code specific error handling
  • Improved: Minimalistic animations that match website design
  • Improved: Switched from better-sqlite3 to sqlite3 for better Windows compatibility
  • Improved: Fixed deprecated crypto API usage (createCipher → createCipheriv)
  • Improved: Enhanced environment variable management with .env parsing
  • Improved: Removed MIME type validation for more flexible file uploads
  • Improved: Replaced browser-incompatible DOMPurify/JSDOM with native sanitization
  • Improved: Enhanced error handling with detailed logging and safe client responses
  • Improved: Strengthened XSS protection across all user inputs
  • Fixed: CSP violations from inline styles and data URLs
  • Fixed: CSP policy updated to allow data: and blob: URLs for file previews
  • Fixed: Loading message appearing on page load without user action
  • Fixed: Prevented encryption key regeneration on server restart
  • Fixed: Removed entropy check that blocked encrypted files
  • Fixed: URL encoding issue in note link generation
  • Removed: All debug code and test files for production readiness
  • Removed: Client-side screenshot protection (ineffective and UX-breaking)

Version 1.3.0 (May 17, 2025)

  • New: Renamed service to CryptDrop
  • New: Updated GitHub repository information
  • Improved: Enhanced README documentation
  • Improved: Streamlined Privacy Policy

Version 1.2.0 (May 17, 2025)

  • New: Added forensic countermeasures documentation page
  • New: Implemented changelog page
  • Improved: Updated footer links on all pages
  • Improved: Added CSS styles for new pages

Version 1.1.0 (May 15, 2025)

  • Fixed: Improved confirmation mechanism - notes are now only deleted after confirmation
  • New: Added endpoint for note metadata without deletion
  • New: Added Privacy Policy and FAQ pages
  • Improved: Footer with links to Privacy Policy and FAQ
  • Improved: Redesigned entire UI for better user experience

Version 1.0.0 (May 10, 2025)

  • New: Initial implementation of the CryptDrop application
  • New: File attachments functionality (encrypted)
  • New: Confirmation step before viewing notes
  • New: Implemented forensic countermeasures
  • Security: Implemented comprehensive XSS protection measures
  • Security: Zero-knowledge architecture for maximum privacy
  • Security: Added DOM-Purify and XSS protection filters
  • Security: Input validation and sanitization for all data
  • Security: Rate-limiting to protect against brute-force attacks
  • Improved: Set up Content-Security-Policy

Technical Implementation Details

Security Improvements

  • Implementation of Helmet for secure HTTP headers
  • XSS protection through Content-Security-Policy with dynamic nonces
  • Built-in rate limiters for API endpoints
  • Enhanced client-side sanitization with browser-compatible implementation
  • Secure methods for file deletion in the database
  • Timing attack mitigation with constant response delays
  • Comprehensive input validation and output encoding

Database Changes

  • Schema extended to support file attachments
  • Implementation of secure deletion (DoD 5220.22-M standard)
  • Automatic vacuuming after deletion operations

Frontend Changes

  • UI redesign for better UX
  • Two-step process for viewing notes
  • Client-side encryption with WebCrypto API
  • Memory clearing functions after encryption/decryption

New Dependencies

  • dompurify: For client-side sanitization
  • xss: For additional XSS protection
  • express-rate-limit: For limiting requests
  • express-validator: For input validation
  • sanitize-html: For HTML sanitization
  • cookie-parser: For potential authentication features