Skip to main content

MAL-LOADER Fetch-to-Eval Remote Code Load

Source downloads code and runs it. The first stage in the repository is thin enough to pass review, while the real payload comes from a host the author controls at run time, so reading the clone cannot show what actually runs.

What Vulkro detects​

MAL-LOADER-001 fires when a fetch and an execution sink fall within a few lines of each other in the same file. The same line (nested eval(fetch(...))) is the strongest case; a few lines apart is download-then-run.

Shapes in JS/TS and Python include:

  • eval(await (await fetch(url)).text())
  • new Function(res.data) fed by a fetch a few lines up
  • child_process.execSync(downloaded) after curl / wget / fetch
  • Python exec(requests.get(url).text) and pickle.loads(requests.get(...).content)
  • download to a temp file, then execute

This is not data flow: it shows a fetch and a sink are adjacent, not that the bytes reach the sink. A lone fetch or a lone eval never fires. It never certifies code safe.

How to fix​

  • Do not run the repository until you have fetched the URL yourself, out of band, and read what it serves.
  • Replace runtime code download with a pinned, integrity-checked dependency.

References​

See also: Confidence model.


This page is generated by vulkro rules export <out-dir> from Vulkro's built-in detector catalogue. Edits made by hand are overwritten on the next regeneration.