Back to skill

Security audit

Tariff Search

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed tariff lookup client that sends product details to an external tariff API, with no evidence of hidden persistence, credential access, or destructive behavior.

Before installing, treat Accio/TurtleClassify as a third-party service: only submit product names and metadata you are comfortable sharing externally, avoid unnecessary identifiers or sensitive sourcing details, and choose CSV output paths deliberately to avoid overwriting local files.

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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill clearly instructs the agent to make outbound API requests to TurtleClassify, but the manifest declares no explicit tool scope such as network permissions or allowed-tools. This creates an authorization ambiguity where a host agent may permit broader network access than intended or fail to enforce least privilege, increasing the chance of unintended external communication.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The workflow directs users to send product records to an external API but does not clearly warn that product names and trade metadata will leave the local environment. In trade and sourcing contexts, product descriptions, origins, destinations, and IDs may be commercially sensitive, so silent transmission to a third party can cause confidentiality and compliance issues.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · scripts/script.py (reported line 115)May include surrounding context.

python
if opt in prod:
                payload[opt] = prod[opt]
        try:
            resp = requests.post(endpoint, json=payload, timeout=self.timeout)
            resp.raise_for_status()
            outer = resp.json()
            if not outer.get("success"):

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The code transmits user-supplied product, country, and potentially additional product metadata to a third-party service at accio.com, but the skill itself provides no explicit user-facing disclosure, consent flow, or data minimization guarantees. In an agent skill context, this is risky because users may reasonably assume classification is local or not realize commercial/sourcing data is being sent externally.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

The requests.post call sends collected product details to an external endpoint, which creates a real data exfiltration path outside the local agent environment. While this appears functionally necessary for the tariff lookup skill, it is still a security-relevant behavior because product descriptions, origin/destination data, and optional metadata may contain sensitive business information.

Content

Scanner excerpt · scripts/tariff_lookup.py (reported line 112)May include surrounding context.

python
if key in product and product[key]:
                payload[key] = product[key]
        try:
            r = requests.post(endpoint, json=payload, timeout=self.timeout)
            r.raise_for_status()
            res = r.json()
            if not res.get('success'):

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The usage example shows loading products.csv and writing enriched results to products_with_tariffs.csv, which affects user data on disk. The skill description does not include any warning or note that it will create or overwrite output files when following this example.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
78% confidence
Finding

The sample output includes tariffFormula in Chinese (一般关税...附加关税...) while the rest of the documentation is in English. This may indicate the skill returns or assumes a fixed language without offering user choice or explaining the locale constraint.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.