Back to skill

Security audit

content-adapter

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its content-adaptation purpose, but it includes under-disclosed automatic user-linked analytics and an installer that silently replaces the reviewed skill text.

Review this skill before installing if you do not want usage analytics tied to a user identifier or publishing-platform metadata. If installed manually, be aware the installer may overwrite an existing content-adapter skill file and install a shortened version with different publisher metadata.

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 (2)

other

Warning
Location
skill.md:523
Finding

Automatic User-Linked Telemetry Without Documented Consent or Destination

Content
View full analysis

Vulnerability Details

File Location: skill.md, lines 523-571
Vulnerability Type: Undisclosed telemetry and collection of user-linked usage data
Risk Level: Medium

Vulnerable Code

javascript
// Skill startup
trackEvent("skill_start", {
  skill_id: "content-adapter",
  user_id: userId,
  source: "workbuddy",
  input_type: "text"
});

// Skill completion
trackEvent("skill_complete", {
  skill_id: "content-adapter",
  user_id: userId,
  output_format: "html",
  output_size: 45000,
  total_duration_ms: 3200,
  word_count: 1200,
  platform: "xiaohongshu"
});

The surrounding instructions state that events are automatically reported at Skill startup, after generation steps, upon completion, on errors, and when users share generated content. They also state that analytics failures are silent and do not interrupt normal execution.

Technical Analysis

The Skill's legitimate purpose is local transformation of user-provided content into platform-specific writing styles. That task does not require a persistent user identifier or remote reporting of user behavior.

The telemetry specification collects or proposes collecting:

  • A user identifier
  • Invocation source and input type
  • Step names and execution timings
  • Output format, size, and word count
  • Target publishing platform
  • Sharing platform and content type
  • Error information

No analytics endpoint, data controller, consent mechanism, retention period, identifier-pseudonymization policy, or opt-out procedure is provided. The referenced analytics-sdk implementation is also absent from the audited package, preventing verification of its transmission destination and safeguards.

The package does not contain executable telemetry code, so successful data exfiltration cannot be confirmed from the audited files alone. The confirmed issue is that the Skill specification directs automatic, user-linked reporting beyond ...[truncated 1357 chars]

Remediation
View remediation

Remediation Suggestions

  1. Remove telemetry because it is not necessary for the Skill's content-transformation function.
  2. If analytics is retained, require explicit opt-in consent before collecting or transmitting any event.
  3. Do not collect a direct user_id; use a short-lived, randomized, non-linkable identifier where metrics genuinely require one.
  4. Publish the exact destination endpoint, data controller, event schema, retention period, legal basis, and deletion procedure.
  5. Provide a clearly documented opt-out that disables all analytics calls.
  6. Display reporting failures and configuration status rather than intentionally suppressing all telemetry errors.
  7. Include the referenced SDK source or a pinned, verifiable dependency so its network behavior can be audited.
  8. Restrict events to aggregate operational metrics and exclude publishing targets, sharing activity, input characteristics, and error content unless strictly required.

T09 · Insecure Skill Coding Practices

Note
Location
skill.md:1
Finding

Conflicting Package Identity and Silent Replacement of the Audited Skill Specification

Content
View full analysis

Vulnerability Details

File Locations: skill.md, lines 1-13; install.sh, lines 24-64
Vulnerability Type: Inconsistent provenance metadata and installation of noncanonical content
Risk Level: Low

Vulnerable Code

Packaged Skill metadata:

yaml
---
name: content-adapter
display_name: 多平台内容适配器
description: 一次编写,多平台发布。自动将原始内容适配成小红书、公众号、知乎、微博、抖音等平台风格,智能调整字数、表情、排版和语气,让内容在各平台都能获得最佳效果。
version: 1.0.0
author: 咕嘟科技
homepage: https://hermesai.ltd
tags:
  - content-creation
  - multi-platform

Metadata generated by the installer:

bash
cat > "$SKILL_DIR/SKILL.md" << 'SKILL_EOF'
---
name: content-adapter
display_name: 多平台内容适配器
description: 一次编写,多平台发布。自动将原始内容适配成小红书、公众号、知乎、微博、抖音等平台风格。
version: 1.0.0
author: 叶建国
homepage: https://github.com/openclaw/content-adapter
tags:
  - 内容创作
  - 多平台分发
  - 小红书
  - 公众号
license: MIT
compatibility:
  - openclaw
  - skillhub
---

Technical Analysis

The packaged skill.md identifies one organizational author and homepage, while the installer generates a separate SKILL.md identifying a different individual and repository. The installer does not copy the reviewed document; it writes a shortened replacement through a shell heredoc.

Consequently, the content inspected before installation is not the same content installed into the OpenClaw workspace. The installed document omits substantial portions of the packaged specification, including the telemetry section and promotional material. This discrepancy weakens provenance verification and makes security review results dependent on which version the host loads.

No command injection or arbitrary external payload retrieval was found in the installer. Variables used for the installation path are quoted, and the script only creates the expected Skill directory and writes a local file. The finding concerns integrity, provenance, and review consistency rather than demonstrated ...[truncated 1118 chars]

Remediation
View remediation

Remediation Suggestions

  1. Maintain one canonical SKILL.md and have the installer copy it verbatim instead of generating a second version.
  2. Make the author, homepage, version, license, and tag metadata consistent across all package files.
  3. Identify the publisher through a verifiable repository, signed release, or registry identity.
  4. Add integrity verification, such as a published checksum or signed manifest, for the installed Skill document.
  5. Make installation fail if the source document is missing or its integrity check does not match.
  6. If installation-time transformation is required, document every transformation and ensure security-sensitive sections cannot be silently added or removed.
  7. Add automated tests that compare packaged and installed metadata and reject unexplained differences.
Vulnerability Patterns
  • 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 Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The installer unconditionally redirects content into $SKILL_DIR/SKILL.md, which will overwrite any existing file at that path without prompting, backup, or integrity check. In this skill context the content is static and not obviously malicious, but it can still destroy local modifications or replace trusted content unexpectedly, making it a real safety issue rather than a code-execution vulnerability.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
85% confidence
Finding

The manifest display name, description, trigger examples, platform rules, clarification prompts, and output examples are all written as Chinese-only guidance for interaction and generated content styles. There is no indication that users may choose another language or that the Chinese-only scope is a documented, justified regional limitation, which fits the language/locale policy concern.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is presented as a content adaptation tool, but the embedded documentation adds analytics and tracking behavior that is outside the core stated purpose. This creates a scope mismatch: operators may integrate telemetry collection without realizing the skill handles user identifiers and content-derived metadata, increasing privacy and compliance risk.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The telemetry captures activity data such as user identifiers, platform, output size, timing, and content metadata even though the skill's function is only to rewrite text for different platforms. Collecting behavioral data not necessary for content adaptation violates data minimization principles and can expose sensitive usage patterns if logs are mishandled or centralized.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill documentation explicitly shows analytics events transmitting user_id and content metadata, but the public-facing description does not warn users that their activity may be tracked. This lack of transparency can lead to covert data collection, privacy violations, and regulatory exposure, especially when generated content may contain sensitive business or personal information.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest names the skill entirely in Chinese ("多平台内容适配器"), which suggests a language-specific presentation without any indication of user choice, opt-in, or region-specific justification in this file. Under the policy, language constraints should either be optional for the user or clearly documented as justified.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The installer and embedded SKILL.md use Chinese-language descriptions and trigger guidance, and there is no indication that users can choose another language. This can violate language/locale policy when a skill forces a specific language without documenting choice or regional justification.

Content

No source excerpt is available for this finding.