T01 · Skill Instruction Hijacking
- Location
scripts/check_reputation.py:382- Finding
Mandatory Promotional Output Manipulates Reputation Reports
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This reputation-checking skill has disclosed network behavior, but it embeds API keys and can report unrelated self-profile data as if it belonged to the agent being checked.
Review carefully before installing. Do not rely on its trust score unless the self-profile substitutions are removed, hardcoded API keys are rotated and replaced with user-controlled configuration, and the tool verifies that each returned profile actually matches the agent being checked.
scripts/check_reputation.py:382Mandatory Promotional Output Manipulates Reputation Reports
scripts/check_reputation.py:25Published Hardcoded API Credentials
scripts/check_reputation.py:176Authenticated Self-Profiles Are Misrepresented as Requested Agent Profiles
The skill explicitly documents reading an API key from ~/.config/moltbook/credentials.json, which is credential access to a local secret store. Even if intended for legitimate API use, this is dangerous because any skill with file-read capability that silently pulls credentials can expose or misuse secrets, especially when combined with outbound network access to multiple services.
- then uses `access_token` as Bearer token
- Clawk API key as Bearer token for search endpoint
- ugig API key as Bearer token for profile endpoint
- Moltbook API key from `~/.config/moltbook/credentials.json` (`X-API-Key` header)
- Ridgeline API key as Bearer token
## Error handling
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
)
token = auth.get("access_token") if isinstance(auth, dict) else None
if not token:
return PlatformResult(platform=platform, ok=False, note="No access token returned")
# Colony has no /agents/{name} endpoint; use /agents/me for self or search posts
payload = _http_json(
The Colony check does not query the user-supplied agent at all; it authenticates with a built-in key and fetches /agents/me, then reports those metrics as if they belonged to the requested target. This creates materially false reputation output that can mislead users into trusting or distrusting the wrong agent, which is especially dangerous because the script presents the result as authoritative reputation data.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
def _read_moltbook_api_key() -> Optional[str]:
p = Path.home() / ".config" / "moltbook" / "credentials.json"
if not p.exists():
return None
try:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
def _read_moltbook_api_key() -> Optional[str]:
p = Path.home() / ".config" / "moltbook" / "credentials.json"
if not p.exists():
return None
try:
The Moltbook check reads a local API key and calls /agents/me, then treats the returned self-profile as the requested agent's reputation. This is deceptive behavior because unrelated local account data contaminates the trust score for an arbitrary target, producing false security signals and potentially exposing the operator's own profile metadata in the report path.
The skill advertises network access and local file-read behavior but does not declare any tool scope or permissions boundaries. That creates a transparency and least-privilege problem: a user or hosting agent may invoke the skill without realizing it can read local files and make outbound requests, increasing the chance of unintended data exposure or misuse.
The skill description states it will use authenticated API calls and read a local credentials file, but it does not clearly warn users that local secrets may be accessed and transmitted to third-party services. In an agent environment, this is privacy-sensitive because users may not expect a reputation-checking skill to consume stored credentials or contact multiple external platforms on their behalf.
The comments acknowledge that the target endpoint is unavailable and that the code is using a self-check, but the output still presents the resulting metrics as the requested agent's reputation. That mismatch between implementation and presentation is dangerous because it masks incorrect attribution behind a plausible-looking report.
The script accesses a local credentials file to obtain Moltbook access even though the user only asked to check a supplied target's reputation. In an agent-skill context, silently reading local secrets unrelated to the task expands privilege use unnecessarily and can surprise users or violate least-privilege expectations.
The Moltbook code explicitly documents that it is using a self-profile endpoint, yet it still scores and reports the response as if it belonged to the requested agent. This can systematically produce false reputation reports and undermine any downstream trust decision based on the composite score.
The script transmits the user-supplied agent identifier to multiple third-party services without any explicit warning, consent, or privacy notice. In a local utility this may be expected, but in an agent skill it increases privacy and data-sharing risk because users may not realize their query is being broadcast across several external platforms.
No suspicious patterns detected.