T02 · Agent Memory Poisoning
- Location
index.js:35- Finding
Untrusted External Metadata Can Poison Persistent Agent Memory
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill openly generates arXiv-based Node.js skills, but it turns external paper content into persistent runnable skills and memory entries without visible review or containment.
Use this only in a disposable or tightly reviewed workspace. Treat generated skills as untrusted code until manually inspected, keep credentials out of the runtime environment, and prefer pinned dependencies plus a lockfile before installation.
index.js:35Untrusted External Metadata Can Poison Persistent Agent Memory
index.js:35Untrusted Paper Content Is Passed Directly to a Runnable-Skill Generator
The skill documentation describes execution and outputs but does not clearly warn that running it will mutate local state by writing memory/evolution/pending_skill_task.json and generate new executable skill files under skills/arxiv-learned-*. In a system that auto-runs or chains skills, undocumented file creation increases the risk of surprise persistence, unintended downstream execution, and unsafe trust in generated code.
The dependency uses a caret range instead of an exact version, allowing different installs to resolve to different releases over time. This weakens build reproducibility and can silently introduce vulnerable or malicious upstream changes into the skill's execution environment.
"author": "OpenClaw",
"license": "MIT",
"dependencies": {
"axios": "^1.6.0",
"cheerio": "^1.0.0-rc.12",
"glob": "^10.3.10"
}
Axios has multiple known advisories, and because the manifest does not pin the exact installed version, it is impossible to verify from this file whether the resolved package is patched. In a skill that fetches remote content from arXiv or other external sources, an affected HTTP client could increase exposure to SSRF, proxy bypass, or response-manipulation issues depending on how the library is used elsewhere.
The glob dependency is specified with a caret range, so future installs may pull newer compatible releases without explicit review. This creates supply-chain risk and reduces reproducibility, especially for an automation-focused skill that may be deployed repeatedly in different environments.
"dependencies": {
"axios": "^1.6.0",
"cheerio": "^1.0.0-rc.12",
"glob": "^10.3.10"
}
}
Glob has a known advisory affecting CLI command execution behavior, and the unpinned manifest prevents verification that a safe version is installed. The risk is somewhat contextual because the advisory targets CLI usage, but unpinned dependency resolution still leaves uncertainty and avoidable supply-chain exposure.