Skip to content

Development Environment Setup Script#100

Open
paychex-gcarlson wants to merge 56 commits intomainfrom
feature/AIA-1974_dev-env-script-rebased
Open

Development Environment Setup Script#100
paychex-gcarlson wants to merge 56 commits intomainfrom
feature/AIA-1974_dev-env-script-rebased

Conversation

@paychex-gcarlson
Copy link
Copy Markdown

@paychex-gcarlson paychex-gcarlson commented Jan 30, 2026

LibreChat VDI Development Environment Setup Script

Overview

This PR introduces an automated setup script for LibreChat local development on Paychex VDIs (Ubuntu and Rocky Linux), along with a complete Docker-based testing framework. The script handles all aspects of environment setup including security-compliant configuration management, VDI-specific optimizations, and robust error handling.

Key Features

🔒 Security & Compliance

Protected Internal Infrastructure:

  • Implements template pattern for Docker daemon configuration to prevent exposing Paychex internal URLs
  • docker-daemon.json.example committed with placeholder URLs (<your-registry-N.example.com>)
  • docker-daemon.json.local (git-ignored) holds actual registry URLs
  • Comment-stripping logic ensures daemon.json contains valid JSON
  • Pre-commit hook checks prevent accidental credential commits

🖥️ Paychex VDI Optimizations

Docker Home Relocation:

  • Automatically moves Docker data from /var/lib/docker to /home/docker
  • Creates transparent symlink for Docker operation
  • Prevents filling the smaller /var partition on VDI systems
  • Handles existing Docker installations gracefully

MongoDB 4.4 Compatibility:

  • Uses MongoDB 4.4 for CPUs without AVX support (common in VDI environments)
  • Correctly uses mongo shell (not mongosh which requires MongoDB 5.0+)
  • Auto-generates random credentials for local development security
  • Implements proper healthcheck with 30-second timeout

Certificate Handling:

  • Configures npm to use system CA certificates
  • Supports paychex-root.pem for corporate SSL inspection
  • Handles both Ubuntu and Rocky Linux certificate locations

🚀 Developer Experience

Interactive Guidance:

  • Prompts for Docker registry configuration with step-by-step instructions
  • Offers to apply docker group permissions in current session
  • Provides clear error messages and recovery instructions
  • Validates configuration before proceeding

Idempotent & Resilient:

  • Safely re-runnable after failures or interruptions
  • Detects and repairs common configuration issues
  • Skips already-installed components intelligently
  • Supports incremental setup (install missing pieces only)

Flexible Deployment Modes:

  • Native Mode: MongoDB in Docker, app via npm (hot reload for development)
  • Docker Compose Mode: All services in containers (production-like testing)
  • Both Modes: Sets up both with configuration instructions to switch

🧪 Testing Framework

Docker-based Validation:

  • Automated test runners for Ubuntu 24.04 and Rocky Linux 9
  • Interactive test environments for debugging
  • Tests run in isolated containers to simulate fresh VDI installs
  • CI-ready with proper exit codes

Test Script Options:

./test-docker-ubuntu.sh              # Standard test
./test-docker-ubuntu.sh --fresh      # Rebuild from scratch
./test-docker-ubuntu.sh --branch X   # Test specific Git branch

Files Added/Modified

Core Setup Script

  • dev-setup/setup-dev-env.sh (2,438 lines)
    • Complete automated setup for Ubuntu and Rocky Linux
    • Handles: Node.js (via nvm), Docker, MongoDB, GitHub CLI, VS Code
    • VDI-specific configurations and optimizations
    • Comprehensive error handling and user guidance

