Back to skill

Security audit

GDPR Export Compliance(GDPR出海合规实操)

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed Chinese-language GDPR compliance handbook with a local rule-based CLI and no evidence of network access, credential use, persistence, or destructive behavior.

This appears safe to install as a Chinese-language GDPR reference and local checklist tool. Treat its compliance output as an initial aid, not legal advice, and verify current GDPR guidance before relying on it for real regulatory decisions. Only run the verification scripts if you are comfortable with them reading package-local files and regenerating local verify outputs.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (17)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

A strong description-behavior mismatch is a security-relevant issue because the skill presents itself as a GDPR compliance aid while static analysis indicates unrelated artifact generation and benchmark/scoring/reporting behavior. This can mislead users into running code under false expectations, conceal undisclosed processing logic, and create an avenue for hidden or non-consensual actions that are outside the declared legal/compliance purpose.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

SQP-3 applies to all file types and covers natural-language policy violations such as forcing a specific language without user opt-in. This audit file presents all headings, findings, and usage guidance only in Chinese, with no indication that users may choose another language or that the skill is limited to a Chinese-speaking context.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The skill advertises executable local tooling via python tools/gdpr_toolkit.py ... but does not declare any explicit tool scope or permissions boundary. When a skill can read/write files or invoke shell-capable workflows without transparent declaration, users and hosting systems cannot accurately assess what the skill may access or modify, increasing the risk of unintended file access or command execution.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

This markdown file's user-facing content is entirely in Chinese, which constitutes a language/locale restriction in natural-language instructions. The file does not offer an opt-in choice of language or explain that the skill is intentionally limited to Chinese-speaking users or a China-specific audience.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/gdpr_quality_test.py (reported line 56)May include surrounding context.

