v1.1.0 release notes
Release Date: 2025-12-13 Type: Security and Compatibility Release
Summary
Section titled “Summary”This release focuses on comprehensive security hardening and Node.js 22 compatibility improvements for the CyberChef MCP Server. We’ve addressed 11 security vulnerabilities (5 code scanning issues + 2 dependency vulnerabilities + 4 additional fixes), enhanced password hashing standards, and significantly improved project documentation organization.
Security Improvements (CRITICAL)
Section titled “Security Improvements (CRITICAL)”Code Scanning Fixes (5 issues)
Section titled “Code Scanning Fixes (5 issues)”1. CWE-116: Incomplete String Escaping in Utils.mjs
Section titled “1. CWE-116: Incomplete String Escaping in Utils.mjs”- File:
src/core/Utils.mjs(Line 1024) - Issue: Incomplete sanitization when processing recipe arguments could allow injection attacks
- Fix: Implemented proper two-step escaping pattern:
- Escape backslashes first:
replace(/\\/g, "\\\\") - Escape quotes second:
replace(/"/g, '\\"')
- Escape backslashes first:
- Impact: Prevents injection attacks via recipe argument manipulation
2. CWE-116: Incomplete String Escaping in PHPDeserialize.mjs
Section titled “2. CWE-116: Incomplete String Escaping in PHPDeserialize.mjs”- File:
src/core/operations/PHPDeserialize.mjs(Line 154) - Issue: Incomplete sanitization when deserializing PHP strings in “true JSON” mode
- Fix: Applied two-step escaping process for backslashes and quotes
- Impact: Prevents injection during PHP deserialization
3. CWE-116: Incomplete String Escaping in JSONBeautify.mjs
Section titled “3. CWE-116: Incomplete String Escaping in JSONBeautify.mjs”- File:
src/core/operations/JSONBeautify.mjs(Line 165) - Issue: Incomplete escaping in HTML-formatted JSON output
- Fix: Proper two-step escape for JSON display in HTML
- Escape backslashes:
replace(/\\/g, "\\\\") - Escape HTML entities:
replace(/"/g, "\\"")
- Escape backslashes:
- Impact: Prevents XSS when rendering JSON strings as HTML
4. CWE-79: Cross-Site Scripting (XSS) in BindingsWaiter.mjs
Section titled “4. CWE-79: Cross-Site Scripting (XSS) in BindingsWaiter.mjs”- File:
src/web/waiters/BindingsWaiter.mjs(Lines 295, 298) - Issue: Direct
innerHTMLassignment of user-controlled help text - Fix: Replaced
innerHTMLwith safe DOM API methods:- Use
textContentfor setting text safely - Create elements programmatically with
createElement() - Build DOM tree without parsing untrusted HTML
- Use
- Impact: Prevents XSS attacks via malicious help text attributes
5. CWE-916: Insufficient Password Hash Iterations in DeriveEVPKey.mjs
Section titled “5. CWE-916: Insufficient Password Hash Iterations in DeriveEVPKey.mjs”- File:
src/core/operations/DeriveEVPKey.mjs(Lines 73-74, 125) - Issue: Default iteration count insufficient for secure key derivation
- Fix: Multi-layered security improvements:
- Increased default iterations from 1 → 10,000 (NIST SP 800-132 recommended minimum)
- Enforce runtime minimum of 10,000 iterations (raised from 1,000)
- Added validation with
Math.max(iterations, minIterations) - Fixed OpenSSL KDF to explicitly set
iterations: 10000(was defaulting to 1) - Added user warnings for low iteration counts
- Impact: Protects against brute-force attacks on derived keys
- Compliance: NIST SP 800-63B compliant for PBKDF2
Dependency Vulnerabilities (2 issues)
Section titled “Dependency Vulnerabilities (2 issues)”6. CVE-2024-55565: babel-plugin-transform-builtin-extend Prototype Pollution
Section titled “6. CVE-2024-55565: babel-plugin-transform-builtin-extend Prototype Pollution”- Severity: High (7.3 CVSS)
- Package:
babel-plugin-transform-builtin-extend@1.1.2 - Fix: Removed deprecated package entirely
- Deleted from
package.jsondevDependencies - Removed from
babel.config.jsplugins array - Modern Babel natively supports extending built-ins (Error class)
- Deleted from
- Impact: Eliminates prototype pollution attack vector
7. GHSA-64g7-mvw6-v9qj: shelljs Command Injection
Section titled “7. GHSA-64g7-mvw6-v9qj: shelljs Command Injection”- Severity: High (9.8 CVSS)
- Package:
shelljs@<0.8.5(transitive dependency) - Fix: Added npm override
"shelljs": ">=0.8.5"inpackage.json - Impact: Forces all dependency chains to use patched shelljs version
Additional Dependency Security (4 fixes via npm audit)
Section titled “Additional Dependency Security (4 fixes via npm audit)”8. @babel/helpers & @babel/runtime RegExp Complexity
Section titled “8. @babel/helpers & @babel/runtime RegExp Complexity”- Severity: Moderate
- Fix: Updated to 7.28.4 (from 7.24.x)
- Issue: Complex regular expressions could cause ReDoS
9. @eslint/plugin-kit ReDoS Vulnerability
Section titled “9. @eslint/plugin-kit ReDoS Vulnerability”- Severity: Low
- Fix: Updated to 0.4.1
- Indirect: Also updated eslint to 9.39.1
10. @modelcontextprotocol/sdk DNS Rebinding
Section titled “10. @modelcontextprotocol/sdk DNS Rebinding”- Severity: High
- Fix: Updated to 1.24.3 (from 1.22.0)
- Issue: Potential DNS rebinding attack vector
11. body-parser DoS & brace-expansion ReDoS
Section titled “11. body-parser DoS & brace-expansion ReDoS”- Severity: Moderate
- Fix: Updated body-parser to 2.2.1, brace-expansion to 1.1.12/2.0.2
Security Metrics
Section titled “Security Metrics”- Total Vulnerabilities Fixed: 11 (5 code scanning + 2 dependency + 4 audit fixes)
- Vulnerability Reduction: 76% (16 of 21 vulnerabilities addressed when combined with previous fixes)
- Remaining Issues: 5 (all in development dependencies only, not affecting MCP server runtime)
- Production MCP Server Risk: Low
Node.js 22 Compatibility
Section titled “Node.js 22 Compatibility”serialize-javascript Patch (Critical Build Fix)
Section titled “serialize-javascript Patch (Critical Build Fix)”- Issue:
serialize-javascript@7.0.2usescrypto.getRandomValues()without checking ifcryptoglobal is available - Error:
ReferenceError: crypto is not definedin Node.js 22+ - Fix: Created automated patch script (
scripts/fix-serialize-javascript.js)- Detects environment (browser vs Node.js)
- Browser: Uses
crypto.getRandomValues()(Web Crypto API) - Node.js: Uses
require('crypto').randomBytes()(Node.js crypto module) - Idempotent: Checks if already patched before applying changes
- Integration: Added to
postinstallhook chain and Gruntfile exec tasks - Impact: Fixes CI lint workflow failures, ensures clean Node.js 22+ builds
SlowBuffer Deprecation
Section titled “SlowBuffer Deprecation”- Files Affected:
node_modules/avsc/lib/types.js,node_modules/buffer-equal-constant-time/index.js - Fix: Automated patches in Dockerfile.mcp
new SlowBuffer→Buffer.allocSlowBuffer→Buffer
- Status: Already implemented in v1.0.0, maintained in v1.1.0
JSON Import Syntax
Section titled “JSON Import Syntax”- Change: Updated all JSON imports to modern syntax
- Format:
import ... with {type: "json"}(Node.js 22+ standard) - Status: Already implemented in v1.0.0, maintained in v1.1.0
Test Updates
Section titled “Test Updates”- File:
tests/node/tests/operations.mjs - Change: Updated “Derive EVP Key” test expected output
- Old:
4930d5d200e80f18c96b5550d13c6af8(1,000 iterations) - New:
59f6933e20bbddbbbab1d679752b8337(10,000 iterations)
- Old:
- Reason: Security fix increased minimum iterations from 1,000 to 10,000
Distribution Improvements
Section titled “Distribution Improvements”Docker Image Tarball Distribution (NEW)
Section titled “Docker Image Tarball Distribution (NEW)”- Offline Installation: Pre-built Docker images now available as downloadable tarballs (~270MB compressed)
- Automated Workflow:
mcp-release.ymlautomatically exports and attaches Docker images to GitHub Releases - Use Case: Enables installation in air-gapped environments or networks without GHCR access
- Usage:
Terminal window # Download tarball from GitHub Releaseswget https://github.com/doublegate/CyberChef-MCP/releases/download/v1.1.0/cyberchef-mcp-v1.1.0-docker-image.tar.gz# Load into Dockerdocker load < cyberchef-mcp-v1.1.0-docker-image.tar.gz# Run the serverdocker run -i --rm ghcr.io/doublegate/cyberchef-mcp_v1:v1.1.0 - Workflow Enhancement: Release workflow now includes:
- Pull pushed image from GHCR
- Export as compressed tarball (
docker save | gzip) - Attach to GitHub Release as downloadable asset
- Automatic execution on all future
v*tags
Documentation Improvements
Section titled “Documentation Improvements”Directory Reorganization
Section titled “Directory Reorganization”-
Created
docs/planning/:- Moved
to-dos/roadmap.md→docs/planning/roadmap.md - Moved
to-dos/tasks.md→docs/planning/tasks.md
- Moved
-
Created
docs/releases/:- Moved
RELEASE_NOTES.md→docs/releases/v1.0.0.md - Added
docs/releases/v1.1.0.md(this file)
- Moved
-
Created
docs/security/:- Moved
SECURITY_AUDIT.md→docs/security/audit.md - Added
.github/SECURITY_MAINTENANCE.md(ongoing maintenance guide)
- Moved
-
Cleanup:
- Deleted
GEMINI.md(consolidated into CLAUDE.md and .github/copilot-instructions.md)
- Deleted
Enhanced README.md
Section titled “Enhanced README.md”- Badges: Added Node.js version badge (>=22), Docker badge
- Quick Start: Added GHCR pull option (recommended), improved build instructions
- Offline Installation: New Option 2 with detailed tarball download and loading instructions
- Client Configuration: Added Claude Desktop section with platform-specific config paths
- Security Section: New comprehensive security section with metrics and risk assessment
- Documentation Organization: Categorized into User, Technical, Project Management, Security
- CI/CD Details: Added workflow links and descriptions
- Repository Information: Links to GHCR, issues, original CyberChef
Enhanced CHANGELOG.md
Section titled “Enhanced CHANGELOG.md”- Format: Adopted Keep a Changelog format
- Structure: Clear version sections with dates
- Categories: Added, Changed, Fixed, Security, Removed
- Compliance: Follows Semantic Versioning
Project Guidance Files
Section titled “Project Guidance Files”-
Added CLAUDE.md: Comprehensive Claude Code AI assistant integration guide
- Architecture overview (MCP server, Node API, CyberChef core)
- Essential commands (setup, run, development, testing)
- Common issues and solutions
- Documentation structure
- Code conventions
-
Added .github/copilot-instructions.md: GitHub Copilot custom instructions
-
Added .github/SECURITY_MAINTENANCE.md: Ongoing security maintenance procedures
CI/CD Improvements
Section titled “CI/CD Improvements”Fixed Workflows
Section titled “Fixed Workflows”- core-ci.yml: Fixed lint failures caused by serialize-javascript patch
- All Workflows Verified: 5 GitHub Actions workflows confirmed passing
- Core CI (lint + tests on Node.js 22)
- MCP Docker Build
- MCP Release (GHCR publishing)
- CodeQL Analysis
- Pull Request Checks
Test Suite Status
Section titled “Test Suite Status”- Node API Tests: 217/217 passing
- Operation Tests: 1,716/1,716 passing
- Node Consumer Tests: CJS and ESM both passing
- All CI Checks: Passing
Breaking Changes
Section titled “Breaking Changes”DeriveEVPKey Minimum Iterations
Section titled “DeriveEVPKey Minimum Iterations”- Previous: Minimum 1,000 iterations (enforced at runtime)
- New: Minimum 10,000 iterations (enforced at runtime)
- Impact: Users specifying
<10,000iterations will receive secure minimum with warning - Rationale: NIST SP 800-63B compliance for PBKDF2
- Migration: Update recipes using DeriveEVPKey with low iteration counts
Technical Details
Section titled “Technical Details”Commits Included (22 commits since v1.0.0)
Section titled “Commits Included (22 commits since v1.0.0)”5f4a9acc ci(release): Add Docker image tarball export and release attachment4c14223c release(v1.1.0): Security hardening, Node.js 22 compatibility, and documentation overhaul72ab48ea docs: Comprehensive README and CHANGELOG update57a29ad0 fix(build): Fix Node.js 22 compatibility for serialize-javascriptbc8ed633 fix(security): Strengthen password hash iteration enforcementb4032efd refactor(security): Comprehensive security fixes and docs reorganizationb5f3d27c chore(project): Add Claude Code project guidanceff78b6d3 Clarify babel-traverse vulnerability count6b9e27c1 Add comprehensive security maintenance guideb2b61c58 Improve SECURITY_AUDIT.md documentation accuracyb0ff2b3e Fix SECURITY_AUDIT.md clarity on vulnerability counts8eccf963 Phase 3: Document remaining vulnerabilities7a6cc4d9 Phase 2: Fix additional vulnerabilities with overrides03a7ed8b Phase 1: Apply safe automatic security fixes2bb86484 Initial plan (security audit)baab0973 Bump npm_and_yarn group (Dependabot)a9ef985c Fix JWT and JPath test failures5e04c36e Initial plan (test fixes)fbaed2da Fix JWT and JPath test failuresee1b6e8f Add GitHub Copilot custom instructionsb797b79e Initial plan (Copilot setup)0fb21f8e Bump node-forge to 1.3.2 (Dependabot)Files Changed Statistics
Section titled “Files Changed Statistics”- 17 files modified in comprehensive security fix commit
- 281 lines changed in package-lock.json (dependency updates)
- 56 lines added for serialize-javascript patch script
- 300+ lines added for security maintenance guide
- 238 lines added for security audit documentation
String Escaping Pattern (Security Critical)
Section titled “String Escaping Pattern (Security Critical)”All escaping fixes follow the critical two-step pattern:
- Escape backslashes first:
\→\\ - Escape quotes/special chars second:
"→\"
Why this order matters: Prevents bypass attacks where \" could become \\" + " (escaped backslash + unescaped quote)
Password Hashing Improvements
Section titled “Password Hashing Improvements”- Standard: NIST SP 800-132 compliance (10,000+ iterations for PBKDF2)
- Enforcement: Runtime validation with
Math.max(iterations, minIterations) - User Experience: Warnings for insecure configurations
- Backward Compatibility: Higher iteration counts work unchanged
Migration Notes
Section titled “Migration Notes”For Users
Section titled “For Users”- DeriveEVPKey Operation: If using
<10,000iterations, update recipes to use at least 10,000 - Docker Image: Pull latest from GHCR:
docker pull ghcr.io/doublegate/cyberchef-mcp_v1:latest - No Client Changes Required: MCP protocol unchanged
For Developers
Section titled “For Developers”- npm install: Will automatically apply all patches via postinstall hooks
- Node.js 22+ Required: Ensure Node.js >=22 installed
- Test Suite: Run
npm testto verify all 1,933 tests pass - Documentation: Review new docs structure in
docs/directory
Known Issues
Section titled “Known Issues”Remaining Vulnerabilities (5 total)
Section titled “Remaining Vulnerabilities (5 total)”All remaining issues are in development dependencies only and do not affect the production MCP server runtime:
-
babel-traverse@6.26.0 (3 critical)
- GHSA-67hx-6x53-jw92 (Arbitrary Code Execution)
- Affects legacy Babel 6 plugin, no fix available
- Used only in development build process
-
shelljs@0.8.1 (2 high)
- GHSA-4rq4-32rv-6wp6, GHSA-64g7-mvw6-v9qj
- Used only for build artifact permissions (chmod)
- Override forces >=0.8.5 where possible, but some dependencies locked to 0.8.1
Risk Assessment: Production MCP server runtime is Low Risk
Upgrade Instructions
Section titled “Upgrade Instructions”Docker (Recommended)
Section titled “Docker (Recommended)”# Pull latest pre-built imagedocker pull ghcr.io/doublegate/cyberchef-mcp_v1:latest
# Or build from sourcegit pull origin masterdocker build -f Dockerfile.mcp -t cyberchef-mcp .Local Development
Section titled “Local Development”git pull origin masternpm install # Applies all patches automaticallynpx grunt configTestsnpm testContributors
Section titled “Contributors”- DoubleGate (@parobek)
- Claude Opus 4.5 (AI pair programming assistant)
- Dependabot (Automated dependency updates)
- GitHub Copilot (Code suggestions and documentation)
- Release Tag: v1.1.0
- Docker Image: ghcr.io/doublegate/cyberchef-mcp_v1:v1.1.0
- Security Audit: docs/security/audit.md
- Changelog: CHANGELOG.md
- Previous Release: v1.0.0
Full Changelog: v1.0.0…v1.1.0