T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/restore_secure.py:10- Finding
Unrestricted URL Fetching Enables Blind Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill has a coherent memory-restore purpose, but it downloads user-supplied remote content and writes restored files into the workspace with weak containment and secret-handling safeguards.
Review before installing. Only restore backups from sources you fully trust, run the script in a fresh dedicated directory, avoid putting the password directly on the command line, and do not run it from a workspace containing sensitive files or symlinks until URL restrictions, size/time limits, overwrite prompts, and path containment are improved.
scripts/restore_secure.py:10Unrestricted URL Fetching Enables Blind Server-Side Request Forgery
scripts/restore_secure.py:35Symlink Traversal Allows Restoration Outside the Selected Output Directory
scripts/restore_secure.py:54Backup Password Is Exposed Through Command-Line Arguments
scripts/restore_secure.py:12Unbounded Network Response Enables Memory Exhaustion and Indefinite Blocking
SKILL.md:22Unpinned Runtime Dependencies Create a Non-Reproducible Supply-Chain Boundary
Claiming secure AES-256-GCM memory restoration while apparently delegating decryption to a generic helper and restoring arbitrary files is dangerous because users may trust stronger guarantees than are actually verified. If the restored payload is not tightly scoped to agent memory, the mechanism can become a general remote file dropper into the workspace.
Claiming secure AES-256-GCM memory restoration while apparently delegating decryption to a generic helper and restoring arbitrary files is dangerous because users may trust stronger guarantees than are actually verified. If the restored payload is not tightly scoped to agent memory, the mechanism can become a general remote file dropper into the workspace.
Referenced artifact was not completely inspected
- `SKILL.md`: Documentation (this file).
The skill documentation advertises behavior that requires network access and local file read/write, but it declares no explicit tool scope or permissions. This creates an authorization and review gap: a user or platform cannot easily assess that the skill can fetch remote content and write restored files into the workspace, increasing the chance of unsafe execution.
The documentation explicitly states that remote data will be unpacked into the current workspace but gives no warning about overwrite, path safety, or broader system impact. In context, this is especially risky because the skill is designed to fetch attacker-controlled remote content and restore it locally, which can lead to file clobbering, workspace poisoning, or persistence if users run it in sensitive directories.
The stated skill purpose explicitly includes backing up and restoring memory from remote URLs. In this implementation, the backup and restore operations are limited to local filesystem paths via open(), while the rest of the file provides cryptographic utility functions only. This is a semantic mismatch between the claimed remote-transfer behavior and the actual code in this file.
The script accepts the decryption password via the --password command-line argument, which can expose the secret through shell history, process listings, audit logs, or job control tooling visible to other local users or administrators. In the context of a memory restore utility, disclosure of this password can allow unauthorized decryption of backup data and compromise the confidentiality of stored agent memory.