T09 · Insecure Skill Coding Practices
- Location
SKILL.md:166- Finding
Unencrypted Private-Key Storage in a Predictable Local Directory
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is identity-focused and mostly coherent, but it handles durable private keys and signed identity-linking actions without enough containment or reviewable implementation.
Review before installing. Only use this skill if you are comfortable creating or importing an agent identity whose private key may be stored unencrypted under `$HOME/.openclaw/billions`, and do not run replacement scripts or dependencies from an unreviewed source. Require explicit confirmation before creating identities, signing challenges, linking a human owner, or sending verification messages.
SKILL.md:166Unencrypted Private-Key Storage in a Predictable Local Directory
SKILL.md:20Unauditable Dependency Installation and Missing Referenced Implementation
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).
Lets AI agents create and manage their own identities on the Billions Network, and link those identities to a human owner.
cd scripts && npm install && cd
The skill instructs the agent to create identities and link them to a human owner, while later disclosing that sensitive material is stored under $HOME/.openclaw/billions and that kms.json contains unencrypted private keys. There is no explicit warning in the setup/use flow to obtain user consent before generating, importing, or persisting this key material, creating a high risk of unauthorized creation of durable credentials and sensitive secret storage.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- `kms.json` - **CRITICAL**: Contains unencrypted private keys
- `defaultDid.json` - DID identifiers and public keys
- `challenges.json` - Authentication challenges history
- `credentials.json` - Verifiable credentials
- `identities.json` - Identity metadata
- `profiles.json` - Profile data
The example trigger guidance uses broad conversational phrasing like 'Link your agent identity to me' that can cause an agent to initiate identity-linking operations from ordinary chat without a strong confirmation or consent step. In this skill’s context, those operations can create attestations, send signed responses, or establish identity relationships, so over-broad invocation materially increases the chance of unintended sensitive actions.