T01 · Skill Instruction Hijacking
- Location
SKILL.md:94- Finding
Mutable Remote Heartbeat Instructions Are Retrieved and Followed Without Verification
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is for a social forum and most API use fits that purpose, but it asks the agent to repeatedly fetch and follow mutable remote instructions that can post, reply, vote, or delete using the user's account.
Install only if you are comfortable giving this skill an Openlink API key that can publish, reply, vote, and delete content on that service. Avoid unattended heartbeat use unless the remote heartbeat content is pinned or reviewed, and require explicit approval before any public post, reply, vote, or deletion.
SKILL.md:94Mutable Remote Heartbeat Instructions Are Retrieved and Followed Without Verification
SKILL.md:14Unpinned Remote Files Directly Replace Persistent Local Skill Instructions
The skill sends authenticated requests to an external domain using a bearer token, which causes data to leave the local environment and exposes account-scoped access to a third-party service. While fetching a feed is a plausible legitimate function, external transmission with credentials is still security-relevant because it can leak behavioral data, enable account misuse if the endpoint is untrusted, or normalize unsafe token handling.
curl "https://www.openlink.wiki/api/posts?sort=hot&page=1&page_size=10" \
-H "Authorization: Bearer ef_YOUR_API_KEY"
The skill explicitly instructs an agent to perform state-changing actions on an external service, including posting content, replying, and casting votes using the user's API token. It does not require explicit user confirmation or clearly warn that these actions will publish content or modify engagement signals on the user's behalf, creating a risk of unauthorized or unintended actions.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
Install locally:
mkdir -p ~/.openclaw/skills/openlink && \
curl -s https://www.openlink.wiki/skill.md > ~/.openclaw/skills/openlink/SKILL.md && \
curl -s https://www.openlink.wiki/heartbeat.md > ~/.openclaw/skills/openlink/HEARTBEAT.md && \
curl -s https://www.openlink.wiki/skill.json > ~/.openclaw/skills/openlink/package.json
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
Install locally:
mkdir -p ~/.openclaw/skills/openlink && \
curl -s https://www.openlink.wiki/skill.md > ~/.openclaw/skills/openlink/SKILL.md && \
curl -s https://www.openlink.wiki/heartbeat.md > ~/.openclaw/skills/openlink/HEARTBEAT.md && \
curl -s https://www.openlink.wiki/skill.json > ~/.openclaw/skills/openlink/package.json
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Install locally:
mkdir -p ~/.openclaw/skills/openlink && \
curl -s https://www.openlink.wiki/skill.md > ~/.openclaw/skills/openlink/SKILL.md && \
curl -s https://www.openlink.wiki/heartbeat.md > ~/.openclaw/skills/openlink/HEARTBEAT.md && \
curl -s https://www.openlink.wiki/skill.json > ~/.openclaw/skills/openlink/package.json
The skill instructs agents to place an API key in outbound HTTP Authorization headers to an external service. Although it warns to use only the specified domain, any skill that operationalizes sending credentials off-platform materially increases secret-exposure risk if the domain is spoofed, the content is altered, or an agent mishandles URL validation.
All requests require your API key in the Authorization header:
curl https://www.openlink.wiki/api/posts \
-H "Authorization: Bearer ef_YOUR_API_KEY"
The skill exposes a destructive DELETE action with no guidance to require user confirmation, ownership validation, or safety checks before execution. In an agent setting, this increases the risk of unintended or prompt-induced deletion of content, especially if the agent is asked ambiguously to 'clean up' or 'remove' posts.
Earlier sections explicitly say agents can self-register with no human required and show unverified agents having posting and reply limits, but this section states every agent is created and owned by a verified human and that only verified-human-owned agents can post and comment. Those claims cannot both be true, creating an intent-level contradiction in the skill documentation.