Back to skill

Security audit

SmartRoute - Google Routes Calculator

Security checks for vulnerabilities and agentic risk

Overview

This route-planning skill is purpose-aligned and disclosed, with minor correctness and disclosure issues around locale and non-driving links.

Install only if you are comfortable sending origin and destination addresses to Google Routes API using your own API key. Treat results carefully for BICYCLE or WALK modes because the returned Maps link is always a driving link, and responses are requested with a fixed es-419 locale.

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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • 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 (6)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The documented behavior does not fully match the implemented behavior: undisclosed language localization and generation of a driving link even for non-driving modes can mislead users and downstream agents about what data is being sent and what action a produced link will take. This is dangerous because security and privacy decisions often depend on accurate disclosure of external communications and output semantics; hidden behavior can cause unintended disclosure or unsafe automation decisions.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill declares access to an environment variable in metadata but does not define an explicit tool/permission scope, which weakens policy enforcement and reviewability. In systems that rely on declared scopes to constrain execution, this can allow the skill to run with broader capabilities than users or reviewers expect, especially around secret-bearing environment access.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The request hard-codes languageCode: "es-419", which forces responses into a specific locale for all users. This is a natural-language policy issue because the file provides no opt-in, fallback, or documented reason for restricting output language.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest says the skill calculates routes using Google Routes API and returns a direct Google Maps navigation link, implying the link should correspond to the requested route mode. However, the output URL hard-codes travelmode=driving even when --mode is set to a non-driving value, so the returned link can contradict the computed route.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

The description says to use the skill when the user asks for "drive time," which is a short, generic phrase that could match ordinary conversation without enough routing-specific context. The file does not provide exclusion conditions or tighter constraints to clarify when this trigger should or should not invoke the skill.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
71% confidence
Finding

The nearby comments emphasize direct use of ComputeRoutes with address inputs, framing the implementation as sufficient for the intended routing behavior. But the code requests both routes.duration and routes.staticDuration, then reports route.duration as traffic_duration_seconds without verifying that it is actually the traffic-adjusted value for the user's mode; this can misrepresent what the output means relative to the documented intent.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.