Back to skill

Security audit

Trail Nav via Telegram (low-token)

Security checks for vulnerabilities and agentic risk

Overview

The skill is a plausible hiking navigation helper, but its installer can download mutable code, run setup scripts, and permanently enable it in OpenClaw, so it needs careful review before installation.

Install only if you trust the publisher and the outsideclaw upstream repository. Avoid the one-click installer in sensitive environments unless you first pin and review the exact commit, review npm dependencies and setup scripts, and inspect the OpenClaw config diff before restart. Keep weather mode off unless you are comfortable sending precise hiking coordinates to Open-Meteo, and treat route, alert, and title inputs as untrusted when generating maps.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Tool Hijacking and SpoofingModifies or replaces tools so legitimate-looking calls execute attacker logic
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (6)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/outsideclaw_setup.sh:14
Finding

Unpinned Remote Repository and Dependency Code Execution

Content
View full analysis
/dev/null 2>&1; then echo "[outsideclaw] Installing npm deps" npm install --silent else echo "[outsideclaw] ERROR: npm not found. Install Node.js first." exit 2 fi echo "[outsideclaw] Running setup (db/routes dirs)" npm run -s setup ``` The one-click wrapper invokes the installer directly: ```bash # step1: install outsideclaw bash "$SCRIPT_DIR/outsideclaw_setup.sh" ``` ### Technical Analysis The installer clones or updates the mutable default branch of a remote Git repository without pinning an audited commit, validating a signature, or checking a cryptographic digest. It subsequently runs `npm install`, which may execute package lifecycle scripts, and then executes the repository-controlled `setup` npm script. The `OUTSIDECLAW_REPO_URL` environment variable also permits the remote source to be replaced without modifying this Skill. Consequently, the effective executable payload is not limited to the code reviewed in this package and may change after publication. ### Attack Path 1. An attacker compromises the upstream repository, one of its npm dependencies, or the account publishing a dependency. 2. ...[truncated 840 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/render_route_map_annotated.js:20
Finding

HTML and Script Injection in Route Map Renderers

Content
View full analysis
${title}
`; fs.writeFileSync(htmlPath, html, "utf8"); const browser = await chromium.launch({ headless: true, channel: "chrome" }); const page = await browser.newPage({ viewport: { width: 1200, height: 800 } }); await page.goto("file://" + htmlPath, { waitUntil: "domcontentloaded" }); ``` Annotated renderer: ```js const nodes = (alerts.nodes || []).map((n) => { const kind = n.kind || "node"; return { letter: n.letter || "?", name: n.name || n.id, lat: n.lat, lon: n.lon, kind, color: colorByKind(kind), }; }); const legendLines = nodes .map((n) => `
${n.letter} ${n.name}
`) .join("\n"); const html = `
${title}
${legendLines}
Remediation
View remediation
` sequences. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/scrape_2bulu_tracks.js:9
Finding

Unrestricted Browser Navigation in Public Track Scraper

Content
View full analysis
Remediation
View remediation

other

Warning
Location
scripts/weather_alert.js:114
Finding

Precise Hiking Location Transmitted to External Weather Service

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
scripts/render_route_map.js:45
Finding

Runtime Execution of CDN JavaScript Without Integrity Verification

Content
View full analysis
``` The generated page is executed by Playwright: ```js const browser = await chromium.launch({ headless: true, channel: "chrome" }); const page = await browser.newPage({ viewport: { width: 1400, height: 900 } }); await page.goto("file://" + htmlPath, { waitUntil: "domcontentloaded" }); ``` ### Technical Analysis Both renderers fetch and execute Leaflet JavaScript from a CDN at runtime. Although the URL specifies a version, the response is not protected with Subresource Integrity, an independently verified checksum, or a locally audited copy. The generated page also lacks a restrictive Content Security Policy. The effective code executed during rendering therefore depends on the security of the CDN, its account and publishing controls, DNS, certificates, and delivery infrastructure after this Skill has been reviewed. ### Attack Path 1. The CDN, package publishing account, or delivery infrastructure is compromised. 2. A malicious JavaScript response is returned for the Leaflet URL. 3. A user renders a route map. 4. Playwright downloads and executes the malicious response. 5. The payload accesses route information in the page and can make outbound or browser-accessible network requests. ### Impact Assessment A successful supply-chain attack provides JavaScript execution in the headless Chromium page. It can read route coor ...[truncated 192 chars]
Remediation
View remediation

