Back to skill

Security audit

Currency Converter Pro

Security checks for vulnerabilities and agentic risk

Overview

This is a straightforward currency-conversion skill that discloses its exchange-rate provider and does not show persistence, credential access, or hidden side effects.

Before installing, understand that currency codes, dates, and requested amounts may be used to query open.er-api.com, and the returned rates are informational rather than financial advice. The unused subprocess import should ideally be removed, but it is not used by the artifact.

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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (6)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill advertises shell and network-based execution paths via python3 scripts/currency.py ... and an external exchange-rate provider, but the manifest declares no explicit tool scope such as allowed tools or permissions. This creates an authorization ambiguity: a host may grant broader-than-intended capabilities or users may invoke a skill without clear disclosure that it reaches the network and executes local commands.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The trigger set includes broad phrases such as exchange rate, 今日汇率, and 历史汇率, which are common conversational terms and can cause the skill to activate in contexts where the user did not explicitly request this specific skill. Over-broad activation increases the chance of unintended network calls and shell-backed execution, especially because the skill is designed to fetch external data automatically.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The manifest description is partly in Chinese and partly in English, but the file does not state whether output language follows user preference or provide an opt-in choice. This can create a locale-policy issue if the skill implicitly defaults to a language combination the user did not request.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This skill is described as a real-time currency converter using a free exchange-rate data source. Spawning local processes is not a direct or obvious requirement for currency conversion, historical rate lookup, or multi-currency comparison, so exposing subprocess capability is context-inappropriate even though it is not used elsewhere in this file.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This code makes outbound HTTP requests to open.er-api.com using values derived from user input, which transmits query data off-system. Although the module docstring names the provider, there is no runtime warning, confirmation, or user-facing notice when these requests occur.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The historical-rate function transmits user-provided parameters to a remote API, which is a data-sharing operation covered by the warning requirement. The function lacks any visible confirmation prompt or user-facing message indicating that the lookup depends on an external network call.

Content

No source excerpt is available for this finding.