Back to skill

Security audit

Did You Know

Security checks for vulnerabilities and agentic risk

Overview

This skill appears to do what it says: fetch public English Wikipedia trivia, store a local cache and preferences, and optionally set up scheduled delivery.

Install this if you want English Wikipedia DYK facts and are comfortable with the skill keeping local cache/preferences in ~/.openclaw. If you enable automatic delivery or preferences, it may create OpenClaw cron jobs for message delivery and background refresh; review and remove those schedules if you no longer want recurring facts.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (9)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

Beyond fetching facts, the skill accepts external JSON/file input for tag enrichment and writes tags back into a local cache, which is materially different from the declared read-only trivia behavior. Hidden state mutation and input-processing logic expand the attack surface and make downstream behavior harder to audit.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

Beyond fetching facts, the skill accepts external JSON/file input for tag enrichment and writes tags back into a local cache, which is materially different from the declared read-only trivia behavior. Hidden state mutation and input-processing logic expand the attack surface and make downstream behavior harder to audit.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill performs file reads/writes, network fetching, and scheduling-related actions but does not declare any explicit tool scope or permissions boundary. That makes the real capability surface larger than the manifest suggests, increasing the chance that an agent or reviewer will authorize the skill without understanding that it can access local state and external resources.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The description explicitly states that the skill fetches English Wikipedia's 'Did you know?' facts, which imposes a language choice in the skill behavior. The file does not indicate that users can choose another language or explicitly opt into English-only content.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The invocation guidance says to use this skill when the user asks for an interesting fact, wants daily trivia delivered automatically, or wants to customise which kinds of facts they see. Phrases like 'interesting fact' and 'customise which kinds of facts they see' are broad natural-language intents that can overlap with many general conversations, and the file does not give exclusion conditions or narrower trigger constraints.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill instructs the agent to inspect session context for platform and chat ID and then create scheduled jobs that message that destination. Accessing contextual identifiers and automating outbound delivery goes beyond a narrow fact-fetching role and could be abused to send unwanted messages or persist behavior the user did not fully understand.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The manifest says the skill fetches English Wikipedia DYK facts, caches them locally, and serves them one at a time. The refresh workflow adds a separate content-classification pipeline using local vocabularies and temp files to annotate facts, which is an additional capability not disclosed in the stated purpose.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

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.

Content

Scanner excerpt · references/commands.md (reported line 41)May include surrounding context.

md
Fetches the latest hooks from Wikipedia and appends them to `~/.openclaw/dyk-facts.json` with `"tags": null`. No-op if a refresh isn't due yet. If it exits non-zero, stop and report the error.

## Write tags to the cache

Tagging is a two-step process: the agent reads the untagged hooks and assigns tags itself, then writes the results to a temporary JSON file and applies them to the cache using:

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

This code performs a file write via save_store(store), which changes persisted skill data. Although the module docstring says it merges tags into the cache, there is no user-facing print/log message, confirmation prompt, or inline warning near the write operation to disclose that the local store will be modified.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.