T07 · Tool Hijacking and Spoofing

Error
Location
scripts/patch_openclaw_config.js:39
Finding

OpenClaw Configuration Automatically Enables Mutable Downloaded Skill Code

Content
View full analysis
/dev/null 2>&1; then open ...[truncated 1644 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (41)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill is framed as offline-capable route assistance, but bundled functionality includes a live call to Open-Meteo for weather alerts, which introduces undeclared external dependency and data flow. In context, that makes the mismatch more dangerous because operators may rely on the offline claim when deciding whether the skill is safe to run in privacy-sensitive or low-connectivity scenarios.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill is framed as offline-capable route assistance, but bundled functionality includes a live call to Open-Meteo for weather alerts, which introduces undeclared external dependency and data flow. In context, that makes the mismatch more dangerous because operators may rely on the offline claim when deciding whether the skill is safe to run in privacy-sensitive or low-connectivity scenarios.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill is framed as offline-capable route assistance, but bundled functionality includes a live call to Open-Meteo for weather alerts, which introduces undeclared external dependency and data flow. In context, that makes the mismatch more dangerous because operators may rely on the offline claim when deciding whether the skill is safe to run in privacy-sensitive or low-connectivity scenarios.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill is framed as offline-capable route assistance, but bundled functionality includes a live call to Open-Meteo for weather alerts, which introduces undeclared external dependency and data flow. In context, that makes the mismatch more dangerous because operators may rely on the offline claim when deciding whether the skill is safe to run in privacy-sensitive or low-connectivity scenarios.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill is framed as offline-capable route assistance, but bundled functionality includes a live call to Open-Meteo for weather alerts, which introduces undeclared external dependency and data flow. In context, that makes the mismatch more dangerous because operators may rely on the offline claim when deciding whether the skill is safe to run in privacy-sensitive or low-connectivity scenarios.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill is framed as offline-capable route assistance, but bundled functionality includes a live call to Open-Meteo for weather alerts, which introduces undeclared external dependency and data flow. In context, that makes the mismatch more dangerous because operators may rely on the offline claim when deciding whether the skill is safe to run in privacy-sensitive or low-connectivity scenarios.

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 47)May include surrounding context.

md
- `scripts/guide_route.js` deterministic off-route guidance from GeoJSON + current location (outputs the 2-4 line guide protocol)

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

After cloning/pulling remote content, the script runs npm install and npm run setup, which can execute package lifecycle hooks and project scripts from externally sourced code. This is dangerous because arbitrary commands may run on the host with the user's privileges, turning any upstream compromise or malicious package change into immediate code execution.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
95% confidence
Finding

