Back to skill

Security audit

TripGo API

Security checks for vulnerabilities and agentic risk

Overview

The skill is a mostly coherent TripGo API wrapper, but it lets authenticated requests use an unvalidated custom API base URL, which could send the user's TripGo API key to an unintended host.

Install only if you trust the scripts and can control the environment in which they run. Keep TRIPGO_BASE_URL unset unless you intentionally use a trusted TripGo-compatible endpoint, avoid passing API keys on the command line, and treat trip coordinates, trip IDs, webhook callback URLs, and analytics calls as potentially sensitive travel data.

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
scripts/configuration-available-regions.sh:12
Finding

Unvalidated Custom API Base URL Can Disclose the TripGo API Key

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (86)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

The declared description presents a broad, multi-capability TripGo integration covering routing, public transport, trip and location services, and geocoding. The supplied code chunk does not implement that broad interface; it only demonstrates one specific API call to a deprecated Travelling Tourist Problem endpoint. While this is TripGo-related, the actual behavior is much narrower and materially different from the stated comprehensive journey-planning and location-services purpose. Therefore the description does not accurately represent this code chunk.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description claims broad TripGo support for routing, public transport, trips, and location services used for multimodal planning and geocoding. The supplied code instead performs one specific destructive API action: deleting a Travelling Tourist Problem by ID through a deprecated endpoint. This is materially different from the stated primary purpose and introduces an undeclared deletion capability. While it does interact with the TripGo API, the behavior is much narrower and of a different kind than the description suggests.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 45)May include surrounding context.

md
- `SKILL.md`: This file.

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · scripts/geocode-search-and-autocompletion.sh (reported line 134)May include surrounding context.

sh
echo "Making request to: ${URL}"
echo ""

curl -s -X GET "$URL" \
    -H "Accept: application/json" \
    -H "X-TripGo-Key: ${TRIPGO_API_KEY}" | python3 -m json.tool

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/trips-removes-a-hooks-from-a-trip.sh (reported line 3)May include surrounding context.

sh
#!/bin/bash
# Remove a Hook from a Trip
# DELETE /trip/hook/{id}

set -euo pipefail

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · scripts/ttp-delete-travelling-tourist-problem-deprecated.sh (reported line 4)May include surrounding context.

sh
#!/bin/bash
#
# Delete Travelling Tourist Problem (Deprecated)
# DELETE /ttp/{id}
#
# Deletes the problem of the provided ID.
# This is optional as problems expire automatically.

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.

External Transmission

Medium
Category
Data Exfiltration
Confidence
83% confidence
Finding

The skill is designed to transmit data and the TRIPGO_API_KEY to an external service, and it also allows the base URL to be overridden via TRIPGO_BASE_URL. In context, outbound API calls are expected, but permitting a configurable destination without strong validation can redirect authenticated requests to an attacker-controlled host, causing credential leakage or sensitive trip/location data exfiltration.

Content

Scanner excerpt · SKILL.md (reported line 23)May include surrounding context.

md
To use this skill, you must set the following environment variables:

- `TRIPGO_API_KEY`: Your TripGo API key (header: `X-TripGo-Key`). Get it here: https://skedgo.com/tripgo-api/
- `TRIPGO_BASE_URL`: (Optional) Base URL for the API. Defaults to `https://api.tripgo.com/v1`.
- `TRIPGO_WEBHOOK_ALLOWLIST`: (Optional, recommended) Comma-separated allowlist of webhook domains (e.g. `example.com,webhooks.example.org`).
- `TRIPGO_ALLOW_UNSAFE_WEBHOOK`: (Optional, default `false`) Set to `true` to bypass webhook allowlist checks for trusted/manual debugging only.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · references/configuration.md (reported line 38)May include surrounding context.

| X-TripGo-Key | API key (required) | | Content-Type | application/json |

Curl Example

bash
curl -X POST "https://api.tripgo.com/v1/regions.json" \
  -H "Content-Type: application/json" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · references/configuration.md (reported line 100)May include surrounding context.

| X-TripGo-Key | API key (required) | | Content-Type | application/json |

Curl Example

bash
curl -X POST "https://api.tripgo.com/v1/regionInfo.json" \
  -H "Content-Type: application/json" \

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The webhook registration endpoint explicitly sends trip identifiers and trip URLs to an arbitrary third-party callback URL, but the documentation does not warn users that trip-related data will be transmitted off-platform. In an agent skill context, this can lead to unintended disclosure of travel data or internal callback destinations if integrators enable webhooks without understanding the privacy and trust implications.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The planned-trip endpoint is described as being for analytics, but the documentation lacks a clear user-facing privacy warning that invoking it records user trip behavior. In a journey-planning skill, trip selection can reveal sensitive location and behavior patterns, so silent analytics collection increases privacy risk and may cause deployments to violate user-consent or disclosure requirements.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/configuration-available-regions.sh (reported line 94)May include surrounding context.

