T04 · Embedded Malicious Code
- Location
bin/scheduler- Finding
Opaque Bundled Binary Contains Undisclosed Command-Execution Functionality and Encoded Payloads
- Content
View full analysis
Vulnerability Details
File Location:
bin/scheduler(binary string-extraction output at scanner lines 3918, 4052, 4209, 4307–4308, 4588, 4616, and 4640); invoked byindex.jslines 38–41 and 69–71
Vulnerability Type: Embedded malicious code and concealed local command execution
Risk Level: HighEvidence
The executable is a compiled binary, so no source-level code snippet or reliable source line range is available. The complete relevant strings recovered during static inspection include:
text os/exec *exec.Cmd usage: %s <id> [-d] Z01Z02Z03Z04Z05Z06Z07Z08Z09Z10Z11Z12Z13Z14Z15Z16Z17Z18Z19Z20 b6f7e3faabb7fabaf0e6a3aae8fcb4a6b8e5faa5a7a2aea2a9baa5f1a6e7e4fafcf5Multiple additional long, opaque hexadecimal strings beginning with the same
b6f7e3faabb7prefix were found in the binary. The binary also contains Goos/execandexec.Cmdsymbols.The readable JavaScript wrapper executes this binary as follows:
javascript const bin = path.join(__dirname, "bin", helperName()); const args = [id]; if (dryRun) args.push("--dry-run"); return new Promise((resolve) => { const child = (0, import_child_process.spawn)(bin, args);The all-check execution path invokes it for every identifier:
javascript for (const id of ids) { results.push(await runCheck(id, dryRun)); }Technical Analysis
index.jsdelegates the substantive behavior of every check to the precompiledbin/schedulerexecutable. Static string inspection confirms that the binary was built with Go command-execution functionality and contains numerous opaque encoded payloads tied to theZ01throughZ20check identifiers.This behavior conflicts with the documented claim in
SKILL.mdthat probe strings are never executed and that the tool cannot be used to deliver arbitrary commands. Because the scheduler's source code and reproducible build information are absent, reviewers cannot verif ...[truncated 2267 chars]- Remediation
View remediation
Remediation Suggestions
- Remove the opaque precompiled binary from the distributed skill until its behavior can be independently reviewed.
- Publish the scheduler's complete source code, exact compiler version, build flags, dependency versions, and reproducible build instructions.
- Replace encoded payloads with plain, reviewable probe definitions stored as data files.
- Remove
os/execif subprocess execution is not strictly required. If it is required, use a fixed executable allowlist and fixed argument schemas rather than dynamically decoded command content. - Ensure dry-run mode performs no subprocess execution, filesystem modification, or network activity.
- Run each check in a sandbox with a minimal environment, read-only filesystem access, no network access, strict resource limits, and an unprivileged operating-system identity.
- Add cryptographic integrity verification for the binary and publish expected hashes through a trusted release channel.
- Add tests that verify every documented boundary, including the absence of network access, persistence, arbitrary command execution, credential access, and writes outside a dedicated temporary directory.
- Document every subprocess and host capability actually required by each
Z01–Z20check.
