Back to skill

Security audit

PIPL-Compliance

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a local PIPL compliance tool, but users should review it because its security and capability claims are materially overstated or inconsistent with the shipped scripts.

Install only after reviewing the mismatched claims. Run it in an isolated virtual environment, pin dependencies yourself, avoid feeding unnecessary sensitive personal data, and treat outputs as draft compliance aids rather than legal advice or proof of PIPL compliance.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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 (1)

T08 · Insecure Dependencies

Warning
Location
requirements.txt:5
Finding

Unbounded Jinja2 Dependency Permits Installation of Unaudited Future Releases

Content
View full analysis

Vulnerability Details

File Location: requirements.txt:4-5; installation instructions at README.md:46-49
Vulnerability Type: Unbounded third-party dependency version
Risk Level: Medium

Vulnerable Code

text
pandas==2.2.0
jinja2>=3.1.6

The documented installation procedure executes dependency resolution against the configured Python package index:

bash
pip install -r requirements.txt

Technical Analysis

The jinja2>=3.1.6 constraint specifies only a minimum version. It therefore allows pip to install any future Jinja2 release satisfying the constraint, even though that release was not available when this Skill was audited.

This contradicts the project's assertion that all dependencies are version-pinned. The dependency is obtained from the package index configured in the user's environment without a lock file or cryptographic hashes. Consequently, installation results may change over time or between environments.

No evidence was found that the currently declared Jinja2 package is malicious. The security weakness is that future dependency contents are not reproducibly constrained or integrity-verified. Exploitation requires compromise of the upstream package, package index, configured mirror, or dependency-resolution environment.

Attack Path

  1. An attacker compromises a future qualifying Jinja2 release, the configured package repository, or an internal package mirror.
  2. The attacker publishes or serves a malicious version numbered higher than 3.1.6.
  3. A user or CI runner follows the documented command:
    bash
    pip install -r requirements.txt
    
  4. pip resolves the unbounded constraint to the attacker-controlled release.
  5. The malicious package is installed into the target Python environment.
  6. Package-controlled code may execute during applicable build or installation processing, or when scripts/document-generator.py imports Jinja2.

