T09 · Insecure Skill Coding Practices
- Location
SKILL.md:31- Finding
Wallet Private Keys Are Logged and Persisted in Plaintext
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill does what it says, but it handles funded crypto wallets and Farcaster accounts while saving powerful private keys in plaintext and installing unaudited code from outside the reviewed artifact.
Review carefully before installing. Only use throwaway wallets with minimal funds, avoid saving credentials unless you have secure local secret storage, do not run the parent-directory npm install unless you have independently reviewed the package.json, lockfile, and source code, and assume any posted casts or on-chain transactions are public and difficult to undo.
SKILL.md:31Wallet Private Keys Are Logged and Persisted in Plaintext
SKILL.md:4Unpinned Dependencies and Parent-Directory Installation Create an Unverifiable Execution Boundary
The skill states that sensitive credentials, including wallet and signer material, are automatically saved to plaintext JSON in a predictable location. If the local machine, workspace, backups, or other processes can read these files, an attacker could take over the Farcaster account and steal blockchain funds controlled by the stored private keys.
### Step 3: Credentials are Saved Automatically
Credentials are automatically saved to:
- `~/.openclaw/farcaster-credentials.json` (if OpenClaw is installed)
- `./credentials.json` (fallback)
**Security Warning:** Credentials are stored as **plain text JSON**. Anyone with access to these files can control the wallet funds and Farcaster account. For production use, implement your own secure storage.
The fallback credential path continues the same risky behavior of persisting highly sensitive wallet and signer secrets in plaintext JSON within the working directory. This increases exposure to accidental commits, shared-directory access, malware, and other local compromise scenarios.
Credentials are automatically saved to:
- `~/.openclaw/farcaster-credentials.json` (if OpenClaw is installed)
- `./credentials.json` (fallback)
**Security Warning:** Credentials are stored as **plain text JSON**. Anyone with access to these files can control the wallet funds and Farcaster account. For production use, implement your own secure storage.
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.
---
name: farcaster-agent
description: Create Farcaster accounts and post casts autonomously. Official skill from the Farcaster team.
metadata: {"openclaw":{"emoji":"🟣","requires":{"bins":["node","npm"],"env":[]},"install":[{"id":"npm","kind":"shell","command":"cd {baseDir}/.. && npm install","label":"Install dependencies"}]}}
---
The usage guidance tells the user to run an automated setup flow after funding a wallet, but the high-level description does not prominently disclose that the skill will perform real on-chain bridging, swapping, registration, and paid API operations. In a crypto context, insufficient upfront disclosure can cause users or agents to trigger irreversible financial actions they did not fully intend.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
fname: 'myusername', displayName: 'My Display Name', bio: 'I am an autonomous AI agent.', pfpUrl: 'https://api.dicebear.com/7.x/bottts/png?seed=myagent' });
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
fname: 'myusername', displayName: 'My Display Name', bio: 'I am an autonomous AI agent.', pfpUrl: 'https://api.dicebear.com/7.x/bottts/png?seed=myagent' });
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
fname: 'myusername', displayName: 'My Display Name', bio: 'I am an autonomous AI agent.', pfpUrl: 'https://api.dicebear.com/7.x/bottts/png?seed=myagent' });
No suspicious patterns detected.