python
def check_tools():
    items = []
    try:
        r = subprocess.run([PYTHON, TOOL, "scope", "--desc", "中国公司运营App,向欧洲用户提供在线服务并收集其个人数据"],
                           capture_output=True, text=True, timeout=60)
        items.append({"name": "scope 命令执行", "pass": r.returncode == 0 and "适用" in (r.stdout or "")})
        r2 = subprocess.run([PYTHON, TOOL, "legal", "--desc", "向欧洲用户发送营销邮件"],

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/gdpr_quality_test.py (reported line 59)May include surrounding context.

python
r = subprocess.run([PYTHON, TOOL, "scope", "--desc", "中国公司运营App,向欧洲用户提供在线服务并收集其个人数据"],
                           capture_output=True, text=True, timeout=60)
        items.append({"name": "scope 命令执行", "pass": r.returncode == 0 and "适用" in (r.stdout or "")})
        r2 = subprocess.run([PYTHON, TOOL, "legal", "--desc", "向欧洲用户发送营销邮件"],
                            capture_output=True, text=True, timeout=60)
        items.append({"name": "legal 命令执行", "pass": r2.returncode == 0 and "同意" in (r2.stdout or "")})
        r3 = subprocess.run([PYTHON, TOOL, "rights", "--right", "erasure"], capture_output=True, text=True, timeout=60)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/gdpr_quality_test.py (reported line 62)May include surrounding context.

python
r2 = subprocess.run([PYTHON, TOOL, "legal", "--desc", "向欧洲用户发送营销邮件"],
                            capture_output=True, text=True, timeout=60)
        items.append({"name": "legal 命令执行", "pass": r2.returncode == 0 and "同意" in (r2.stdout or "")})
        r3 = subprocess.run([PYTHON, TOOL, "rights", "--right", "erasure"], capture_output=True, text=True, timeout=60)
        items.append({"name": "rights 命令执行", "pass": r3.returncode == 0 and "删除权" in (r3.stdout or "")})
        r4 = subprocess.run([PYTHON, TOOL, "transfer", "--desc", "将欧洲用户数据传输到中国总部处理"],
                            capture_output=True, text=True, timeout=60)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/gdpr_quality_test.py (reported line 64)May include surrounding context.

python
items.append({"name": "legal 命令执行", "pass": r2.returncode == 0 and "同意" in (r2.stdout or "")})
        r3 = subprocess.run([PYTHON, TOOL, "rights", "--right", "erasure"], capture_output=True, text=True, timeout=60)
        items.append({"name": "rights 命令执行", "pass": r3.returncode == 0 and "删除权" in (r3.stdout or "")})
        r4 = subprocess.run([PYTHON, TOOL, "transfer", "--desc", "将欧洲用户数据传输到中国总部处理"],
                            capture_output=True, text=True, timeout=60)
        items.append({"name": "transfer 命令执行", "pass": r4.returncode == 0 and "SCC" in (r4.stdout or "")})
        r5 = subprocess.run([PYTHON, TOOL, "penalty"], capture_output=True, text=True, timeout=60)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/gdpr_quality_test.py (reported line 67)May include surrounding context.

python
r4 = subprocess.run([PYTHON, TOOL, "transfer", "--desc", "将欧洲用户数据传输到中国总部处理"],
                            capture_output=True, text=True, timeout=60)
        items.append({"name": "transfer 命令执行", "pass": r4.returncode == 0 and "SCC" in (r4.stdout or "")})
        r5 = subprocess.run([PYTHON, TOOL, "penalty"], capture_output=True, text=True, timeout=60)
        out5 = r5.stdout or ""
        items.append({"name": "penalty 命令执行", "pass": r5.returncode == 0 and "2000 万欧元" in out5 and "72 小时" in out5})
    except Exception as e:

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/gdpr_quality_test.py (reported line 83)May include surrounding context.

python
items = []
    for desc, expects in cases:
        try:
            r = subprocess.run([PYTHON, TOOL, "scope", "--desc", desc], capture_output=True, text=True, timeout=60)
            ok = r.returncode == 0 and any(e in (r.stdout or "") for e in expects)
            items.append({"name": f"scope「{desc[:14]}…」→{expects[0]}", "pass": ok})
        except Exception as e:

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/gdpr_quality_test.py (reported line 94)May include surrounding context.

python
]
    for desc, expects in tcases:
        try:
            r = subprocess.run([PYTHON, TOOL, "transfer", "--desc", desc], capture_output=True, text=True, timeout=60)
            ok = r.returncode == 0 and any(e in (r.stdout or "") for e in expects)
            items.append({"name": f"transfer「{desc[:14]}…」→{expects[0]}", "pass": ok})
        except Exception as e:

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

This JSON file includes user-facing natural-language strings almost entirely in Chinese, such as the note, labels, and check names, but does not indicate that the skill is region-specific or that users can opt into this language. Under the policy, forcing a specific language without user choice is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

Line L04 instructs that branding must uniformly use a specific Chinese name form and forbids alternatives, which is a natural-language policy constraint. Under the policy rule, forcing a specific language/locale or naming form without opt-in or clear regional justification can be flagged.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The package name and author metadata are presented only in Chinese, indicating the skill may be intended to operate in a fixed language/locale context. For manifest files, this can be a natural-language policy concern when no user opt-in or documented regional justification is provided.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

This Python file contains user-facing help text and command descriptions exclusively in Chinese, which imposes a specific language on users without indicating that other languages are available. The policy calls for flagging language or locale constraints when they are forced without user opt-in or justification.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest describes a GDPR compliance handbook with local zero-dependency tools for applicability and legal-basis assessment. In this verifier, the code launches the toolkit via subprocess multiple times, which is an execution capability beyond the substantive legal/compliance purpose itself and is not explicitly justified by the manifest description.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
95% confidence
Finding

This SVG contains user-facing labels and title text entirely in Chinese, including the main heading and axis labels, with no indication that the language is optional or region-specific. Under the natural-language policy rules, forcing a specific language without user opt-in is a locale-policy violation.

Content

No source excerpt is available for this finding.