Back to skill

Security audit

PIPL Check - PIPL合规检查

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it says, but its cloud-scoring path has review-worthy handling risks for API keys and generated HTML reports.

Install only if you are comfortable sending compliance answers and an API key to compliancehub.cn. Treat HTML reports as untrusted if opened in a browser, and prefer environment-variable API keys over saved key files until redirect and HTML escaping controls are fixed.

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/pipl-check.py:259
Finding

Bearer API Key Can Be Disclosed Through Unrestricted Cross-Origin Redirects

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/pipl-check.py:411
Finding

Cloud-Controlled Values Are Written to HTML Reports Without Escaping

Content
View full analysis
= 80 else "#ff9800" if score >= 60 else "#f44336" rows = "" sev_cls = {"critical": "#dc2626", "high": "#ea580c", "medium": "#ca8a04", "low": "#16a34a"} sev_label = {"critical": "严重", "high": "高", "medium": "中", "low": "低"} current_cat = "" for r in items: if r.get("category") != current_cat: current_cat = r.get("category", "") rows += f'{current_cat}\n' icon = "✅" if r.get("passed") else "❌" cls = "pass" if r.get("passed") else "fail" sev = r.get("severity") or "" sev_badge = "" if sev: color = sev_cls.get(sev, "#64748b") sev_badge = f'{sev_label.get(sev, sev)}' rec = r.get("recommendation") or "Keep it up" meta = r.get("meta") or {} rt = meta.get("remediation_template") if not r.get("passed") and rt: rec = f"🔧 {rt.get('summary', '')}(整改期限约 {rt.get('deadline_days', '')} 天)" case_html = "" case_keys = (r.get("meta") or {}).get("related_case_keys") or [] if case_keys and cases_by_ref: shown = 0 li = [] for ck in case_keys: for line in cases_by_ref.get(ck, []): li.append(f"
  • {line}
  • ") shown += 1 if shown >= 3: break if shown >= 3: break if li: case_html = ...[truncated 2693 chars]
    Remediation
    View remediation
    Vulnerability Patterns
    • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
    • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
    • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
    • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
    • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
    Findings (3)

    Natural-Language Policy Violations

    Medium
    Category
    Not specified by scanner
    Confidence
    95% confidence
    Finding

    The package description is entirely in Chinese and instructs activation/use in that language, without indicating any user choice of language or locale. This can violate language/locale policy because the skill presents a fixed language experience rather than offering opt-in or alternatives.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Low
    Category
    Not specified by scanner
    Confidence
    91% confidence
    Finding

    The manifest explicitly states the locale is zh-CN and that interaction and prompts are primarily in Chinese, with English only available on request. This imposes a default language preference rather than presenting language choice up front, which matches the language/locale policy concern for natural-language instructions.

    Content

    No source excerpt is available for this finding.

    Natural-Language Policy Violations

    Low
    Category
    Not specified by scanner
    Confidence
    90% confidence
    Finding

    The generated HTML report sets <html lang="zh-CN">, which forces a specific language/locale choice in the output. The file does not appear to offer users an explicit language or locale option for report generation.

    Content

    No source excerpt is available for this finding.

    Static analysis

    No suspicious patterns detected.