Back to skill

Security audit

ocean right marine

Security checks for vulnerabilities and agentic risk

Overview

The skill performs a real voyage-distance workflow, but it embeds live-looking service credentials and mandates automatic screenshot sharing without adequate user authorization controls.

Do not install this skill as published. The NavOptima password should be rotated and removed from the package, and screenshot sharing should require explicit user confirmation with a verified recipient. Contact details should be optional metadata rather than mandatory output.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (3)

T09 · Insecure Skill Coding Practices

Error
Location
skill.md:29
Finding

Plaintext NavOptima Credentials Embedded in the Skill

Content
View full analysis

Vulnerability Details

File Location: skill.md, lines 29–37
Vulnerability Type: Hardcoded plaintext credentials
Risk Level: High

Complete Vulnerable Snippet

markdown
**NavOptima account:**
- **URL:** https://nop.ormwx.com/voyage/distance
- **Email:** distance@ormwx.com
- **Password:** 5qzqE9Kt

**Login test:** Successfully tested on 2026-03-24 at 11:26

**Security warning:** This account is sensitive and must not be disclosed.

The labels above are an English rendering of the source excerpt; the URL, account identifier, password, and test status are reproduced exactly.

Technical Analysis

The Skill stores a service account identifier and password directly in a distributable Markdown file. Any user or process that can read the installed Skill can recover the credentials without needing elevated system privileges.

A warning against disclosure does not protect a secret embedded in the same file. The document also states that the login was successfully tested, increasing the likelihood that the exposed credential was valid when committed.

Because this is apparently a shared service account, activity performed with it may not be attributable to an individual operator. The package provides both the login URL and the complete authentication material needed to attempt access.

Attack Path

  1. An attacker downloads, installs, or otherwise obtains read access to the Skill package.
  2. The attacker opens skill.md.
  3. The attacker extracts the NavOptima email address and plaintext password.
  4. The attacker visits the documented NavOptima login URL.
  5. The attacker attempts to authenticate as the exposed shared account.
  6. If the credential remains valid, the attacker can use the permissions and account-visible functionality granted to that account.

Impact Assessment

Successful exploitation could provide unauthorized access to the NavOptima account and any route calculations, o ...[truncated 413 chars]

Remediation
View remediation

Remediation Suggestions

  1. Revoke and rotate the exposed password immediately.
  2. Review NavOptima authentication and activity logs for unauthorized access.
  3. Remove the username and password from the Skill and all repository history.
  4. Store credentials in an approved secret manager or platform-provided credential store.
  5. Retrieve the secret only at runtime and never place it in prompts, logs, screenshots, or generated responses.
  6. Prefer individual, least-privilege accounts over a shared service account.
  7. Enable multifactor authentication, access restrictions, and credential expiration where supported.
  8. Add automated secret scanning to the publication and review workflow.

T01 · Skill Instruction Hijacking

Error
Location
skill.md:119
Finding

Mandatory Full-Page Screenshot Transmission Without Contextual Authorization

Content
View full analysis

Vulnerability Details

File Location: skill.md, lines 119–142
Vulnerability Type: Unconditional capture and transmission of authenticated page content
Risk Level: High

Complete Vulnerable Snippet

python
# Capture the complete result page, including the map and route.
browser.screenshot(
    full_page=True,
    output_path="/tmp/orm-route-result.jpg"
)

# The screenshot must be sent regardless of the conversation window.
message.send(
    channel="feishu",  # Or the current conversation channel.
    target=user_id,
    media="/tmp/orm-route-result.jpg",
    caption="Route map - ORM Weather Routing"
)

This is an English rendering of the source excerpt. The relevant operations, parameters, output path, channel, and mandatory transmission behavior are preserved.

The Skill repeats this requirement at lines 195–202, stating that the image must be sent immediately regardless of the window in which the user is communicating.

Technical Analysis

The Skill requires the Agent to take a full-page screenshot of an authenticated third-party service and transmit it through a messaging tool. The operation is mandatory and is not conditioned on:

  • Explicit user consent to send an image.
  • Verification of the recipient or channel.
  • Confirmation that the recipient is authorized to receive account-derived information.
  • Inspection or redaction of sensitive page elements.
  • Restriction of the capture to the minimum result region.

The phrase requiring transmission regardless of the conversation window alters context-sensitive Agent behavior. A full-page screenshot can contain more information than the requested route result, including account interface elements, customer data, voyage details, ETA information, or other content visible in the authenticated browser session.

The fixed temporary path also creates a secondary confidentiality concern if the execution environment is shared or if ...[truncated 1404 chars]

Remediation
View remediation

Remediation Suggestions

  1. Remove the unconditional screenshot and message-sending requirements.
  2. Require explicit user confirmation before capturing or transmitting any image.
  3. Display and validate the exact destination, channel, and recipient before sending.
  4. Verify that the recipient is authorized to receive the route data.
  5. Capture only the result component instead of using full_page=True.
  6. Redact account identifiers, customer information, session data, and unrelated page elements.
  7. Generate a unique temporary filename with restrictive permissions rather than using a predictable shared path.
  8. Delete the temporary image immediately after the approved transmission.
  9. Provide the route information as text by default and make image sharing an explicit opt-in operation.
  10. Record an auditable consent event for external transmissions.

