Back to skill

Security audit

Skill Quotation Engine

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local quotation calculator with no evidence of hidden execution, persistence, credential access, or data exfiltration, though its generated financial totals need user review.

Install only if a Chinese-language quotation workflow is acceptable, and review outputs before using them as business documents. Treat input data as trusted or add validation for quantities, rates, durations, and JSON export behavior before relying on it in production.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
skill_quotation_engine_impl.py:30
Finding

Unvalidated Financial Inputs Permit Quotation Manipulation

Content
View full analysis
dict: """ Generate a quotation. Args: show_data: Show data rental_days: Number of rental days labor_count: Number of technicians labor_rate: Daily labor rate transport_km: Transportation distance transport_rate: Transportation rate insurance_rate: Insurance rate management_rate: Management rate """ # 1. Equipment rental fee equipment_cost = 0 equipment_items = [] for eq in show_data.get("equipment", []): category = eq.get("category", "control") qty = eq.get("quantity", 1) daily_rate = self._get_daily_rate(category, eq.get("model", "")) subtotal = daily_rate * qty * rental_days equipment_items.append({ "name": f"{eq.get('manufacturer', '')} {eq.get('model', '')}", "category": category, "quantity": qty, "daily_rate": daily_rate, "days": rental_days, "subtotal": subtotal }) equipment_cost += subtotal # 2. Labor fee labor_cost = labor_count * labor_rate * rental_days # 3. Round-trip transportation fee transport_cost = transport_km * transport_rate * 2 # 4. Insurance fee insurance_cost = equipment_cost * insurance_rate # 5. Management fee subtotal = equipment_cost + labor_cost + transport_cost + insurance_cost management_cost = subtotal * management_rate ``` ### Technical Analysis The quotation engine directly uses call ...[truncated 2872 chars]
Remediation
View remediation
Vulnerability Patterns
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • 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 (4)

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
95% confidence
Finding

The manifest description and the document content are entirely in Chinese, which effectively imposes a specific language on users. The file does not indicate that Chinese is optional, nor does it document a region-specific constraint that would justify the language restriction.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code file contains user-facing natural-language strings and docstrings in Chinese, including the module description and class description, with no indication that the skill is region-specific or that users can opt into the 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

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The summary output and CLI usage/help text are presented only in Chinese, which forces a specific language for end users. There is no mechanism for choosing locale, and no justification that this tool is restricted to a Chinese-language environment.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.