Configuration Management

  • docker-daemon.json.example - Public template with placeholder registry URLs
  • .gitignore - Added patterns for git-ignored files:
    • docker-daemon.json.local (user's actual registry config)
    • Backup files (*.bak, *.backup, *docker-compose-override*.bak*)

Documentation

  • dev-setup/README.md - Comprehensive setup guide including:
    • Quick start instructions
    • Prerequisites for Paychex developers
    • Security considerations and template pattern explanation
    • VDI-specific features and optimizations
    • Deployment modes comparison
    • Troubleshooting guide
    • Testing framework usage
    • CI/CD integration examples

Testing Framework

Test Runners:

  • test-docker-ubuntu.sh - Non-interactive Ubuntu validation (CI-ready)
  • test-docker-rocky.sh - Non-interactive Rocky Linux validation (CI-ready)
  • interactive-test-ubuntu.sh - Interactive Ubuntu test environment
  • interactive-test-rocky.sh - Interactive Rocky test environment

Container Definitions:

  • Dockerfile.test-ubuntu - Ubuntu 24.04 test container with LibreChat prerequisites
  • Dockerfile.test-rocky - Rocky Linux 9 test container with enterprise Linux setup

Run Scripts (Previously Created)

  • run-backend.sh - Start LibreChat API server (native mode)
  • run-frontend.sh - Start React dev server with HMR (native mode)
  • run-docker.sh - Start all services via Docker Compose

Environment Variables for Testing/CI

  • CI=true - Non-interactive mode, uses defaults
  • AUTOMATED_TEST=true - Skips Docker-dependent tests (for basic containers)
  • TEST_MODE=1 - Bypasses LibreChat repository detection

Installed by Script:

  • Node.js 20+ (via nvm)
  • Docker CE 24+
  • Docker Compose plugin
  • GitHub CLI (optional)
  • VS Code (optional)

Review Focus Areas

  1. Security: Template pattern implementation, gitignore entries, no hardcoded URLs
  2. VDI Compatibility: Docker home relocation, MongoDB 4.4, certificate handling
  3. Error Handling: Graceful degradation, helpful error messages, recovery paths
  4. Documentation: Accuracy of README.md, clarity for new developers
  5. Testing: Test scripts properly simulate VDI constraints
  6. Idempotency: Script can be safely re-run without breaking existing setups

Testing Checklist for Reviewers:

# Clone and test
git checkout feature/AIA-1974_dev-env-script-rebased

# Test Ubuntu setup
cd dev-setup
./test-docker-ubuntu.sh

# Test Rocky setup
./test-docker-rocky.sh

# Verify no internal URLs committed
git diff main --name-status | grep -E "docker-daemon|\.env"
git log -p --all -S "paychex.com" -- "*.sh" "*.md"

- Add Node.js/nvm installation with version checking
- Add Docker installation for Ubuntu and Rocky Linux
- Add GitHub CLI installation
- Add MongoDB container setup with authentication
- Implement idempotency checks for all components
- Add user prompts for upgrades and configuration
- Add environment configuration with .env file generation
- Implement JWT secret generation (openssl or fallback)
- Add MongoDB URI configuration
- Add npm dependency installation with idempotency
- Add package build process (data-provider, api, client)
- Interactive prompts for existing configs
- Backup creation for existing .env files
- Add select_deployment_mode() with interactive menu
- Implement setup_native_mode() for npm-based development
- Implement setup_docker_compose_mode() for container setup
- Three options: Native (recommended), Docker Compose, or Both
- Native mode: MongoDB in Docker, app via npm with HMR
- Docker Compose mode: All services containerized
- Graceful handling of missing docker-compose.dev.yml
- Conflict detection for standalone MongoDB container
- Clear usage instructions for each deployment mode
- Integrated into main() function flow
- Added test-phase4.sh validation script
- Add verify_setup() for comprehensive system checks
  * Node.js v20+ version verification
  * npm, Docker, Docker Compose availability
  * MongoDB container status and connectivity test
  * .env file validation with critical variables check
  * Dependencies and package builds verification
  * Clear pass/fail reporting with actionable error messages

- Add test_application() for optional startup test
  * Interactive opt-in (defaults to skip)
  * Runs 'npm run dev' in foreground
  * User can observe startup and press Ctrl+C
  * Helpful error messages for common issues

- Add comprehensive completion message
  * Next steps for Native and Docker Compose modes
  * Quick reference commands
  * Troubleshooting tips
  * Documentation links

- Mark Phase 4 complete in implementation plan
- Add test-phase5.sh validation script
- Script now 1,439 lines (+235 lines)
- Create dev-setup/ directory for better organization
- Move setup-dev-env.sh to dev-setup/
- Move SETUP_SCRIPT_IMPLEMENTATION_PLAN.md to dev-setup/
- Move all test scripts (test-phase*.sh) to dev-setup/
- Prepares for additional Phase 6 test files
Interactive Testing:
- Add interactive-test-ubuntu.sh for manual Ubuntu testing
- Add interactive-test-rocky.sh for manual Rocky Linux testing
- Mounts local LibreChat code into container
- Drops into interactive shell for observation
- Simulates VDI environment with non-root user

Automated Testing:
- Add test-docker-ubuntu.sh for CI Ubuntu testing
- Add test-docker-rocky.sh for CI Rocky Linux testing
- Add Dockerfile.test-ubuntu for Ubuntu test image
- Add Dockerfile.test-rocky for Rocky test image
- Runs setup script non-interactively
- Reports success/failure for CI integration

Script Enhancements:
- Add IS_AUTOMATED flag for CI/test environments
- Update prompt_yes_no() to auto-accept defaults in automated mode
- Update select_deployment_mode() to skip prompts in automated mode
- Add CI and AUTOMATED_TEST environment variable support
- Maintain full interactivity for normal usage

Documentation:
- Add comprehensive dev-setup/README.md
- Usage instructions for all testing modes
- Troubleshooting guide
- CI/CD integration examples
- File structure documentation

Testing modes now available:
1. Manual: ./setup-dev-env.sh (normal interactive usage)
2. Interactive test: ./interactive-test-{ubuntu,rocky}.sh
3. Automated test: ./test-docker-{ubuntu,rocky}.sh
4. Unit tests: ./test-phase*.sh
- Add SCRIPT_DIR detection to find script location
- Detect when script is in dev-setup/ subdirectory
- Automatically change to LibreChat root directory
- Set LIBRECHAT_ROOT variable for future path references
- Resolves package.json not found error when running from dev-setup/

Now works correctly from any location:
  cd dev-setup && ./setup-dev-env.sh  ✓
  ./dev-setup/setup-dev-env.sh         ✓
  cd /anywhere && /path/to/dev-setup/setup-dev-env.sh ✓
Issue #1 - Docker command errors during detection:
- Add check_command docker before running docker ps
- Suppress stderr with 2>/dev/null for cleaner output
- Prevents 'docker: command not found' during environment detection
- MongoDB detection gracefully reports 'not found' when docker missing

Issue #2 - SSL certificate verification failures:
- Add update-ca-certificates to Ubuntu Dockerfile
- Add update-ca-trust to Rocky Linux Dockerfile
- Update interactive test scripts to refresh CA certificates
- Fixes 'curl: (60) SSL certificate problem' errors
- Ensures HTTPS connections work properly in containers

Both interactive and automated testing now handle these edge cases cleanly.
- Mount /usr/local/share/ca-certificates from VDI into containers
- Ubuntu: Update ca-certificates to include mounted certs
- Rocky: Copy certs to /etc/pki/ca-trust/source/anchors/ and update trust
- Resolves SSL certificate issues behind corporate proxy/SSL inspection
- Certificates are managed by Paychex on VDIs and now shared with containers

This allows test containers to make HTTPS requests (curl, nvm install, etc.)
through Paychex corporate network with SSL inspection.
- Temporarily disable set -u when sourcing nvm.sh
- nvm.sh has unset variables that conflict with our strict mode
- Wrap nvm sourcing with set +u / set -u to allow it to load
- Re-enable strict mode after nvm is sourced
- Fixes: 'PROVIDED_VERSION: unbound variable' error

This allows nvm to work properly while maintaining strict error checking
in the rest of our script.
- Wrap nvm installer script execution (curl | bash)
- Wrap all nvm install/use/alias commands
- nvm.sh contains unset variables that conflict with set -u
- Previous fix only wrapped sourcing, but installer also triggers nvm.sh
- Now disables -u flag before ANY nvm operation, re-enables after

Fixes: 'PROVIDED_VERSION: unbound variable' error during nvm installation
- Skip 'newgrp docker' prompt in container environments
  * Docker group changes don't take effect in same container session
  * Avoids script restart loop in container testing

- Skip interactive prompt in automated mode
  * CI/CD environments should not prompt

- Change default from 'y' to 'n' for group switch prompt
  * Less disruptive for users on real VDIs
  * User can manually run newgrp if needed

- Fix exec command to use absolute path
  * Use readlink -f to resolve full path to script
  * Prevents 'sh: 1: ./setup-dev-env.sh: not found' error
  * sg/newgrp executes in different context, relative paths fail

- Add continuation message when user declines group switch
  * Docker commands may require sudo until next login

Resolves: Script termination with 'not found' error during group switching
- LibreChat uses standard docker-compose.yml, not dev-specific variant
- Update setup_docker_compose_mode() to check for docker-compose.yml
- Remove -f docker-compose.dev.yml from all docker compose commands
- Use simple 'docker compose' commands (v2 plugin auto-detects compose file)

Resolves: docker-compose.dev.yml not found error
- Create docker-compose.override.yml for VDI environments
  * MongoDB 4.4.18 for CPUs without AVX support
  * Run containers as root (user: 0:0) to avoid permission issues
  * Mount paychex-root.pem certificate for SSL inspection
  * Mount librechat.yaml configuration

- Add comprehensive .env warnings for Paychex-specific config
  * Azure OpenAI endpoint configuration
  * SSL certificate paths for corporate proxy
  * RAG configuration with Azure embeddings
  * OpenID/SSO configuration guidance

- Integrate docker-compose override setup into Phase 3
- Provide clear guidance on what developers need to configure
- Backup existing files before regeneration

Addresses: VDI environments without AVX, corporate SSL inspection,
Paychex-internal service endpoints
- Remove output suppression (> /dev/null 2>&1) to see if install fails
- Remove -q flag for verbose output
- Helps debug sudo installation issues in container
Multiple SSL-related fixes for Rocky Linux 9 containers:

1. Bootstrap phase:
   - Temporarily disable dnf SSL verification for initial package install
   - Use --allowerasing flag to handle curl-minimal conflict
   - Properly update CA trust after ca-certificates installation

2. nvm installation:
   - Disable git SSL verification temporarily for nvm clone
   - Use curl -k flag for downloading nvm installer
   - Use HTTP mirror (http://nodejs.org/dist) for Node.js downloads
   - Install specific Node v20 instead of --lts (avoids SSL lookup)

3. Package manager improvements:
   - Detect sudo availability before using it
   - Use eval for proper multi-word command expansion
   - Add --allowerasing for Rocky/RHEL package conflicts

Resolves multiple issues:
- SSL certificate problem: unable to get local issuer certificate
- sudo: command not found
- curl-minimal vs curl conflict
- nvm install --lts network lookup failures

Tested: Node.js v20.20.0 installs successfully in Rocky 9 container
- Detect SSL certificate issues before Docker install
- Use curl -k to download docker-ce.repo manually in containers
- Apply --setopt=sslverify=false for dnf operations when needed
- Fallback to normal dnf config-manager in real VDI environments

This allows Docker installation to proceed in Rocky containers that
lack proper SSL certificate trust, while maintaining security in
real VDI environments where SSL works correctly.
Remove all SSL bypass workarounds from setup-dev-env.sh. The proper
solution is to mount Paychex CA certificates into containers, not to
disable SSL verification.

Changes:
1. Removed HTTP mirror workarounds for Node.js downloads
2. Removed curl -k and git SSL bypass for nvm installation
3. Removed Docker dnf SSL disable flags
4. Restored normal --lts flag for nvm install
5. Added build artifact cleanup with permission fix

The interactive-test-rocky.sh script already properly mounts
certificates from /usr/local/share/ca-certificates which is the
correct approach for VDI environments.

Certificate mounting (already in test scripts):
  -v /usr/local/share/ca-certificates:/usr/local/share/ca-certificates:ro

Then copied to Rocky location:
  cp /usr/local/share/ca-certificates/*.crt /etc/pki/ca-trust/source/anchors/
  update-ca-trust

This ensures SSL works properly while maintaining security.
- Add **/undefined/ to .gitignore for rollup typescript plugin cache
- Fix cleanup paths: api/dist -> packages/api/dist, client/dist -> packages/client/dist
- Fix nvm alias syntax: use 'lts/*' instead of --lts flag
- Prevents test containers from polluting repo with build cache files
@paychex-gcarlson paychex-gcarlson force-pushed the feature/AIA-1974_dev-env-script-rebased branch from d51f89a to fb0fb84 Compare February 2, 2026 13:59
- Remove all Paychex-internal URLs from configuration examples
- Replace with placeholders directing to internal documentation
- Also fix NODE_EXTRA_CA_CERTS path (remove extra slash)
…e onboarding dev needs to fill out. randomly generate the CREDS config. Update the script to make it clearer what the difference between the two run modes are.
@github-actions
Copy link
Copy Markdown

github-actions bot commented Feb 9, 2026

Logo
Checkmarx One – Scan Summary & Details63ef8b0a-9e33-42d4-8cf9-aaf5acbbc907

New Issues (395)

Checkmarx found the following issues in this Pull Request

# Severity Issue Source File / Package Checkmarx Insight
1 CRITICAL CVE-2025-68665 Npm-@langchain/core-0.3.79
detailsRecommended version: 0.3.80
Description: LangChain is a framework for building LLM-powered applications. In @langchain/core versions prior to 0.3.80 and 1.x prior to 1.1.8, and langchain v...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
2 CRITICAL Stored_XSS /api/server/index.js: 64
detailsThe method Lambda embeds untrusted data in generated output with send, at line 163 of /api/server/index.js. This untrusted data is embedded into ...
Attack Vector
3 CRITICAL Stored_XSS /api/server/experimental.js: 228
detailsThe method Lambda embeds untrusted data in generated output with send, at line 328 of /api/server/experimental.js. This untrusted data is embedde...
Attack Vector
4 HIGH Absolute_Path_Traversal /api/server/services/Files/Audio/STTService.js: 332
detailsMethod processSpeechToText at line 332 of /api/server/services/Files/Audio/STTService.js gets dynamic data from the path element. This element’s ...
Attack Vector
5 HIGH Absolute_Path_Traversal /api/server/routes/files/images.js: 56
detailsMethod Lambda at line 56 of /api/server/routes/files/images.js gets dynamic data from the path element. This element’s value then flows through t...
Attack Vector
6 HIGH Absolute_Path_Traversal /api/server/routes/files/files.js: 401
detailsMethod Lambda at line 401 of /api/server/routes/files/files.js gets dynamic data from the path element. This element’s value then flows through t...
Attack Vector
7 HIGH Absolute_Path_Traversal /api/server/routes/files/files.js: 410
detailsMethod Lambda at line 410 of /api/server/routes/files/files.js gets dynamic data from the path element. This element’s value then flows through t...
Attack Vector
8 HIGH Absolute_Path_Traversal /api/server/routes/files/avatar.js: 17
detailsMethod Lambda at line 17 of /api/server/routes/files/avatar.js gets dynamic data from the path element. This element’s value then flows through t...
Attack Vector
9 HIGH Absolute_Path_Traversal /api/server/controllers/assistants/v1.js: 310
detailsMethod Cx0d758712 at line 310 of /api/server/controllers/assistants/v1.js gets dynamic data from the path element. This element’s value then flow...
Attack Vector
10 HIGH Absolute_Path_Traversal /api/server/controllers/agents/v1.js: 608
detailsMethod Cxbbcc721e at line 608 of /api/server/controllers/agents/v1.js gets dynamic data from the path element. This element’s value then flows th...
Attack Vector
11 HIGH Absolute_Path_Traversal /api/server/services/Files/Audio/STTService.js: 349
detailsMethod processSpeechToText at line 349 of /api/server/services/Files/Audio/STTService.js gets dynamic data from the path element. This element’s ...
Attack Vector
12 HIGH Absolute_Path_Traversal /api/server/controllers/agents/v1.js: 660
detailsMethod Cxbbcc721e at line 660 of /api/server/controllers/agents/v1.js gets dynamic data from the path element. This element’s value then flows th...
Attack Vector
13 HIGH Absolute_Path_Traversal /api/server/routes/files/avatar.js: 41
detailsMethod Lambda at line 41 of /api/server/routes/files/avatar.js gets dynamic data from the path element. This element’s value then flows through t...
Attack Vector
14 HIGH Absolute_Path_Traversal /api/server/controllers/assistants/v1.js: 368
detailsMethod Cx0d758712 at line 368 of /api/server/controllers/assistants/v1.js gets dynamic data from the path element. This element’s value then flow...
Attack Vector
15 HIGH Absolute_Path_Traversal /api/server/services/Files/Audio/STTService.js: 376
detailsMethod speechToText at line 376 of /api/server/services/Files/Audio/STTService.js gets dynamic data from the req element. This element’s value th...
Attack Vector
16 HIGH Absolute_Path_Traversal /api/server/services/Files/Audio/STTService.js: 376
detailsMethod speechToText at line 376 of /api/server/services/Files/Audio/STTService.js gets dynamic data from the req element. This element’s value th...
Attack Vector
17 HIGH CVE-2025-66414 Npm-@modelcontextprotocol/sdk-1.21.0
detailsRecommended version: 1.26.0
Description: MCP TypeScript SDK is the official TypeScript SDK for Model Context Protocol servers and clients. Prior to 1.24.0, The Model Context Protocol (MCP)...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
18 HIGH CVE-2026-0621 Npm-@modelcontextprotocol/sdk-1.21.0
detailsRecommended version: 1.26.0
Description: Anthropic's MCP TypeScript SDK versions through 1.25.1 contain a Regular Expression Denial-of-Service (ReDoS) vulnerability in the "UriTemplate" cl...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
19 HIGH CVE-2026-22036 Npm-undici-7.16.0
detailsRecommended version: 7.18.2
Description: Undici is an HTTP/1.1 client for Node.js. In Undici versions prior to 6.23.0 and 7.x prior to 7.18.2, the number of links in the decompression chai...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
20 HIGH CVE-2026-25128 Npm-fast-xml-parser-4.4.1
detailsRecommended version: 5.3.4
Description: fast-xml-parser allows users to validate XML, parse XML to JS object, or build XML from JS object without C/C++ based libraries and no callback. In...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
21 HIGH CVE-2026-25128 Npm-fast-xml-parser-5.0.9
detailsRecommended version: 5.3.4
Description: fast-xml-parser allows users to validate XML, parse XML to JS object, or build XML from JS object without C/C++ based libraries and no callback. In...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
22 HIGH CVE-2026-25128 Npm-fast-xml-parser-5.2.5
detailsRecommended version: 5.3.4
Description: fast-xml-parser allows users to validate XML, parse XML to JS object, or build XML from JS object without C/C++ based libraries and no callback. In...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
23 HIGH CVE-2026-25536 Npm-@modelcontextprotocol/sdk-1.21.0
detailsRecommended version: 1.26.0
Description: MCP TypeScript SDK is the official TypeScript SDK for Model Context Protocol servers and clients. From version 1.10.0 through 1.25.3, cross-client ...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
24 HIGH CVE-2026-25639 Npm-axios-1.12.1
detailsRecommended version: 1.13.5
Description: Axios is a promise based HTTP client for the browser and Node.js. Prior to 1.13.5, the mergeConfig function in axios crashes with a TypeError when ...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
25 HIGH Cxdca8e59f-8bfe Npm-inflight-1.0.6
detailsDescription: In NPM `inflight` there is a Memory Leak because some resources are not freed correctly after being used. It appears to affect all versions, as the...
Attack Vector: NETWORK
Attack Complexity: LOW
Vulnerable Package
26 HIGH JWT_No_Signature_Verification /api/strategies/appleStrategy.test.js: 84
detailsThe JWT is not properly verified at the decode in 84 at the file /api/strategies/appleStrategy.test.js.
Attack Vector
27 HIGH JWT_No_Signature_Verification /api/strategies/appleStrategy.js: 19
detailsThe JWT is not properly verified at the decode in 19 at the file /api/strategies/appleStrategy.js.
Attack Vector
28 HIGH Prototype_Pollution /api/server/routes/mcp.js: 420
detailsAn unsafe object assignment occurred in /api/server/routes/mcp.js at line 433. Assigning external properties without validation may allow object ...
Attack Vector
29 HIGH Prototype_Pollution /api/server/services/Runs/StreamRunManager.js: 602
detailsAn unsafe object assignment occurred in /api/server/services/Runs/StreamRunManager.js at line 343. Assigning external properties without validati...
Attack Vector
30 HIGH Prototype_Pollution /api/server/services/Runs/StreamRunManager.js: 407
detailsAn unsafe object assignment occurred in /api/server/services/Runs/StreamRunManager.js at line 343. Assigning external properties without validati...
Attack Vector
31 HIGH Reflected_XSS /api/server/routes/prompts.js: 244
detailsThe method Cxfa01cb0c embeds untrusted data in generated output with send, at line 280 of /api/server/routes/prompts.js. This untrusted data is e...
Attack Vector
32 HIGH Reflected_XSS /api/server/routes/config.js: 87
detailsThe method Lambda embeds untrusted data in generated output with send, at line 194 of /api/server/routes/config.js. This untrusted data is embedd...
Attack Vector
33 HIGH Reflected_XSS /api/server/routes/prompts.js: 456
detailsThe method Cxaf637b56 embeds untrusted data in generated output with send, at line 460 of /api/server/routes/prompts.js. This untrusted data is e...
Attack Vector
34 HIGH Reflected_XSS /api/server/controllers/AuthController.js: 63
detailsThe method Cx6776623a embeds untrusted data in generated output with send, at line 137 of /api/server/controllers/AuthController.js. This untrust...
Attack Vector
35 HIGH Reflected_XSS /api/server/controllers/UserController.js: 115
detailsThe method Cx94e49a40 embeds untrusted data in generated output with send, at line 123 of /api/server/controllers/UserController.js. This untrust...
Attack Vector
36 HIGH Reflected_XSS /api/server/controllers/AuthController.js: 63
detailsThe method Cx6776623a embeds untrusted data in generated output with send, at line 111 of /api/server/controllers/AuthController.js. This untrust...
Attack Vector
37 HIGH Reflected_XSS /api/server/routes/keys.js: 30
detailsThe method Lambda embeds untrusted data in generated output with send, at line 32 of /api/server/routes/keys.js. This untrusted data is embedded ...
Attack Vector
38 HIGH Reflected_XSS /api/server/routes/prompts.js: 295
detailsThe method Cx011dc025 embeds untrusted data in generated output with send, at line 312 of /api/server/routes/prompts.js. This untrusted data is e...
Attack Vector
39 HIGH Reflected_XSS /api/server/routes/keys.js: 31
detailsThe method Lambda embeds untrusted data in generated output with send, at line 32 of /api/server/routes/keys.js. This untrusted data is embedded ...
Attack Vector
40 HIGH Reflected_XSS /api/server/routes/prompts.js: 296
detailsThe method Cx011dc025 embeds untrusted data in generated output with send, at line 312 of /api/server/routes/prompts.js. This untrusted data is e...
Attack Vector
41 HIGH Reflected_XSS /api/server/routes/prompts.js: 160
detailsThe method Lambda embeds untrusted data in generated output with send, at line 215 of /api/server/routes/prompts.js. This untrusted data is embed...
Attack Vector
42 HIGH Reflected_XSS /api/server/routes/prompts.js: 455
detailsThe method Cxaf637b56 embeds untrusted data in generated output with send, at line 460 of /api/server/routes/prompts.js. This untrusted data is e...
Attack Vector
43 HIGH Reflected_XSS /api/server/routes/prompts.js: 160
detailsThe method Lambda embeds untrusted data in generated output with send, at line 229 of /api/server/routes/prompts.js. This untrusted data is embed...
Attack Vector
44 HIGH Reflected_XSS /api/server/routes/roles.js: 59
detailsThe method Lambda embeds untrusted data in generated output with send, at line 86 of /api/server/routes/roles.js. This untrusted data is embedded...
Attack Vector
45 HIGH Reflected_XSS /api/server/controllers/auth/LogoutController.js: 8
detailsThe method Cxf2fd7c1a embeds untrusted data in generated output with send, at line 38 of /api/server/controllers/auth/LogoutController.js. This u...
Attack Vector
46 HIGH Reflected_XSS /api/server/routes/prompts.js: 81
detailsThe method Lambda embeds untrusted data in generated output with send, at line 90 of /api/server/routes/prompts.js. This untrusted data is embedd...
Attack Vector
47 HIGH Reflected_XSS /api/server/routes/prompts.js: 475
detailsThe method Cxb85e2db2 embeds untrusted data in generated output with send, at line 478 of /api/server/routes/prompts.js. This untrusted data is e...
Attack Vector
48 HIGH Reflected_XSS /api/server/routes/prompts.js: 409
detailsThe method Lambda embeds untrusted data in generated output with send, at line 428 of /api/server/routes/prompts.js. This untrusted data is embed...
Attack Vector
49 HIGH Reflected_XSS /api/server/routes/prompts.js: 400
detailsThe method Lambda embeds untrusted data in generated output with send, at line 402 of /api/server/routes/prompts.js. This untrusted data is embed...
Attack Vector
50 HIGH Reflected_XSS /api/server/routes/share.js: 58
detailsThe method Lambda embeds untrusted data in generated output with send, at line 71 of /api/server/routes/share.js. This untrusted data is embedded...
Attack Vector
51 HIGH Reflected_XSS /api/server/routes/prompts.js: 408
detailsThe method Lambda embeds untrusted data in generated output with send, at line 437 of /api/server/routes/prompts.js. This untrusted data is embed...
Attack Vector
52 HIGH Reflected_XSS /api/server/routes/prompts.js: 383
detailsThe method Lambda embeds untrusted data in generated output with send, at line 385 of /api/server/routes/prompts.js. This untrusted data is embed...
Attack Vector
53 HIGH Reflected_XSS /api/server/controllers/AuthController.js: 63
detailsThe method Cx6776623a embeds untrusted data in generated output with send, at line 94 of /api/server/controllers/AuthController.js. This untruste...
Attack Vector
54 HIGH Reflected_XSS /api/server/routes/prompts.js: 342
detailsThe method Cx0e3424e3 embeds untrusted data in generated output with send, at line 358 of /api/server/routes/prompts.js. This untrusted data is e...
Attack Vector
55 HIGH Reflected_XSS /api/server/routes/prompts.js: 349
detailsThe method Cx0e3424e3 embeds untrusted data in generated output with send, at line 358 of /api/server/routes/prompts.js. This untrusted data is e...
Attack Vector
56 HIGH Reflected_XSS /api/server/controllers/AuthController.js: 20
detailsThe method Cxc178e465 embeds untrusted data in generated output with send, at line 22 of /api/server/controllers/AuthController.js. This untruste...
Attack Vector
57 HIGH Reflected_XSS /api/server/routes/prompts.js: 349
detailsThe method Cx0e3424e3 embeds untrusted data in generated output with send, at line 351 of /api/server/routes/prompts.js. This untrusted data is e...
Attack Vector
58 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 1365
detailsThe method Lambda embeds untrusted data in generated output with location, at line 1368 of /api/server/routes/__tests__/mcp.spec.js. This un...
Attack Vector
59 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 1413
detailsThe method Lambda embeds untrusted data in generated output with location, at line 1415 of /api/server/routes/__tests__/mcp.spec.js. This un...
Attack Vector
60 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 594
detailsThe method Lambda embeds untrusted data in generated output with location, at line 600 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
61 HIGH Reflected_XSS /api/server/routes/share.js: 53
detailsThe method Lambda embeds untrusted data in generated output with send, at line 71 of /api/server/routes/share.js. This untrusted data is embedded...
Attack Vector
62 HIGH Reflected_XSS /api/server/routes/share.js: 56
detailsThe method Lambda embeds untrusted data in generated output with send, at line 71 of /api/server/routes/share.js. This untrusted data is embedded...
Attack Vector
63 HIGH Reflected_XSS /api/server/routes/share.js: 54
detailsThe method Lambda embeds untrusted data in generated output with send, at line 71 of /api/server/routes/share.js. This untrusted data is embedded...
Attack Vector
64 HIGH Reflected_XSS /api/server/routes/share.js: 51
detailsThe method Lambda embeds untrusted data in generated output with send, at line 71 of /api/server/routes/share.js. This untrusted data is embedded...
Attack Vector
65 HIGH Reflected_XSS /api/server/routes/share.js: 62
detailsThe method Lambda embeds untrusted data in generated output with send, at line 71 of /api/server/routes/share.js. This untrusted data is embedded...
Attack Vector
66 HIGH Reflected_XSS /api/server/routes/files/files.js: 41
detailsThe method Lambda embeds untrusted data in generated output with send, at line 54 of /api/server/routes/files/files.js. This untrusted data is em...
Attack Vector
67 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 261
detailsThe method Lambda embeds untrusted data in generated output with location, at line 266 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
68 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 553
detailsThe method Lambda embeds untrusted data in generated output with location, at line 559 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
69 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 495
detailsThe method Lambda embeds untrusted data in generated output with location, at line 501 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
70 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 454
detailsThe method Lambda embeds untrusted data in generated output with location, at line 460 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
71 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 409
detailsThe method Lambda embeds untrusted data in generated output with location, at line 415 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
72 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 374
detailsThe method Lambda embeds untrusted data in generated output with location, at line 380 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
73 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 338
detailsThe method Lambda embeds untrusted data in generated output with location, at line 344 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
74 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 281
detailsThe method Lambda embeds untrusted data in generated output with location, at line 287 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
75 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 270
detailsThe method Lambda embeds untrusted data in generated output with location, at line 275 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector
76 HIGH Reflected_XSS /api/server/routes/banner.js: 9
detailsThe method Lambda embeds untrusted data in generated output with send, at line 9 of /api/server/routes/banner.js. This untrusted data is embedded...
Attack Vector
77 HIGH Reflected_XSS /api/server/routes/__tests__/mcp.spec.js: 144
detailsThe method Lambda embeds untrusted data in generated output with location, at line 150 of /api/server/routes/__tests__/mcp.spec.js. This unt...
Attack Vector

More results are available on the CxOne platform

@paychex-joser paychex-joser self-requested a review February 11, 2026 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants