EvoMap evolver path traversal in fetch command allows RCE

Severity: low · CVSS 3.1 · Published 2026-05-05

EvoMap evolver is a Node.js-based tool for fetching and managing AI "skills" from a Hub service. A path traversal vulnerability in the `evolver fetch` command allows a malicious Hub to overwrite arbitrary project files (including the entry point itself) with attacker-controlled code, leading to remote code execution when the evolver runs subsequent commands.

Technologies: EvoMap Evolver, @evomap/evolver (npm). Vendors: EvoMap, npm.

Quick answers

Is This vulnerability exploited in the wild?
No. Junglewise Threat Intelligence has no report of This vulnerability being exploited in the wild.
How severe is This vulnerability?
Low severity, with a CVSS score of 3.1, published 5 May 2026.
Which products and versions are affected?
EvoMap Evolver <= 1.70.0-beta.4; @evomap/evolver (npm) SEMVER:introduced=0,fixed=1.70.0-beta.5.
Is there a fix for This vulnerability?
Yes. @evomap/evolver (npm): upgrade to 1.70.0-beta.5 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is This vulnerability attacked?
It is attacked over the network, in a software library.
Am I affected?
Check whether you run EvoMap Evolver or @evomap/evolver (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @evomap/evolver (npm): upgrade to 1.70.0-beta.5 or later
    npm install @evomap/evolver@1.70.0-beta.5

Technical details

The vulnerability is a path traversal in the default (non-`--out`) branch of the `evolver fetch` subcommand. The `safeId` sanitization regex permits dot characters ([^a-zA-Z0-9_\-\.]), so a skill_id of `..` passes through unchanged. Combined with `path.join('.', 'skills', '..')` which collapses to `.` (the current working directory), files are written to cwd instead of the intended `./skills/` subdirectory. The traversal check (path.relative verification) only applies when `--out` is explicitly used, leaving the documented default case vulnerable. An attacker-controlled Hub can supply `bundled_files` containing JavaScript (.js), JSON (.json), shell (.sh), or Python (.py) files that overwrite legitimate project files like `index.js` or `package.json`. The response is trusted without signature verification, and any Hub participant can set a skill_id to `..`. The vulnerability allows arbitrary code execution on next invocation of the evolver.

Affected products

  • EvoMap evolver <= 1.70.0-beta.4

Timeline

  • 2026-05-05: disclosed
  • 2026-04-27: patched: Patched in version 1.70.0-beta.5

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.