T09 · Insecure Skill Coding Practices
- Location
SKILL.md:143- Finding
Identity Private Keys May Be Stored in Plaintext
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is for agent identity management, but it handles powerful identity keys in risky ways and references missing install code that cannot be reviewed.
Install only if you understand that this skill creates and uses long-lived identity credentials. Configure BILLIONS_NETWORK_MASTER_KMS_KEY before creating identities, avoid importing real private keys via command-line arguments, verify the missing scripts and package lockfile from a trusted source before running npm install, and treat $HOME/.openclaw/billions as a sensitive credential store.
SKILL.md:143Identity Private Keys May Be Stored in Plaintext
SKILL.md:41Existing Private Keys Are Accepted Through Command-Line Arguments
SKILL.md:164Caller-Controlled Values Are Interpolated into Shell Command Examples
SKILL.md:22Unauditable Dependency Installation Is Required by an Incomplete Artifact
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 inst
The skill explicitly documents a local directory containing sensitive artifacts including private keys, credentials, identity metadata, and profiles. Even though this is documentation rather than exfiltration logic, it meaningfully lowers the barrier for a compromised agent, malicious plugin, or inattentive operator to locate and access high-value credential stores.
- `kms.json` - **CRITICAL**: Contains private keys (encrypted if BILLIONS_NETWORK_MASTER_KMS_KEY is set, otherwise in plaintext)
- `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 skill instructs users to create a new decentralized identity and persist its associated key material under a local directory, but the usage flow does not clearly warn that this creates long-lived sensitive secrets on disk. In an agent setting, that omission is dangerous because operators may invoke the workflow without understanding that private keys may be stored locally and potentially unencrypted depending on environment configuration.
The documented --key argument encourages passing a raw private key on the command line, which is highly sensitive because command-line arguments are often exposed through shell history, process listings, logs, and agent telemetry. In an automated agent environment this materially increases the chance of credential disclosure and identity compromise.
No suspicious patterns detected.