...[truncated 871 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace the lower-bound constraint with an exact, reviewed version:

    text
    jinja2==3.1.6
    
  2. Generate and maintain a deterministic lock file containing all transitive dependencies.

  3. Add SHA-256 hashes for every permitted distribution and require hash verification:

    bash
    pip install --require-hashes -r requirements.txt
    
  4. Review and regenerate dependency hashes only through a controlled update process.

  5. Configure CI to use a trusted package repository or an access-controlled internal mirror.

  6. Run dependency installation and document generation inside an isolated, non-privileged virtual environment or container without unnecessary secrets.

  7. Add automated dependency vulnerability and provenance checks to CI, while treating scan metadata in package.json as informational rather than proof of current dependency safety.

Vulnerability Patterns
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (40)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The mismatch between promised enterprise compliance management features and the narrower apparent implementation is a real trust and safety issue. Because this is a PIPL compliance skill, inaccurate capability claims can directly affect privacy governance, audits, and cross-border data handling decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding

The mismatch between promised enterprise compliance management features and the narrower apparent implementation is a real trust and safety issue. Because this is a PIPL compliance skill, inaccurate capability claims can directly affect privacy governance, audits, and cross-border data handling decisions.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding

The mismatch between promised enterprise compliance management features and the narrower apparent implementation is a real trust and safety issue. Because this is a PIPL compliance skill, inaccurate capability claims can directly affect privacy governance, audits, and cross-border data handling decisions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The file title and all changelog content are presented in Chinese, but the document does not state that the skill is China-specific or that Chinese is an intentional locale choice. Under the policy, natural-language files should not force a specific language unless the locale constraint is clearly documented and justified or user choice is offered.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The changelog presents conflicting statements about removal of out-of-scope modules while later entries describe shared cross-jurisdiction components and joint GDPR/CCPA checks. In a compliance skill, contradictory scope claims can mislead users and reviewers about actual functionality, causing unauthorized or unintended compliance processing paths to be trusted or overlooked.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The changelog claims cross-jurisdiction compliance and shared modules with GDPR/CCPA tooling, which exceeds the declared PIPL-only scope in the skill metadata. This scope expansion is dangerous because operators may run broader compliance checks or invoke shared components that handle data and logic outside the promised boundary, undermining least-privilege and trust assumptions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The skill description is presented as Chinese-only user-facing guidance, and the file also references a dedicated Chinese checklist and template without indicating that users may choose another language. Under the stated policy, forcing a specific language or locale without user opt-in is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
82% confidence
Finding

Core descriptive and usage text, including the main description, use cases, and trigger keywords, is presented in Chinese, which effectively imposes a language requirement on users. The document does not clearly offer an alternative language, an opt-in language selection, or state that the language restriction is required for a documented regional-compliance reason.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The listed trigger keywords include generic terms such as “合规检查”, “风险评估”, “隐私合规”, and “数据保护”, which are broad phrases that can appear in many ordinary enterprise or legal conversations unrelated to this specific skill. The description does not provide exclusion conditions or negative examples to clarify when the skill should not activate.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

Embedding executable-looking cleanup code inside a skill document increases ambiguity about what should be treated as documentation versus runnable content. In agent environments, mixed content can lead to accidental execution, parser confusion, or trust boundary mistakes, especially when the same document also serves as operational guidance.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The document claims writes are confined to user-specified output paths, yet the embedded snippet deletes hard-coded temporary files. Even if only illustrative, that contradiction weakens trust in the stated filesystem boundaries and can normalize undeclared file operations in a skill handling potentially sensitive compliance data.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown template is entirely written in Chinese and is labeled as a general privacy policy, but it does not indicate that the language is optional, localized, or limited to a China-specific deployment context. The policy criteria treat forced language/locale constraints without user opt-in or clear justification as a natural-language policy violation.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

该模板明确声称依据《中华人民共和国个人信息保护法》提供权利说明,但第6节中的权利表述存在不准确或不完整风险,例如将权利体系泛化、混用其他法域常见表述,可能导致企业生成对外文件时错误告知个人权利与处理规则。对一款以PIPL合规检查和文档生成为核心用途的技能而言,这会直接误导合规实践,导致监管、投诉或合同争议风险。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file presents all instructions and checklist content exclusively in Chinese, and nowhere indicates that the user can choose another language or that the skill is intentionally limited to a Chinese-speaking or China-specific audience. Under the policy for natural-language violations, forcing a specific language without user opt-in is a reportable issue unless the locale constraint is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The entire skill document is written only in Chinese and does not offer any language or locale choice to the user. Under the stated policy, forcing a specific language without opt-in is a natural-language policy violation unless the locale constraint is clearly documented and justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The module docstrings and class description are written in Chinese, and the interactive user-facing prompts are also Chinese-only. This imposes a specific language/locale on users without any opt-in or documented justification, which matches the language-policy violation criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

User-facing console output such as warnings, instructions, and skip messages is presented only in Chinese. Because the file does not offer a language choice or explain a required locale scope, this is a natural-language policy issue.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This Python file contains user-facing descriptions, help text, and report output entirely in Chinese, including argparse help and printed report labels. Because the skill does not offer language selection or state that it is intentionally limited to a Chinese-only locale, it creates a natural-language locale policy concern.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This Python file contains natural-language policy text that fixes the governing law to the People's Republic of China and requires disputes to be handled in the developer's local court. Under the policy, forced locale or jurisdiction constraints without user opt-in or a clearly documented region-specific justification should be flagged.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This code hard-codes the generated HTML document language to "zh-CN", which imposes a specific locale on all users. The file also uses Chinese-only labels throughout the output without any opt-in or configuration path, which is a natural-language/locale policy concern under the stated rules.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The module description and embedded templates are entirely oriented to Chinese-language PIPL documents, with no natural-language indication that users can choose another language or locale. This creates a locale policy concern because the skill appears to impose a specific language context by default rather than offering an explicit choice.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

L349-L353 将该函数描述为“生成文档(支持Jinja2模板)”,并且从命名上也表明会完成文档生成;但在 L366 开始又在同一缩进层级定义了新的方法,导致 L387 之后看似属于生成流程的代码不再属于 generate_document 的可执行主体。结果是该函数实际只做模板类型检查和局部变量赋值,主动违背了其自身注释/文档表达的意图。

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The module title, description, and all user-facing strings are written exclusively in Chinese and describe the tool as a China-specific compliance checker. There is no visible indication in this file that users can choose another language or opt in to the locale constraint.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The module docstrings and user-facing descriptions are written entirely in Chinese, including the tool name and purpose, with no indication that language selection is optional. This creates a natural-language locale constraint that may violate organizational language-choice policy when used in broader environments.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.