Advisory Database
  • Advisories
  • Dependency Scanning
  1. cargo
  2. ›
  3. skillctl
  4. ›
  5. GHSA-wx3m-whqv-xv47

GHSA-wx3m-whqv-xv47: skillctl: Path traversal and symlink-follow in skillctl allow arbitrary file disclosure and deletion

June 5, 2026

skillctl 0.1.0 and 0.1.1 contained four path-safety vulnerabilities that, in combination, allowed an attacker to:

  1. Exfiltrate arbitrary files on the operator’s machine by publishing a malicious skills library containing a symlink inside a skill folder (e.g. niania → /home/user/.aws/credentials). The symlink fell through entry.file_type().is_dir() in fs_util::copy_dir_all, was dereferenced by fs::copy, and the target’s content was copied into the project. A subsequent skillctl push would have published the secret to the (possibly public) library — what the reporter called “round-trip path exfiltration”.

  2. Delete arbitrary directories outside the project or library root by crafting a .skills.toml with a malicious destination or source_path field. Both were deserialized as PathBuf with zero validation. Because Path::join lets an absolute right-hand side replace the base, destination = "/home/user/.ssh" made cwd.join(...) resolve outside the project; .. traversal was equally unguarded. Downstream remove_dir_all in replace_folder_contents then wiped arbitrary writable directories on skillctl pull / push / detect. .skills.toml is the exact kind of file teams commit and exchange via PR; a single merged malicious PR was sufficient to weaponise the maintainer’s next skillctl pull --all.

  3. detect --target accepted .. traversal, even though absolute paths were rejected. --target ../../../etc would have written outside the library root.

  4. Fork-name validation accepted . and .. literally, so a fork named .. would have produced a Path::join resolving to the parent directory and fs::rename could have clobbered it.

References

  • github.com/advisories/GHSA-wx3m-whqv-xv47
  • github.com/umanio-agency/skillctl/commit/827fff5c0698dd9e48e777d5907cf7bc19b91aca
  • github.com/umanio-agency/skillctl/releases/tag/v0.1.2
  • github.com/umanio-agency/skillctl/security/advisories/GHSA-wx3m-whqv-xv47

Code Behaviors & Features

Detect and mitigate GHSA-wx3m-whqv-xv47 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →

Affected versions

All versions before 0.1.2

Fixed versions

  • 0.1.2

Solution

Upgrade to version 0.1.2 or above.

Impact 7.1 HIGH

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:L

Learn more about CVSS

Weakness

  • CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
  • CWE-61: UNIX Symbolic Link (Symlink) Following

Source file

cargo/skillctl/GHSA-wx3m-whqv-xv47.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Tue, 23 Jun 2026 12:24:15 +0000.