Back to skill

Security audit

fin-ai-classifier

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to be a simple local financial-AI tiering helper, with documentation and permission-scope cleanup needed but no evidence of hidden, persistent, networked, or destructive behavior.

Before installing, treat the output as decision support only and verify against current official financial regulations. Prefer removing or enforcing the unused Bash/Write/WebFetch allowances and clarifying that the skill runs the bundled Python CLI rather than a document-only workflow.

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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • 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 (8)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This file contains all operative instructions in Chinese, including the title, purpose, boundaries, and agent rules, but does not provide an opt-in language choice or explain that the skill is intentionally limited to Chinese-speaking users or maintainers. That creates a natural-language locale constraint that may exclude users or agents expecting another language, which matches the policy's language/locale violation criterion.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The trigger phrases include broad terms such as '合规' and '判定器', which are generic enough to match many unrelated requests. Over-broad activation can unintentionally route user tasks into a skill that performs compliance classification, exposing sensitive financial context, producing irrelevant outputs, or causing inappropriate automated decisions in larger workflows.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The file prominently presents a Chinese-only display name/title and substantial Chinese-language usage guidance, while the example trigger phrases and operational sections target Chinese interaction patterns. Although an English section exists, the skill does not clearly state that users may choose their preferred language or explain a justified locale restriction, which can violate language/locale policy requirements.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The documentation says no external file needs to be loaded and implies direct workflow triggering only, while the interface and input schema show command-line argument passthrough to a script. This can cause operators or orchestrators to invoke the skill with incorrect trust assumptions, which is a security-relevant integrity issue even if it is primarily a documentation inconsistency.

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 docstring and user-facing descriptions are entirely in Chinese, and the CLI help/error/disclaimer strings throughout the file are also Chinese-only. Under the policy, forcing a specific language without user opt-in is a natural-language locale violation unless the constraint is explicitly justified as region-specific, which is not stated here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The title presents the skill in a fixed bilingual Chinese/English format, and the document continues with mandatory Chinese and English sections rather than stating a user-selectable language or locale option. Under the stated policy, forcing a specific language or locale without opt-in can be a natural-language policy concern.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation says no external file needs to be loaded and implies direct workflow triggering only, while the interface and input schema show command-line argument passthrough to a script. This can cause operators or orchestrators to invoke the skill with incorrect trust assumptions, which is a security-relevant integrity issue even if it is primarily a documentation inconsistency.

Content

No source excerpt is available for this finding.

Dynamic attribute access via getattr()

Low
Category
Dangerous Code Execution
Confidence
50% confidence
Finding

Dynamic getattr() with a non-literal attribute name can access arbitrary object attributes, potentially bypassing access controls.

Content

Scanner excerpt · fin-ai-classifier.py (reported line 98)May include surrounding context.

python
out_list.append({"tool": META["slug"], "input": d, "errors": [str(e)], "rc": 2, "aigc_mark": AIGC})
        print(json.dumps(out_list, ensure_ascii=False, indent=2))
        sys.exit(0 if allok else 2)
    args = {k: getattr(ns, k) for k in argnames}
    try:
        res, rc = _run(args)
    except GateError as e: