Third-Party Software Security Review — SCORPIOX CODE
| Field | Value |
|---|
| Software | SCORPIOX CODE |
| Type | AI-Powered Development Tool / CLI Platform |
| Language | Pure C (zero external dependencies) |
| Audit Date | 2026-04-30 |
| Codebase Commit | 60a9c0539b7611894c0f11654dd3a991fb1b2098 |
| Classification | CONFIDENTIAL — For Corporate Review Only |
1. Executive Summary
This report presents the results of a comprehensive security audit of SCORPIOX CODE, an AI-powered development CLI platform written in pure C. The audit was conducted on commit 60a9c05 across 14 independent analysis domains using automated security agents, covering supply chain integrity, build provenance, network exposure, cryptographic security, credential management, file I/O, buffer safety, memory safety, command injection, privilege management, Windows deployment, telemetry behavior, install script security, and the WPF desktop launcher.
Key Findings
The codebase demonstrates strong security fundamentals for a C-based application:
- Zero external runtime dependencies — two well-maintained vendored libraries (Mbed TLS 3.6.6, yyjson 0.12.0)
- Exemplary buffer safety — 2,849:1 safe-to-unsafe function ratio across 147,742 lines of project code
- Complete malloc/calloc NULL checking — all 397 allocation sites verified
- No hardcoded credentials — all API key fields are empty strings populated at runtime
- Telemetry disabled by default — no tracking without explicit operator opt-in
- SHA256 verification on all distribution downloads with fail-closed behavior
However, several areas require attention:
- 2 Critical findings: Container
--privileged mode bypasses all isolation (Linux-only); hardcoded public IP address for TCP relay
- 8 High findings: Insufficient seccomp/capability hardening in container runtime (Linux-only); global TLS verification kill-switch; plaintext HTTP endpoints; command injection risks on Windows via
system()/popen()
- 37 Medium findings: Various command injection paths on Windows, SMTP auth over plaintext, predictable temp paths, install script gaps
- 53 Low findings: Minor information disclosure, missing hardening flags, configuration defaults
- 109 Informational findings: Architecture documentation, positive security patterns, design decisions
Overall Risk Rating: LOW-MEDIUM
The majority of critical and high findings are confined to Linux-only components (container runtime, VM runner, traffic proxy) that are not deployed on Windows workstations. When scoped to Windows deployment, the risk profile is LOW.
2. Deployment Scope
2.1 Windows Workstation (Primary Deployment)
The following binaries are deployed on Windows workstations:
| Binary | Purpose |
|---|
sx.exe (also scorpiox.exe) | Primary TUI — AI chat interface |
scorpiox-bash.exe | Cross-platform shell command execution |
scorpiox-busybox.exe | Unix tool manager for Windows |
scorpiox-screenshot.exe | Screen capture utility |
scorpiox-vi.exe | Text editor |
scorpiox-config.exe | Configuration manager |
scorpiox-websearch.exe | Web search via fetch |
scorpiox-fetch.exe | URL content fetcher |
scorpiox-renderimage.exe | Image rendering utility |
scorpiox-pwsh.exe | Remote PowerShell via REST |
scorpiox-wsl.exe | WSL2 stateless execution manager |
Additional Windows-compiled binaries include: scorpiox-tmux.exe, scorpiox-multiplexer.exe, scorpiox-voice.exe, scorpiox-server.exe, scorpiox-otp.exe, scorpiox-transcript.exe, scorpiox-conv.exe, scorpiox-rewind.exe, scorpiox-debug.exe, scorpiox-logger.exe, scorpiox-printlogs.exe, scorpiox-systemprompt.exe, scorpiox-search.exe, scorpiox-agent.exe, scorpiox-tasks.exe, scorpiox-skills.exe, scorpiox-planmode.exe, scorpiox-askuserquestion.exe, scorpiox-gemini.exe, scorpiox-mcp.exe, scorpiox-beam.exe, scorpiox-host.exe, scorpiox-openai.exe, scorpiox-email.exe, scorpiox-usage.exe, scorpiox-emit-session.exe, scorpiox-frp.exe, scorpiox-hook.exe, scorpiox-vault-git.exe, scorpiox-mirror-git.exe, scorpiox-dns.exe, scorpiox-kql.exe, scorpiox-sdk.exe, and various token-fetcher utilities.
2.2 Linux-Only Binaries (Not Deployed on Windows)
| Binary | Purpose | Key Risk |
|---|
scorpiox-unshare | Container runtime | Critical — --privileged mode, minimal seccomp |
scorpiox-vm | KVM virtual machine runner | Requires root/KVM access |
scorpiox-init | Container init process | PID 1 inside containers |
scorpiox-sshpass | SSH password automation | Password handling |
scorpiox-traffic | MITM traffic capture proxy | TLS verification disabled |
scorpiox-podman | Podman integration | Container management |
scorpiox-docs | Documentation generator | Build-time only |
scorpiox-runtest | Test runner | Development only |
scorpiox-executecurl | Curl execution wrapper | Development only |
scorpiox-cron | Cron job manager | Server-side only |
scorpiox-whatsapp | WhatsApp bridge | Server-side only |
2.3 Windows-Filtered Findings
When scoped to Windows workstation deployment only, findings reduce significantly:
| Severity | All Platforms | Windows Only |
|---|
| Critical | 2 | 1 |
| High | 8 | 4 |
| Medium | 37 | 24 |
| Low | 53 | 37 |
| Total (excl. Info) | 100 | 66 |
The Critical container runtime finding (C-01) and both High container hardening findings (H-01, H-02) are Linux-only and do not apply to Windows deployments.
3. Changes Since Last Audit
| Field | Previous (2026-04-29) | Current (2026-04-30) | Delta |
|---|
| Commit | ca3fe9b | 60a9c05 | — |
| Lines of Code (Total) | 403,876 | 405,182 | +1,306 |
| Lines of Code (Project) | 173,858 | 147,742 | −26,116¹ |
| Lines of Code (Vendor) | 230,018 | 228,140 | −1,878 |
| Total Findings | 207 | 209 | +2 |
| Critical | 0 | 2 | +2 |
| High | 7 | 8 | +1 |
| Medium | 28 | 37 | +9 |
| Low | 37 | 53 | +16 |
| Info | 135 | 109 | −26 |
| Overall Risk | LOW-MEDIUM | LOW-MEDIUM | Unchanged |
| Windows Findings (C+H+M+L) | 59 | 66 | +7 |
¹ Project line count methodology may differ between audits; file scope adjustments can affect totals.
Notable Changes:
- Two new Critical findings identified: container
--privileged mode and hardcoded TCP relay IP. These are both Linux-only or infrastructure-related and do not affect the Windows workstation security posture.
- Medium and Low findings increased due to expanded scope (WPF launcher audit added as report 14, deeper command injection analysis on Windows paths).
- Informational findings decreased as several positive findings were consolidated.
- Overall risk rating remains LOW-MEDIUM, consistent with prior audit.
4. Supply Chain & Dependencies
Agent: supply-chain |
Risk: LOW
The project has a minimal supply chain footprint with zero external runtime dependencies. All third-party code is vendored directly into the repository.
Vendored Libraries
| Library | Version | License | Lines | Status |
|---|
| Mbed TLS | 3.6.6 | Apache-2.0 / GPL-2.0+ | 208,584 | ✅ Current (LTS, released 2026-03-31) |
| yyjson | 0.12.0 | MIT | 19,556 | ✅ Current |
| stb_image | 2.30 | MIT / Public Domain | ~8,000 | ✅ Current |
Package Managers
| Manager | File | External Deps | Risk |
|---|
| CMake | CMakeLists.txt | CURL, Threads, X11, Python3 (build-time) | INFO — Standard system deps |
| npm | bridge/package.json | 2 packages (baileys, qrcode-terminal) | LOW — Optional bridge component |
Key Findings
- No pre-built binaries shipped in repository
- No git submodules — all dependencies vendored
- No dynamic fetching at build time (no
FetchContent, ExternalProject)
- Mbed TLS 3.6.6 addresses all 11 security advisories through 2026-03
- npm lockfile (
bun.lock) present for bridge component ✓
5. Build System & Code Provenance
Agent: build-provenance |
Risk: LOW
Security Compiler Flags
| Flag | Status | Notes |
|---|
-Wall -Wextra | ✅ | Global warnings enabled |
-fstack-protector-strong | ✅ | Stack canaries on all targets |
-D_FORTIFY_SOURCE=2 | ✅ | Release builds |
-fcf-protection | ✅ | GCC only, control-flow enforcement |
-Wl,-z,relro,-z,now | ✅ | Full RELRO |
-Wl,-z,noexecstack | ✅ | Non-executable stack |
-O2 | ✅ | Release optimization |
-fPIE / -pie | ❌ | Not set for static builds |
-Wformat-security | ❌ | Not explicitly set |
Build Integrity
- Single developer (623 commits from
dev@scorpiox.net)
- Docker build environments pinned by SHA256 digest (Alpine 3.21)
- ARM64 curl built from source with SHA256-verified archive
- Static linking default (
SX_STATIC_LINK=ON) — all dependencies statically linked
Findings
| ID | Severity | Finding |
|---|
| BP-01 | LOW | PIE/ASLR not enabled — static binaries at fixed addresses |
| BP-02 | INFO | bridge/Makefile lacks linker hardening flags |
| BP-03 | INFO | Release builds use -O2 (appropriate for security-sensitive C) |
6. Network Endpoints
Agent: network-endpoints |
Risk: MEDIUM
The codebase contains 79 unique hardcoded network endpoints across 38 source files.
External IP Addresses
| IP | File | Purpose | Severity |
|---|
20.53.240.54 | sx_config_embedded.c | TCP relay server (Azure) | CRITICAL |
8.8.8.8 | scorpiox-dns.c | Google DNS resolver | LOW |
1.1.1.1 | scorpiox-dns.c | Cloudflare DNS resolver | LOW |
External API Endpoints
| Provider | Endpoint | Severity |
|---|
| Anthropic | api.anthropic.com/v1/messages | MEDIUM |
| Google | generativelanguage.googleapis.com/v1beta | MEDIUM |
| OpenAI | chatgpt.com/backend-api/codex/responses | MEDIUM |
| Z.AI | api.z.ai/api/anthropic | MEDIUM |
Plaintext HTTP Endpoints
| Endpoint | Purpose | Severity |
|---|
http://127.0.0.1:* (multiple) | Internal API servers, proxies | HIGH (3 findings) |
All internal service endpoints bind to localhost (127.0.0.1) only, limiting exposure. External API calls use HTTPS exclusively.
Recommendation: Replace the hardcoded IP
20.53.240.54 with a DNS hostname for operational flexibility. Add TLS to localhost services where feasible.
7. TLS/SSL Security
Agent: tls-security |
Risk: MEDIUM
TLS Configuration
The application uses a centralized TLS helper (sx_tls.h) that enforces:
- TLS 1.2 minimum (
CURL_SSLVERSION_TLSv1_2)
- Certificate verification enabled by default
- System CA bundle or Mbed TLS built-in certificates
Findings
| ID | Severity | Finding |
|---|
| FINDING-01 | HIGH | Global TLS verification kill-switch via SX_TLS_VERIFY=0 config key disables certificate verification for all HTTPS connections |
| FINDING-02 | MEDIUM | Traffic proxy disables TLS verification in child processes (NODE_TLS_REJECT_UNAUTHORIZED=0) — Linux-only tool |
| FINDING-03 | MEDIUM | SMTP server offers AUTH PLAIN over plaintext on port 25 |
| FINDING-04 | MEDIUM | Outbound MX delivery uses opportunistic TLS with optional certificate verification |
| FINDING-05 | LOW | WebSocket-to-TCP bridge (ws2tcp) has no TLS support |
| FINDING-06 | LOW | Token fetch over raw TCP (no TLS) between localhost processes |
| FINDING-07 | LOW | MX delivery uses TLS 1.0 minimum instead of 1.2 |
Recommendation: Remove or restrict the global TLS verification kill-switch (
SX_TLS_VERIFY). Consider per-endpoint overrides instead. Enforce TLS 1.2+ for all outbound connections.
8. Hardcoded Credentials
Agent: credential-hardcode |
Risk: LOW
No actual secrets (passwords, API keys, tokens) are hardcoded. The architecture uses a configuration system where sensitive fields are defined as empty strings, with runtime population via environment variables or remote token endpoints.
Findings
| ID | Severity | Finding |
|---|
| FINDING-01 | LOW | Hardcoded TCP server IP address 20.53.240.54 in embedded config |
| FINDING-02 | LOW | Internal network IPs and usernames in build scripts (RFC1918 addresses) |
| FINDING-03 | INFO | Internal service domain names embedded as defaults |
| FINDING-04 | INFO | All API key fields properly empty — positive finding |
| FINDING-05 | INFO | TCP token fetch credentials not stored to disk |
| FINDING-06 | INFO | API keys redacted in log output |
Assessment: The credential management architecture is well-designed. No credential exposure risk.
9. File I/O & Data Handling
Agent: file-io |
Risk: LOW
Positive Patterns
- Centralized
sx_fopen() wrapper enforces FD_CLOEXEC — 308 call sites
- Consistent
mkstemp() usage — 22 call sites, no insecure tmpnam()/tempnam()
- API key redaction in log files and config snapshots
- Config files restricted to
0600 permissions
Findings
| ID | Severity | Finding |
|---|
| FIO-002 | LOW | 34 /dev/null open() calls without O_CLOEXEC (pre-exec, negligible risk) |
| FIO-005 | MEDIUM | Predictable /tmp paths vulnerable to symlink attacks in multi-user environments |
| FIO-006 | MEDIUM | Traffic capture logs API request/response bodies to disk without cleanup policy |
| FIO-007 | MEDIUM | Session conversation data stored in plaintext JSON files |
| FIO-008 | LOW | Config snapshot includes all values (sensitive redacted, but file written to user dir) |
Recommendation: Use
$XDG_RUNTIME_DIR for temporary files where available. Consider encrypting session data at rest.
10. Buffer Safety
Agent: buffer-safety |
Risk: LOW
Function Usage Statistics (Non-Vendor Code — 224 files)
| Function | Count | Safety |
|---|
snprintf | 2,234 | ✅ Safe |
strncpy | 601 | ✅ Safe |
strncat | 14 | ✅ Safe |
sprintf | 1 | ⚠️ Safe in context |
strcpy / strcat / gets / scanf | 0 | — |
Safe:Unsafe ratio = 2,849:1 — Excellent.
Findings
| ID | Severity | Finding |
|---|
| BUF-01 | MEDIUM | Unvalidated network-controlled malloc size in tb4_test.c (test utility, not production) |
| BUF-02 | LOW | Single sprintf in scorpiox-vm.c:369 — safe in context (fixed-size hex output) |
| BUF-03 | LOW | Vendor sprintf fallback in yyjson (pre-C99 compilers only) |
| BUF-04 | INFO | 221 large stack buffers (≥4096 bytes) — all used with bounds-checked operations |
11. Memory Safety
Agent: memory-safety |
Risk: LOW
Allocation Statistics
| Metric | Count |
|---|
malloc() call sites | 298 |
calloc() call sites | 99 |
realloc() call sites | 111 |
free() call sites | 1,430 |
strdup()/sx_strdup() sites | 427 |
Findings
| ID | Severity | Finding |
|---|
| MEM-01 | INFO | All 298 malloc() and 99 calloc() sites have proper NULL checks ✅ |
| MEM-02 | INFO | All 111 realloc() sites use safe temporary-variable pattern ✅ |
| MEM-03 | INFO | Custom sx_strdup() wrapper aborts on OOM — eliminates NULL dereference risk ✅ |
| MEM-04 | LOW | Minor memory leak potential in error paths of scorpiox-email.c |
| MEM-05 | LOW | WASM executor cleanup relies on process exit in some error paths |
| MEM-06 | INFO | No confirmed use-after-free or double-free vulnerabilities found |
| MEM-07 | INFO | free(NULL) safety used correctly throughout codebase |
Assessment: Memory safety discipline is exemplary for a C codebase of this size.
12. Command Injection
Agent: command-injection |
Risk: MEDIUM
Summary
| Severity | Count | Description |
|---|
| High | 2 | Windows system()/popen() with network-influenced input (git operations, file browser) |
| Medium | 5 | Config-controlled values reaching system() on Windows (SSH probes, tool checks) |
| Low | 5 | Local-only risk paths (interactive shell escape, popen with prefix-validated filenames) |
| Info | 2 | Intentional design features, sanitized SSH calls |
Key Findings
| ID | Severity | Finding | Platform |
|---|
| CJ-05 | HIGH | scorpiox-server.c — git operations via system() with repository names from HTTP API | Windows |
| CJ-06 | HIGH | scorpiox-renderimage.c — system() with file paths on Windows | Windows |
| CJ-03 | MEDIUM | scorpiox-tmux.c — SSH probe via system() with config values | Windows |
| CJ-04 | MEDIUM | scorpiox-tmux.c — SSH directory check via system() | Windows |
| CJ-07 | MEDIUM | sx.c — sx_tool_exists() uses system("where ...") without validation | Windows |
| CJ-08 | MEDIUM | scorpiox-search.c — popen() with search query interpolation | Windows |
| CJ-09 | MEDIUM | scorpiox-server.c — additional git system() paths | Windows |
Positive Security Patterns
- Consistent
fork()+execvp() on Unix — argv arrays eliminate shell interpretation
is_safe_shell_arg() validation — centralized metacharacter blocking
CJ-tag comments — prior audit remediation tracked inline
safe_popen_read() wrapper uses fork()+execvp() instead of popen() on Unix
Recommendation: Migrate Windows code paths from
system()/
_popen() to
CreateProcess() with explicit
lpApplicationName or
_spawnvp() with argv arrays.
13. Privilege & Access Control
Agent: privilege-access |
Risk: MEDIUM
Container Runtime (scorpiox-unshare — Linux Only)
| ID | Severity | Finding |
|---|
| C-01 | CRITICAL | --privileged mode bypasses user namespace isolation — full host root access |
| H-01 | HIGH | Seccomp filter only blocks 2 syscalls (vs. 40+ in Docker/Podman defaults) |
| H-02 | HIGH | Only CAP_IPC_LOCK dropped from capability bounding set |
| M-01 | MEDIUM | WSL execution runs as root user |
| M-02 | MEDIUM | No cgroup or IPC namespace isolation |
| M-03 | MEDIUM | scorpiox-vm KVM device access requires root/KVM group |
| M-04 | MEDIUM | Container --net host flag disables network isolation |
| L-01 | LOW | scorpiox-thunderbolt4 hard-requires root |
| L-02 | LOW | system() calls on Windows code paths |
| L-03 | LOW | Unix domain sockets in /tmp |
| L-04 | LOW | Config file chmod failure not checked |
Note: All Critical and High findings in this section are
Linux-only and do not affect Windows workstation deployments. The container runtime (
scorpiox-unshare) and VM runner (
scorpiox-vm) are not compiled for Windows.
Recommendation: Expand seccomp blocklist to match Docker defaults. Drop all non-essential capabilities. Add confirmation gate for
--privileged mode.
14. Windows Deployment Analysis
Agent: windows-deployment |
Risk: LOW
Windows Binary Inventory
- Windows-only binaries: 2 (
scorpiox-wsl, scorpiox-busybox)
- Cross-platform binaries compiled for Windows: 49
- Linux-only binaries (not on Windows): 11
- Total Windows binaries: 51
Windows-Specific Security Assessment
| Category | Assessment |
|---|
| Network communication | All HTTPS with standard TLS ✅ |
| Self-update mechanism | SHA256 verification with fail-closed ✅ |
| Server binaries | Support authentication ✅ |
| Configuration cascade | Standard pattern (compiled → file → env) ✅ |
| Installation path | %LOCALAPPDATA%\scorpiox — no admin required ✅ |
| Windows Firewall | Server binaries prompt for approval ✅ |
Findings
All 7 findings are INFO severity:
| Finding | Description |
|---|
| Self-update | SHA256-verified download from HTTPS endpoint |
| WinInet | System TLS validation, no certificate pinning (standard) |
| Token fetchers | Contact OAuth endpoints via Winsock |
| Telemetry binaries | Disabled by default, use HTTPS when enabled |
| Server binaries | Open listening sockets (firewall-gated) |
| Busybox | Creates tool copies in bin/ directory |
| Config cascade | Standard config loading from multiple locations |
15. Telemetry and Tracking
Agent: telemetry-tracking |
Risk: LOW
Default State: No Tracking
| Config Key | Default | Effect |
|---|
USAGE_TRACKING | 0 (OFF) | Token usage reporting — disabled |
EMIT_SESSION_TRACKING | 0 (OFF) | Full conversation telemetry — disabled |
WA_BRIDGE_AUTO_UPDATE | on-demand | WhatsApp bridge — download only when feature used |
When Enabled (Opt-in)
Usage Tracking (
USAGE_TRACKING=1):
- Sends: session ID, provider, model, hostname, username, OS, project name, token counts
- No conversation content transmitted — metadata and token counts only
- Destination:
code.scorpiox.net/usage-send (HTTPS)
Session Telemetry (
EMIT_SESSION_TRACKING=1):
- Sends: full conversation content (user messages, assistant responses, tool calls)
- HIGH privacy impact — contains all interaction data
- Destination:
code.scorpiox.net/sessions-send (HTTPS)
Findings
| ID | Severity | Finding |
|---|
| TEL-01 | LOW | Usage tracking sends hostname and username when enabled |
| TEL-02 | LOW | Session telemetry sends full conversation content when enabled |
| TEL-03 | INFO | Both tracking features disabled by default ✅ |
| TEL-04 | INFO | No mandatory data collection ✅ |
| TEL-05 | INFO | No auto-update daemon or scheduled tasks ✅ |
| TEL-06 | INFO | No clipboard, browser history, or file system scanning ✅ |
| TEL-07 | INFO | WhatsApp bridge binary downloaded only on explicit use ✅ |
| TEL-08 | INFO | Hook system runs local scripts only (no network) ✅ |
Assessment: The telemetry architecture is well-designed with clear opt-in semantics. No data leaves the machine without explicit operator configuration.
16. Install Script & Distribution Security
Agent: install-script |
Risk: LOW-MEDIUM
Distribution Channels
| Platform | Method | Install Path |
|---|
| Linux | curl \ | bash | /usr/local/bin (sudo) |
| macOS | curl \ | bash | ~/.scorpiox (user-space) |
| Windows | iwr \ | iex (PowerShell) | %LOCALAPPDATA%\scorpiox |
Security Measures
- ✅ All downloads use HTTPS with TLS certificate verification
- ✅ SHA256 checksums generated during build, verified during install
- ✅ HSTS headers on distribution domains
- ✅ HTTP→HTTPS redirection enforced via Caddy
- ✅ Install scripts use
set -e for fail-fast behavior
- ✅ Windows installer enforces TLS 1.2 minimum
Findings
| ID | Severity | Finding |
|---|
| IS-01 | MEDIUM | No cryptographic code signing (GPG, cosign, Authenticode) on any release artifacts |
| IS-02 | MEDIUM | SHA256 sidecar files served from same origin as archives (single point of compromise) |
| IS-03 | MEDIUM | --no-verify flag allows bypassing SHA256 verification (Linux/macOS) |
| IS-04 | LOW | No atomic install — interrupted download can leave partial state |
| IS-05 | LOW | No cleanup trap on SIGINT/SIGTERM |
| IS-06 | LOW | Windows updater uses -ExecutionPolicy Bypass |
| IS-07 | LOW | No build reproducibility documentation |
| IS-08 | LOW | macOS installer modifies shell config without backup |
| IS-09 | LOW | Branch index file index.txt is unauthenticated |
Recommendation: Implement cryptographic code signing (Authenticode for Windows, GPG for Linux). Publish checksums via an independent channel. Remove the
--no-verify bypass flag.
17. Consolidated Risk Matrix
| # | Area | Finding | Severity | Status | Platform | Recommendation |
|---|
| 1 | Privilege | Container --privileged bypasses all isolation | CRITICAL | Open | Linux | Add confirmation gate; remove from production builds |
| 2 | Network | Hardcoded public IP 20.53.240.54 for TCP relay | CRITICAL | Open | All | Replace with DNS hostname |
| 3 | Privilege | Seccomp filter blocks only 2 syscalls | HIGH | Open | Linux | Expand to Docker-equivalent blocklist |
| 4 | Privilege | Only CAP_IPC_LOCK dropped from capabilities | HIGH | Open | Linux | Drop all non-essential capabilities |
| 5 | TLS | Global TLS verification kill-switch (SX_TLS_VERIFY=0) | HIGH | Open | All | Restrict to debug builds or remove |
| 6 | Network | Plaintext HTTP for localhost inter-service communication (3 instances) | HIGH | Open | All | Add TLS to localhost services |
| 7 | Command Injection | scorpiox-server.c git ops via system() with HTTP input | HIGH | Open | Windows | Use CreateProcess() with argv |
| 8 | Command Injection | scorpiox-renderimage.c system() with file paths | HIGH | Open | Windows | Use _spawnvp() with argv |
| 9 | Command Injection | SSH probe via system() with config values (tmux) | MEDIUM | Open | Windows | Use CreateProcess() |
| 10 | Command Injection | sx_tool_exists() uses system("where ...") | MEDIUM | Open | Windows | Use _spawnvp() |
| 11 | Command Injection | popen() with search query interpolation | MEDIUM | Open | Windows | Sanitize input or use argv |
| 12 | TLS | Traffic proxy disables TLS in child processes | MEDIUM | Open | Linux | Use injected CA bundle only |
| 13 | TLS | SMTP AUTH over plaintext on port 25 | MEDIUM | Open | All | Require STARTTLS for AUTH |
| 14 | TLS | Opportunistic TLS for outbound MX delivery | MEDIUM | Open | All | Enforce TLS 1.2+ for MX |
| 15 | File I/O | Predictable /tmp paths (symlink attacks) | MEDIUM | Open | Linux | Use $XDG_RUNTIME_DIR |
| 16 | File I/O | Traffic logs contain API request/response bodies | MEDIUM | Open | Linux | Add cleanup policy |
| 17 | File I/O | Session data stored in plaintext JSON | MEDIUM | Open | All | Consider encryption at rest |
| 18 | Install | No cryptographic code signing | MEDIUM | Open | All | Implement Authenticode/GPG signing |
| 19 | Install | SHA256 sidecar from same origin | MEDIUM | Open | All | Publish via independent channel |
| 20 | Install | --no-verify bypass flag | MEDIUM | Open | Linux/macOS | Remove or restrict |
| 21 | Buffer | Unvalidated network malloc size (test utility) | MEDIUM | Open | All | Add upper bound check |
| 22 | Privilege | WSL execution runs as root | MEDIUM | Open | Windows | Create non-root user in container |
| 23 | Privilege | No cgroup/IPC namespace isolation | MEDIUM | Open | Linux | Add namespace flags |
| 24 | Privilege | --net host disables network isolation | MEDIUM | Open | Linux | Warn or require confirmation |
| 25 | WPF | Install script URL lacks HTTPS scheme | MEDIUM | Open | Windows | Add https:// prefix |
| 26 | WPF | Machine hostname sent to telemetry endpoint | MEDIUM | Open | Windows | Add opt-out mechanism |
| 27 | WPF | Error stack traces sent to remote endpoint | MEDIUM | Open | Windows | Sanitize before sending |
| 28 | Network | External API endpoints hardcoded as defaults (6) | MEDIUM | Open | All | Make fully configurable |
| 29 | Build | PIE/ASLR not enabled for static builds | LOW | Open | Linux | Add -fPIE/-pie flags |
| 30 | Credential | Hardcoded TCP relay IP in config | LOW | Open | All | Use DNS hostname |
| 31 | Credential | Internal IPs/usernames in build scripts | LOW | Open | N/A | Remove from repository |
| 32 | Supply Chain | npm semver range (^7.0.0) for baileys | LOW | Open | N/A | Pin exact version |
| 33 | Telemetry | Hostname/username sent when tracking enabled | LOW | Open | All | Hash or anonymize |
| 34 | Telemetry | Full conversation content sent when session tracking enabled | LOW | Open | All | Document clearly; add consent |
18. Conclusion & Recommendations
Overall Assessment
SCORPIOX CODE demonstrates strong security engineering for a C-based application of its scale (147,742 lines of project code). The codebase exhibits disciplined memory management, comprehensive bounds checking, and well-structured credential handling. The absence of hardcoded secrets, disabled-by-default telemetry, and SHA256-verified distribution pipeline represent mature security practices.
Risk Summary
| Deployment Context | Risk Rating |
|---|
| Windows Workstation | LOW |
| Full Platform (incl. Linux server) | LOW-MEDIUM |
Priority Recommendations
High Priority (address before deployment):
Restrict TLS verification kill-switch — The SX_TLS_VERIFY=0 global toggle should be removed or restricted to debug builds. This is the highest-impact finding affecting Windows deployments.
Migrate Windows system()/popen() calls to CreateProcess() — The command injection surface on Windows is the primary code-level risk for workstation deployments.
Replace hardcoded IP with DNS hostname — The TCP relay IP 20.53.240.54 should use a DNS name for operational flexibility and to avoid infrastructure disclosure.
Medium Priority (address in next release cycle):
Implement code signing — Authenticode for Windows binaries, GPG for Linux/macOS archives
Publish checksums via independent channel — Separate the integrity verification from the distribution origin
Encrypt session data at rest — Conversation history is stored in plaintext JSON
Remove --no-verify bypass from install scripts
Low Priority (continuous improvement):
Expand container runtime seccomp and capability controls (Linux-only)
Add PIE/ASLR support for static builds
Add atomic install with signal trap cleanup
Anonymize hostname/username in usage tracking data
Deployment Approval
Based on this audit, SCORPIOX CODE is suitable for Windows workstation deployment with the following conditions:
Ensure SX_TLS_VERIFY is not set to 0 in any deployment configuration
Ensure USAGE_TRACKING and EMIT_SESSION_TRACKING remain 0 unless explicitly approved
Review Windows Firewall rules for any server-mode binaries
Monitor for code signing implementation in future releases
19. Appendix: Audit Methodology
Agents Deployed
| # | Agent | Scope | Method |
|---|
| 1 | supply-chain | Package managers, vendored libs, pre-built binaries | Dependency enumeration, version verification, CVE check |
| 2 | build-provenance | Build system, compiler flags, Docker configs | Static analysis of CMake/Dockerfile/Makefile |
| 3 | network-endpoints | Hardcoded URLs, IPs, domains, ports | Pattern matching across all source files |
| 4 | tls-security | TLS configuration, cert verification, cipher suites | Code path analysis for all TLS callsites |
| 5 | credential-hardcode | API keys, passwords, tokens, secrets | Pattern scan + semantic analysis |
| 6 | file-io | File operations, temp files, permissions | Static analysis of all open/fopen/mkstemp calls |
| 7 | buffer-safety | sprintf/strcpy, stack buffers, format strings | Function usage enumeration + bounds verification |
| 8 | memory-safety | malloc NULL checks, use-after-free, double-free | Allocation site tracing + pattern matching |
| 9 | command-injection | system(), popen(), exec*() call sites | Sink-source analysis for all execution functions |
| 10 | privilege-access | setuid, capabilities, namespaces, process spawning | Privilege escalation path analysis |
| 11 | windows-deployment | Windows-compiled binaries, APIs, deployment scope | Platform-specific code path enumeration |
| 12 | telemetry-tracking | Phone-home behavior, data collection, tracking | Network call analysis + config default verification |
| 13 | install-script | Install/update scripts, distribution pipeline | Script analysis + HTTP security verification |
| 14 | wpf-launcher | WPF desktop application, P/Invoke, download security | .NET code analysis + marshalling review |
Scope
- Repository:
clang (commit 60a9c0539b7611894c0f11654dd3a991fb1b2098)
- Files analyzed: 224 non-vendor C source files, 75 header files
- Lines of code: 147,742 (project) + 228,140 (vendor) = 405,182 total
- Vendor libraries excluded from primary analysis (reviewed separately for version currency and known CVEs)
- Analysis type: Static analysis via pattern matching, semantic code review, configuration audit
- No dynamic testing (fuzzing, penetration testing) was performed
Severity Classification
| Severity | Definition |
|---|
| Critical | Immediate exploitability with high impact; requires urgent remediation |
| High | Significant security weakness; should be remediated before production deployment |
| Medium | Moderate risk; should be addressed in the next release cycle |
| Low | Minor concern; address as part of continuous improvement |
| Info | Positive finding, architectural observation, or design documentation |
Report generated 2026-04-30 by automated security audit pipeline. All findings are based on static code analysis and may not reflect runtime behavior.