sh
# Make request
echo "Fetching available regions..."
curl -s -X POST "${TRIPGO_BASE_URL}/regions.json" \
    -H "Content-Type: application/json" \
    -H "X-TripGo-Key: ${TRIPGO_API_KEY}" \
    -d "$REQUEST_BODY" | jq '.'

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/configuration-tsps-per-region.sh (reported line 83)May include surrounding context.

sh
# Make request
echo "Fetching TSPs for region: ${REGION}..."
curl -s -X POST "${TRIPGO_BASE_URL}/regionInfo.json" \
    -H "Content-Type: application/json" \
    -H "X-TripGo-Key: ${TRIPGO_API_KEY}" \
    -d "$REQUEST_BODY" | jq '.'

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The script reads an API key from environment variables and later sends user-supplied location inputs to a remote TripGo endpoint. While it prints that it is fetching details, it does not disclose that location data and authentication credentials are being used in an outbound network request.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/locations-pois-for-map-region-using-cell-ids.sh (reported line 68)May include surrounding context.

sh
echo ""
echo "Making request..."

curl -s -X POST "https://api.tripgo.com/v1/locations.json" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-TripGo-Key: ${TRIPGO_KEY}" \

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/public-transport-departure-timetable-for-a-stop.sh (reported line 102)May include surrounding context.

sh
echo "Making request to $ENDPOINT"
echo "Request body: $BODY"

curl -s -X POST "$ENDPOINT" \
  -H "Content-Type: application/json" \
  -H "X-TripGo-Key: $API_KEY" \
  -d "$BODY" | jq '.'

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/public-transport-details-of-a-route.sh (reported line 63)May include surrounding context.

sh
echo "Making request to $ENDPOINT"
echo "Request body: $BODY"

curl -s -X POST "$ENDPOINT" \
  -H "Content-Type: application/json" \
  -H "X-TripGo-Key: $API_KEY" \
  -d "$BODY" | jq '.'

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/public-transport-operators-for-a-region-or-group-of-regions.sh (reported line 99)May include surrounding context.

sh
echo "Making request to $ENDPOINT"
echo "Request body: $BODY"

curl -s -X POST "$ENDPOINT" \
  -H "Content-Type: application/json" \
  -H "X-TripGo-Key: $API_KEY" \
  -d "$BODY" | jq '.'

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/public-transport-real-time-information-for-a-service.sh (reported line 61)May include surrounding context.

sh
echo "Making request to $ENDPOINT"
echo "Request body: $BODY"

curl -s -X POST "$ENDPOINT" \
  -H "Content-Type: application/json" \
  -H "X-TripGo-Key: $API_KEY" \
  -d "$BODY" | jq '.'

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/public-transport-routes-for-a-region-or-operator.sh (reported line 117)May include surrounding context.

sh
echo "Making request to $ENDPOINT"
echo "Request body: $BODY"

curl -s -X POST "$ENDPOINT" \
  -H "Content-Type: application/json" \
  -H "X-TripGo-Key: $API_KEY" \
  -d "$BODY" | jq '.'

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/public-transport-services-for-a-route.sh (reported line 91)May include surrounding context.

sh
echo "Making request to $ENDPOINT"
echo "Request body: $BODY"

curl -s -X POST "$ENDPOINT" \
  -H "Content-Type: application/json" \
  -H "X-TripGo-Key: $API_KEY" \
  -d "$BODY" | jq '.'

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/routing-a-to-b-to-c-trip.sh (reported line 103)May include surrounding context.

sh
echo "$JSON_payload" | jq '.'
echo ""

curl -s -X POST "${BASE_URL}/waypoint.json" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "X-TripGo-Key: ${TRIPGO_API_KEY}" \

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The script sends origin, destination, modes, locale, and optional trip timing data to the TripGo API via curl. Although it logs the request URL with the API key hidden, it does not clearly warn the user that potentially sensitive travel/location data will be transmitted to a third-party service.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% 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/routing-all-day-routing-between-events-deprecated.sh (reported line 100)May include surrounding context.

sh
echo "$JSON_payload" | jq '.'
echo ""

curl -s -X POST "${BASE_URL}/skedgoify.json" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "X-TripGo-Key: ${TRIPGO_API_KEY}" \

Static analysis

No suspicious patterns detected.