Back to skill

Security audit

Gdpr

Security checks for vulnerabilities and agentic risk

Overview

This skill does not show exfiltration or backdoor behavior, but it is a GDPR-branded logger that can retain sensitive compliance and credential-related text in local plaintext without enough controls.

Review before installing. Use only for non-secret audit notes unless the publisher adds stronger privacy controls. Do not enter passwords, tokens, private keys, full personal identifiers, or regulated records you cannot safely store in plaintext local files. Treat exported CSV, JSON, and TXT files as sensitive records that need separate protection.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:6
Finding

Potentially Sensitive Compliance Data Is Persisted in Plaintext Without Enforced Access Controls

Content
View full analysis
> "$DATA_DIR/history.log"; } ``` Representative command handler: ```bash else local input="$*" local ts=$(date '+%Y-%m-%d %H:%M') echo "$ts|$input" >> "$DATA_DIR/check-strength.log" local total=$(wc -l < "$DATA_DIR/check-strength.log") echo " [Gdpr] check-strength: $input" echo " Saved. Total check-strength entries: $total" _log "check-strength" "$input" fi ``` Equivalent plaintext writes are present in the other domain command handlers through line 302. ### Technical Analysis The Skill advertises commands for recording password-strength checks, credential rotation, identity verification, consent withdrawal, data access, and other GDPR-related activities. User-provided values are written verbatim to command-specific log files and duplicated in `history.log`. The script does not: - Establish a restrictive `umask`. - Explicitly create the data directory with mode `0700`. - Explicitly create log and export files with mode `0600`. - Encrypt sensitive records at rest. - Redact passwords, credentials, personal data, or identifying information. - Warn users not to submit secrets. Consequently, the resulting access permissions depend on the caller's environment and existing filesystem state. A permissive `umask`, an incorrectly permissioned pre-existing directory, or execution in a shared environment can expose records to other local users or processes. ### Attack Path 1. A user invokes a command with sensitive content, such as: `gdpr check-strength "Production passwor ...[truncated 1174 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/script.sh:59
Finding

Unescaped Export Values Permit Malformed JSON and CSV Formula Injection

Content
View full analysis
"$out" local first=1 for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local name=$(basename "$f" .log) while IFS='|' read -r ts val; do [ $first -eq 1 ] && first=0 || echo "," >> "$out" printf ' {"type":"%s","time":"%s","value":"%s"}' "$name" "$ts" "$val" >> "$out" done < "$f" done echo "\n]" >> "$out" ;; csv) echo "type,time,value" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue local name=$(basename "$f" .log) while IFS='|' read -r ts val; do echo "$name,$ts,$val" >> "$out"; done < "$f" done ;; txt) echo "=== Gdpr Export ===" > "$out" for f in "$DATA_DIR"/*.log; do [ -f "$f" ] || continue echo "--- $(basename "$f" .log) ---" >> "$out" cat "$f" >> "$out" done ;; *) echo "Formats: json, csv, txt"; return 1 ;; esac echo "Exported to $out ($(wc -c < "$out") bytes)" } ``` ### Technical Analysis The export implementation inserts log content directly into JSON and CSV without format-specific encoding. For JSON, embedded quotation marks, backslashes, control characters, and newlines are not escaped. A crafted value can therefore corrupt the document or alter its apparent structure. For CSV, values containing commas, quotation marks, or newlines are not quoted according to CSV rules. More importantly, spreadsheet applications m ...[truncated 1924 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill is presented as a GDPR auditing and privacy-policy assistant, but the documented behavior is largely a generic event logger that persistently stores arbitrary user-supplied text. In this context, users may enter personal data, credentials, audit findings, or compliance notes believing they are using a privacy-oriented tool, which creates a real risk of inappropriate collection and retention of sensitive data without safeguards or actual GDPR-specific controls.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The declared skill purpose is GDPR auditing, privacy policy generation, and consent/data-flow review, but the implementation is a generic local logging utility with many unrelated commands. This mismatch is dangerous because users may trust the skill with sensitive compliance or personal data under false pretenses, while the script silently stores arbitrary inputs to disk instead of performing the advertised privacy-focused functions.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script writes user-provided inputs verbatim into persistent log files across many commands, with no explicit warning, consent prompt, minimization, encryption, or redaction. Given the skill's GDPR/privacy framing, users are especially likely to provide personal data, consent records, internal audit notes, or even credentials, making silent retention and later export/search a significant confidentiality and compliance risk.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The command set does not match the claimed GDPR-compliance purpose and instead exposes a broad logging surface for unrelated operations such as key rotation, hashing, and strength checks. This mismatch is security-relevant because it can mislead operators into trusting the tool for compliance workflows while it actually just records sensitive operational details, increasing the chance of unsafe usage and data overcollection.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill encourages logging audit, storage, retrieval, verification, revocation, and rotation events, all of which may contain personal data, credentials, or other sensitive operational details, yet it provides no warning that these entries are persisted in local plain logs. In a GDPR-themed tool, this omission is especially dangerous because users may assume privacy-safe handling and inadvertently store regulated data insecurely.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Labeling the script as a generic 'security tool/toolkit' conflicts with the manifest's GDPR-specific description and reinforces the deceptive mismatch in function. This increases the chance that operators misunderstand the trust boundary and supply sensitive security or privacy data to a tool that merely records inputs.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Commands such as check-strength, rotate, hash, verify, store, and retrieve suggest credential or secret-handling behavior that is not justified by a GDPR-compliance tool. In this context, these capabilities can socially engineer users into entering passwords, tokens, or other sensitive material, which the script then persists locally, increasing risk of credential disclosure and misuse.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
65% confidence
Finding

The statement that data never leaves the machine is absolute, yet later documentation explicitly supports exporting all data to a file. Even if export is local by default, the wording overstates the safety property and can mislead users about data movement risks.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.