MCP, MCP server
crowbar
Retrieve CVEs and index them inside your codebase: a local SQLite index of CVEs, exploits and advisories that any tool in your repo can query.
Compatibility: Not stated.
Grade C
One Medium finding. Read the report before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
INSTALL_REMOTE_SCRIPT
Why this grade
- INSTALL_REMOTE_SCRIPT Medium
Fetches a script from the network and runs it (a pipe to a shell, or an install hook with a URL).
scripts/install.mjs, line 206
spawnSync("sh", ["-c", "curl -LsSf https://astral.sh/uv/install.sh | sh"], { stdio: "inherit" });
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
crowbar/cli.py, line 208
pick = subprocess.run(
crowbar/cli.py, line 216
subprocess.run([hv, "cve", cid])
crowbar/cli.py, line 1004
link.unlink() if link.is_symlink() else shutil.rmtree(link)
Show more
crowbar/cli.py, line 1139
if subprocess.run(cmd, cwd=str(root)).returncode != 0:
crowbar/cli.py, line 1248
subprocess.run(["rsync", "-a", f"{data_src}/", f"{data_dst}/"], check=True)
crowbar/cli.py, line 1281
link.unlink() if link.is_symlink() else shutil.rmtree(link)
crowbar/cli.py, line 1347
subprocess.run(["launchctl", "bootout", f"gui/{os.getuid()}", str(plist)],
crowbar/cli.py, line 1349
res = subprocess.run(["launchctl", "bootstrap", f"gui/{os.getuid()}", str(plist)],
crowbar/cli.py, line 1365
subprocess.run(["launchctl", "bootout", f"gui/{os.getuid()}", str(plist)],
crowbar/cli.py, line 1383
subprocess.run([sys.executable, str(paths.ROOT / "bin/crowbar"), "update", "--quiet"])
crowbar/datasets.py, line 435
shutil.rmtree(target, ignore_errors=True)
crowbar/datasets.py, line 448
shutil.rmtree(dest)
crowbar/datasets.py, line 477
shutil.rmtree(new, ignore_errors=True)
crowbar/datasets.py, line 482
shutil.rmtree(d.path)
crowbar/datasets.py, line 490
shutil.rmtree(new, ignore_errors=True)
scripts/install.mjs, line 145
fs.rmSync(step.dir, { recursive: true, force: true });
Install and update
Serious
install fetches a script from the network. The docs document an installer that pipes a download into a shell.
INSTALL_REMOTE_SCRIPT INSTALL_DOCUMENTED_INSTALLER
scripts/install.mjs, line 206
spawnSync("sh", ["-c", "curl -LsSf https://astral.sh/uv/install.sh | sh"], { stdio: "inherit" });
scripts/install.mjs, line 313
if (!which("uvx")) console.log(warn("\n uv is not installed: ") + "curl -LsSf https://astral.sh/uv/install.sh | sh");
Network
Concern
can reach a host that is not written as a fixed address. can reach api.github.com. The description does not name that host.
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST
crowbar/chatter.py, line 114
def fetch(name: str, dest: pathlib.Path) -> int:
crowbar/datasets.py, line 308
with _host_slot(url), urllib.request.urlopen(req, timeout=timeout) as resp:
crowbar/datasets.py, line 374
with urllib.request.urlopen(req, timeout=timeout) as r:
Show more
crowbar/datasets.py, line 522
size, digest = chatter.fetch(d.name, d.path), ""
crowbar/query.py, line 382
with urllib.request.urlopen(req, timeout=60) as resp:
scripts/fetch_intel.py, line 282
with urllib.request.urlopen(req, timeout=90) as resp:
website/assets/main.js, line 189
const response = await fetch("https://api.github.com/repos/kushvinth/crowbar", {
Secrets
Pass
No read of a credential file or secret environment variable found.
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit 1069cbc9547a. can delete files. install fetches a script from the network. The docs document an installer that pipes a download into a shell. can reach a host that is not written as a fixed address. can reach api.github.com. The description does not name that host.
Date and source
Date checked:
github.com
Commit graded: 1069cbc9547aa83b754a51136c4e98896119d113
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.