Skip to content

Security: hamodywe/scriptgate

Security

SECURITY.md

Security Policy

Reporting a vulnerability

Please report security issues privately through GitHub Security Advisories rather than as a public issue.

Expect an acknowledgement within 72 hours and an assessment within seven days. If a fix is warranted, you will be credited in the advisory unless you ask not to be.

Supported versions

The latest minor release receives security fixes. This project is pre-1.0; when it reaches 1.0 this section will name a support window.

What counts as a vulnerability in this tool

scriptgate reads hostile input by design — the whole point is pointing it at dependency code nobody has vetted. The following are in scope:

  • Code execution while scanning. Nothing from node_modules should ever be executed. If a crafted package can get code to run during a scan, that is a critical bug.
  • Path traversal. A crafted package that gets the analyser to read a file outside its own directory. Script resolution rejects paths that escape the package; a bypass is in scope.
  • Denial of service. A crafted package or tree that makes a scan hang or exhaust memory — a symlink cycle that defeats the visited-set, a script that makes a detector backtrack catastrophically.
  • Report injection. Output that lets a package's own content forge findings — terminal escape sequences that rewrite the screen, markdown that breaks out of a table cell, SARIF that misattributes a result.
  • Silent under-reporting. A construction that reliably hides an install script from discovery. A missed detection is a false negative, which is usually a bug rather than a vulnerability; a general technique for making install-time execution invisible to the scan is a vulnerability.

What does not count

  • A missed signal in one package. Lexical analysis has limits, and the README states them. Please open a normal issue — those reports are welcome and useful, they are just not security reports.
  • A false positive. Same: open a false finding issue.
  • Vulnerabilities in packages scriptgate reports on. Report those to the package's maintainers. scriptgate is the messenger.

This tool's own security posture

  • No network access. There is none anywhere in the tool. It cannot exfiltrate what it reads, and it works in an air-gapped build.
  • Nothing is executed. Scripts from node_modules are read as text. Hook commands are parsed as strings, never passed to a shell.
  • Zero runtime dependencies. The published package has no dependencies, so installing it does not widen your supply chain.
  • No install script of its own. scriptgate does not need one, and shipping one would be a poor joke.
  • Reads are bounded. Referenced scripts are read up to 256 KiB and directory descent is depth-limited, so a hostile tree cannot turn a scan into an unbounded read.
  • Writes are confined. The only file scriptgate ever writes is the project's own package.json, and only when allowlist --write is passed explicitly.

There aren't any published security advisories