The skill advertises and bundles capabilities involving network access, environment interaction, scraping, installation, and configuration patching, but it does not declare any explicit tool scope or allowed-tools boundaries. In an agent ecosystem, missing capability restrictions increases the chance that the skill will be run with broader privileges than necessary, enabling unintended network use or local system modification.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill bundles OpenClaw installation and configuration patching even though the manifest primarily presents route guidance and route discovery functionality. Combining end-user navigation logic with local platform modification increases the risk of over-privileged deployment and accidental system changes during what appears to be a content-level skill installation.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Including optional gateway restart capability in a one-click setup materially increases operational risk because service restarts can disrupt availability or activate newly patched configurations immediately. That is not justified by the stated hiking-navigation purpose and may surprise operators who expected only data-processing or guidance features.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Treating any location-only Telegram message as an implicit /g command creates an unsafe ambiguous trigger that can activate guidance without clear user intent. In this hiking context, accidental invocation can produce misleading navigation output at the wrong time or for the wrong bound route/chat state, which is more serious because users may act on concise route instructions in the field.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The file specifies a "Chinese template, deterministic" and provides only Chinese output strings, which imposes a language choice by default. There is no indication that users can choose another language or that the Chinese-only requirement is justified as a region-specific constraint.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The document instructs users to install the full outsideclaw repository into a persistent home-directory path and integrate it into OpenClaw, which materially exceeds the narrowly described hiking/Telegram route-guidance scope of this skill. Even though this file is documentation rather than executable code, it expands deployment trust boundaries and can cause operators to load unrelated capabilities or code paths they did not intend to authorize.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The guide describes patching OpenClaw configuration and optionally restarting the gateway, giving the skill an installation path that changes platform runtime behavior beyond its stated navigation purpose. In context, this is more dangerous because it facilitates automatic activation of additional code in the agent environment, increasing the chance of unintended privilege, persistence, or loading of unreviewed functionality.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The schema requires the alert message to be "Chinese reminder text," which imposes a specific language in the skill's natural-language behavior. The file does not offer user opt-in, alternatives, or a documented region-specific justification for this language constraint.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The header explicitly claims the script works offline, but when --wx on is used it performs a live request to Open-Meteo including the user's latitude, longitude, timezone, and behavior-derived mode. This is dangerous because operators may deploy or trust it in privacy-sensitive or no-network environments under a false assumption, causing unintended data disclosure and reliability failures.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The file extends a local route-guidance utility with external weather retrieval and caching logic, expanding scope from deterministic offline navigation to online enrichment. That scope creep increases attack surface, introduces data egress, and makes it easier for downstream agents to invoke networked behavior unexpectedly in a component presumed to be local-only.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

The script makes an external HTTPS request to api.open-meteo.com, transmitting route-adjacent user location and context. Even though the destination appears legitimate, this is still a real external transmission risk because it leaks sensitive hiking location data to a third party and breaks offline/security expectations.

Content

Scanner excerpt · scripts/guide_route.js (reported line 358)May include surrounding context.

js
"visibility",
  ];

  const url = new URL("https://api.open-meteo.com/v1/forecast");
  url.searchParams.set("latitude", String(lat));
  url.searchParams.set("longitude", String(lon));
  url.searchParams.set("timezone", tz);

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The online forecast capability sends precise location inputs to a third-party API without any visible consent, minimization, or policy guardrails in this script. In the context of a hiking/Telegram workflow, location can be sensitive, so adding remote weather lookup beyond core route guidance creates meaningful privacy and operational risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script emits natural-language route instructions in Chinese string literals, which forces a specific language for all users. The file does not provide any opt-in, localization setting, or justification that this skill is intended only for Chinese-language use.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script advertises offline operation, but the optional weather feature performs live API calls. This mismatch is security-relevant because operators may deploy it in privacy-sensitive or disconnected workflows assuming no external transmission, causing unanticipated exposure of location data and network dependency.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The inline note 'Works offline' is contradicted by the implementation's remote weather fetch path. In a hiking/Telegram routing skill, users may reasonably rely on strict offline/privacy guarantees, so hidden online behavior can create confidentiality and safety issues if the tool silently fails or leaks location data.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

This code performs an external transmission to a third-party weather API and includes location and timezone parameters derived from the user context. In the skill context, GPS coordinates from hikers are sensitive, and sending them off-device increases privacy risk and breaks assumptions for offline-capable operation.

Content

Scanner excerpt · scripts/guide_route.mjs (reported line 358)May include surrounding context.

js
"visibility",
  ];

  const url = new URL("https://api.open-meteo.com/v1/forecast");
  url.searchParams.set("latitude", String(lat));
  url.searchParams.set("longitude", String(lon));
  url.searchParams.set("timezone", tz);

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The weather request sends precise latitude and longitude to api.open-meteo.com without any user-facing notice or consent mechanism. For a hiking guidance tool, this can reveal a user's real-time or near-real-time location, which is sensitive operational data, especially in remote travel or personal safety contexts.

Content

No source excerpt is available for this finding.