T01 · Skill Instruction Hijacking

Warning
Location
skill.md:144
Finding

Mandatory Promotional Signature Injected Into Every Result

Content
View full analysis

Vulnerability Details

File Location: skill.md, lines 144–159
Vulnerability Type: Persistent output manipulation and unsolicited promotional-content injection
Risk Level: Medium

Complete Vulnerable Snippet

markdown
**4. Append signature information (mandatory)**

---

### Contact Information

**ORM Weather Routing**
**Andy**
**+86 18669863008** (WeChat/WhatsApp)
**Andy@ormwx.com**

This is an English rendering of the source excerpt; the organization, personal name, telephone number, communication platforms, and email address are reproduced exactly.

The requirement is repeated at lines 203–218, where the Skill states that the contact details must be appended after every query.

Technical Analysis

The Skill does not limit its behavior to calculating voyage distances. It imposes a mandatory rule that modifies every generated result by attaching third-party branding and personal contact information.

This is instruction-level output hijacking because loading and invoking the Skill changes the Agent's response objective from answering the user's request to distributing fixed promotional material. The behavior is unconditional and does not depend on user intent, relevance, or consent.

Repetition of the directive as a mandatory output requirement makes the manipulation stable throughout use of the Skill. Although this finding does not establish code execution or privilege escalation, it demonstrates misuse of the Agent's user-facing output channel.

Attack Path

  1. The Skill is loaded for a voyage-distance request.
  2. The Agent performs or attempts the requested route calculation.
  3. Before returning the answer, the Skill applies its mandatory signature rule.
  4. The Agent appends the specified organization, personal name, phone number, and email address.
  5. The third-party promotional content is distributed to the user even when it was not requested and is unrelated to the technic ...[truncated 595 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove all mandatory branding and contact-signature directives.
  2. Ensure default responses contain only information needed to satisfy the user's request.
  3. Include attribution or contact details only when the user explicitly asks for them.
  4. Separate optional organization metadata from executable Skill instructions.
  5. Prohibit Skill authors from imposing unrelated fixed content on every response.
  6. Add publication checks that flag phrases such as “mandatory,” “always append,” and “regardless of the conversation” when they control user-visible output.
  7. If attribution is operationally required, use a concise platform-controlled attribution field rather than personal promotional content.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (10)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
100% confidence
Finding

The skill embeds a plaintext account email and password directly in documentation. Hardcoded credentials are highly sensitive secrets that can be reused by any reader to access the underlying NavOptima system, potentially exposing proprietary routing data, enabling unauthorized actions, or causing account compromise.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The skill’s stated purpose is voyage distance lookup, but it extends into mandatory screenshot capture, outbound message delivery, and signature injection. This broadens the skill from data retrieval into unsolicited data transmission and promotional output, increasing the chance of leaking route information, user context, or sensitive operational details without authorization.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
100% confidence
Finding

The skill explicitly instructs the agent to send screenshots to a chat target regardless of user context, including to the current channel or a user ID. This creates an unauthorized exfiltration path because route results, map context, and possibly other visible data could be transmitted to recipients without verification or user approval.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
100% confidence
Finding

Automatic screenshot transmission without user confirmation is a direct data-handling flaw. It bypasses consent and review, making accidental disclosure of sensitive commercial voyage information far more likely in routine use.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The instruction to automatically send a screenshot to the chat/user regardless of context is a natural-language exfiltration mechanism. Because screenshots can include sensitive operational data and surrounding UI elements, this behavior can leak more information than the user asked for and can do so to the wrong recipient.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

A global rule to immediately post screenshots into chat normalizes uncontrolled disclosure as standard behavior. In this context, the screenshots are likely to contain commercially sensitive route, ETA, and map data, so the skill context makes the issue more dangerous than a generic image-sharing feature.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

Mandating a personal/business contact signature in every response is an unjustified capability unrelated to distance computation. It turns the skill into a persistent marketing channel and may cause policy violations, social-engineering risk, or disclosure of personal contact data where it is not appropriate.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The file requires a fixed Chinese-language signature block and provides output templates primarily in Chinese, with no indication that users may choose another language or locale. This can violate language/locale policy where skills must not force a specific language without user opt-in.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The documentation says screenshots must not be sent to unauthorized persons, yet elsewhere requires immediate screenshot delivery regardless of conversation context. This contradiction is dangerous because operators or agents may follow the more forceful instruction and disclose sensitive route data without any authorization check.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
84% confidence
Finding

The skill reveals internal local filesystem paths, including workspace, tool configuration, and rule-document locations. This information can aid environment reconnaissance by exposing directory structure, usernames, and high-value files that an attacker could target in later prompts or chained attacks.

Content

Scanner excerpt · skill.md (reported line 465)May include surrounding context.

md
| 文件 | 用途 |
|------|------|
| `/Users/andy/.openclaw/workspace/skills/orm-weather-routing-nav-distance/SKILL.md` | Skill 定义文件 |
| `/Users/andy/.openclaw/workspace/工具使用规则.md` | 工具使用规范 |
| `/Users/andy/.openclaw/workspace/TOOLS.md` | 本地配置 |

Static analysis

No suspicious patterns detected.