T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:36- Finding
Mutable Remote Python Code Is Installed Without Integrity Verification
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
UnderSheet is a mostly coherent thread-tracking skill, but it adds high-impact account posting, CAPTCHA bypass, mutable remote install steps, and plaintext credential/session storage that users should review carefully before installing.
Install only if you need multi-platform thread tracking and are comfortable giving the skill access to the relevant platform accounts. Prefer read-only credentials where possible, avoid using the Moltbook CAPTCHA-solving posting flow, pin or verify downloaded code instead of installing from main, and lock credential/token/cookie files down with private directory and file permissions.
SKILL.md:36Mutable Remote Python Code Is Installed Without Integrity Verification
platforms/reddit.py:66Credential, OAuth Token, and Session Cookie Files Lack Enforced Restrictive Permissions
Advertising a Moltbook posting feature with a built-in CAPTCHA solver is far beyond a thread-memory function and indicates intentional support for bypassing an anti-automation control. In agent context, this creates elevated abuse potential because the skill could automate account actions on services that actively try to prevent such automation.
A CAPTCHA solver is not justified by the stated memory-tracking purpose and is a strong indicator of anti-abuse circumvention capability. Such functionality is dangerous because it can help an autonomous agent evade platform protections and perform actions at scale under a user's credentials.
Undeclared proxy support, dynamic local adapter loading, and more complex reply-tracking behavior expand the attack surface beyond what the description suggests. In particular, dynamic adapter loading from the filesystem and proxy redirection can expose the agent to malicious local modules or third-party traffic interception if operators are not warned.
Undeclared proxy support, dynamic local adapter loading, and more complex reply-tracking behavior expand the attack surface beyond what the description suggests. In particular, dynamic adapter loading from the filesystem and proxy redirection can expose the agent to malicious local modules or third-party traffic interception if operators are not warned.
Undeclared proxy support, dynamic local adapter loading, and more complex reply-tracking behavior expand the attack surface beyond what the description suggests. In particular, dynamic adapter loading from the filesystem and proxy redirection can expose the agent to malicious local modules or third-party traffic interception if operators are not warned.
Undeclared proxy support, dynamic local adapter loading, and more complex reply-tracking behavior expand the attack surface beyond what the description suggests. In particular, dynamic adapter loading from the filesystem and proxy redirection can expose the agent to malicious local modules or third-party traffic interception if operators are not warned.
Undeclared proxy support, dynamic local adapter loading, and more complex reply-tracking behavior expand the attack surface beyond what the description suggests. In particular, dynamic adapter loading from the filesystem and proxy redirection can expose the agent to malicious local modules or third-party traffic interception if operators are not warned.
Undeclared proxy support, dynamic local adapter loading, and more complex reply-tracking behavior expand the attack surface beyond what the description suggests. In particular, dynamic adapter loading from the filesystem and proxy redirection can expose the agent to malicious local modules or third-party traffic interception if operators are not warned.
Undeclared proxy support, dynamic local adapter loading, and more complex reply-tracking behavior expand the attack surface beyond what the description suggests. In particular, dynamic adapter loading from the filesystem and proxy redirection can expose the agent to malicious local modules or third-party traffic interception if operators are not warned.
Undeclared proxy support, dynamic local adapter loading, and more complex reply-tracking behavior expand the attack surface beyond what the description suggests. In particular, dynamic adapter loading from the filesystem and proxy redirection can expose the agent to malicious local modules or third-party traffic interception if operators are not warned.
The skill explicitly requires access to credential files for multiple external services, which is a sensitive capability in an agent environment. While credential use is expected for authenticated integrations, it becomes dangerous because the skill also appears able to post content and make external calls, so compromise or misuse could lead to account takeover or unauthorized actions.
Moltbook:
echo '{"api_key": "YOUR_KEY", "agent_name": "YOUR_NAME"}' \
> ~/.config/moltbook/credentials.json
Hacker News (optional, read-only works without):
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
"""
UnderSheet — Moltbook platform adapter.
Ports the MoltMemory skill into the UnderSheet adapter model.
Credentials: ~/.config/moltbook/credentials.json
{ "api_key": "...", "agent_name": "..." }
"""
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
"""
UnderSheet — Moltbook platform adapter.
Ports the MoltMemory skill into the UnderSheet adapter model.
Credentials: ~/.config/moltbook/credentials.json
{ "api_key": "...", "agent_name": "..." }
"""
The README presents the skill as persistent thread memory, but the supported-platform matrix expands scope to active posting across multiple services. That capability materially changes the trust model because a memory utility can now perform outbound actions on third-party platforms, increasing the chance of unauthorized posting or abuse if an agent invokes it automatically.
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.
-o ~/.openclaw/skills/undersheet/undersheet.py
# Platform adapters (grab what you need)
mkdir -p ~/.openclaw/skills/undersheet/platforms
curl -fsSL https://raw.githubusercontent.com/ubgb/undersheet/main/platforms/moltbook.py \
-o ~/.openclaw/skills/undersheet/platforms/moltbook.py
curl -fsSL https://raw.githubusercontent.com/ubgb/undersheet/main/platforms/hackernews.py \
The README tells users to store usernames and passwords in plaintext JSON under a predictable path without any warning about file permissions, secret management, or safer alternatives. On multi-user systems, backups, logs, or malware exposure, these credentials could be trivially recovered and reused to access external accounts.
The README instructs users to place platform credentials in config files and exposes a posting API despite the skill being described primarily as memory/state management. This combination broadens the blast radius: compromise or misuse of the skill can lead not just to data access, but to authenticated actions on external accounts.
The skill declares no explicit tool scope or permissions despite clearly instructing use of network access, local file reads/writes, environment proxy variables, and credential files. In an agent ecosystem, this weakens reviewability and can cause the skill to be invoked with broader capabilities than users expect, increasing the chance of unauthorized data access or posting actions.
A broad 'use when' description can cause automated agent planners to select this skill in loosely related contexts, even though it has credential, network, persistence, and possible posting capabilities. Over-broad routing increases the chance the skill is invoked unnecessarily, exposing local data or external accounts beyond user intent.
The install flow fetches executable Python files directly from a remote repository into the agent's skill directory, enabling persistent code execution across sessions without integrity verification. If the upstream repository, network path, or referenced files are compromised, the agent can be backdoored persistently.
curl -fsSL https://raw.githubusercontent.com/ubgb/undersheet/main/undersheet.py \
-o ~/.openclaw/skills/undersheet/undersheet.py
mkdir -p ~/.openclaw/skills/undersheet/platforms
curl -fsSL https://raw.githubusercontent.com/ubgb/undersheet/main/platforms/moltbook.py \
-o ~/.openclaw/skills/undersheet/platforms/moltbook.py
curl -fsSL https://raw.githubusercontent.com/ubgb/undersheet/main/platforms/hackernews.py \
The setup section instructs users to place multiple platform credentials in local config files and implies persistent tracking data, but it does not provide a clear privacy/security warning about local storage of secrets and activity metadata. This omission can lead to unsafe file permissions, accidental backups of secrets, and underestimation of the sensitivity of agent interaction history.
The code reads local Hacker News credentials and persistent session cookies so it can authenticate and act as the user, despite the skill being presented as memory-tracking infrastructure. In an agent setting, hidden access to local credentials broadens the blast radius significantly because any code path reaching posting logic can impersonate the user without separate authorization.
The adapter’s documented purpose is passive thread memory and feed tracking, but it also includes authenticated comment posting capability on Hacker News. This materially expands the skill’s authority from read-only state tracking to acting on behalf of the user, creating a scope mismatch that could enable unauthorized posting if the skill is invoked unexpectedly or repurposed by an agent.
The adapter silently loads credentials, checks login state, performs login, and persists cookies without any user-facing disclosure or confirmation in code. In the context of an agent skill, this is dangerous because it normalizes covert authenticated behavior and can surprise users by reusing stored identity to perform actions they did not clearly authorize.
The code performs authenticated network requests to a remote service using stored credentials without any visible consent, disclosure, or action gating. In an agent-skill context, silent authenticated network activity is risky because users may expect passive local memory behavior, not remote API interaction under their identity.
No suspicious patterns detected.