CVE-2026-19335 Overview
CVE-2026-19335 is a path traversal vulnerability [CWE-22] in the Jane-xiaoer skill-vision-control project, affecting versions up to 1.3.0. The flaw resides in the getSkillVersionsDir function within src/svc/utils/config.ts. Attackers can manipulate the skillName argument to traverse the filesystem and access files outside the intended directory. Exploitation requires local access, which limits the attack surface. The project maintainer was notified through a GitHub issue but has not responded as of publication.
Critical Impact
Local attackers with low privileges can leverage the skillName parameter to read or reference files outside the intended skill versions directory, exposing project data on the host system.
Affected Products
- Jane-xiaoer skill-vision-control versions up to and including 1.3.0
- Vulnerable component: src/svc/utils/config.ts
- Vulnerable function: getSkillVersionsDir
Discovery Timeline
- 2026-08-09 - CVE-2026-19335 published to NVD
- 2026-08-13 - Last updated in NVD database
Technical Details for CVE-2026-19335
Vulnerability Analysis
The vulnerability exists in the getSkillVersionsDir function inside src/svc/utils/config.ts. The function accepts a skillName argument and uses it to construct a filesystem path pointing to the directory that stores skill version data. Because the input is not sanitized or constrained to a safe base directory, attackers can inject traversal sequences such as ../ to reference paths outside the intended location.
The issue is classified under CWE-22: Improper Limitation of a Pathname to a Restricted Directory. Attack complexity is low, but exploitation requires local access and low-level privileges on the host running the application. The vendor was informed via a public issue on the GitHub Issue Tracker but has not published a fix.
Root Cause
The root cause is missing input validation on the skillName parameter. The function trusts caller-supplied strings when composing filesystem paths, allowing dot-segment traversal to escape the base directory. Path canonicalization and allowlist validation are absent.
Attack Vector
An attacker with local access supplies a crafted skillName value containing traversal sequences. When getSkillVersionsDir builds the target path, the resulting resolved path points outside the intended skill versions folder. The attacker can then influence which files the application reads or references during downstream operations. See the VulDB CVE Details and the GitHub Project Repository for additional technical context.
Detection Methods for CVE-2026-19335
Indicators of Compromise
- Requests or invocations passing skillName values containing ../, ..\\, or URL-encoded traversal sequences such as %2e%2e%2f.
- Application logs showing file access to paths outside the configured skill versions directory.
- Unexpected read operations on sensitive files by the Node.js process hosting skill-vision-control.
Detection Strategies
- Instrument getSkillVersionsDir and related path-building routines to log resolved absolute paths and flag any that fall outside the intended base directory.
- Review historical application logs for skillName inputs containing traversal characters or absolute path separators.
- Enable filesystem auditing on the host to capture access attempts to paths not owned by the application.
Monitoring Recommendations
- Monitor process-level file access telemetry for the Node.js runtime hosting skill-vision-control.
- Alert on any read of files outside the application's working directory tree.
- Track issue and commit activity on the GitHub Project Repository for upstream fixes or maintainer responses.
How to Mitigate CVE-2026-19335
Immediate Actions Required
- Restrict local access to systems running skill-vision-control version 1.3.0 or earlier to trusted users only.
- Audit any wrapper code that calls getSkillVersionsDir and validate skillName inputs against a strict allowlist of expected values.
- Run the application under a least-privilege account that cannot read sensitive filesystem locations.
Patch Information
No official patch is available at the time of publication. The maintainer has not responded to the GitHub Issue Tracker report. Monitor the VulDB Vulnerability Information page for updates.
Workarounds
- Apply a local patch that validates skillName with a regular expression such as ^[A-Za-z0-9_-]+$ before passing it to getSkillVersionsDir.
- Resolve the final path with path.resolve and verify it starts with the intended base directory before performing any filesystem operation.
- Isolate the application inside a container or chroot to constrain the filesystem view available to the process.
# Example allowlist validation applied before invoking getSkillVersionsDir
if [[ ! "$SKILL_NAME" =~ ^[A-Za-z0-9_-]+$ ]]; then
echo "Invalid skillName rejected"
exit 1
fi
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

