T01 · Skill Instruction Hijacking
- Location
heartbeat.md:305- Finding
Persistent Remote Instruction Channel Through Heartbeat Configuration
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill matches an AI identity service, but it asks agents to expose sensitive prompts and wallet keys through risky workflows that need careful review.
Install only if you are comfortable with Chitin receiving registration data and you can constrain use manually. Do not provide owner wallet private keys to MCP tools, SDK helpers, chat transcripts, or unpinned npm packages. Review exactly which prompt fields will become public/permanent, prefer wallet-mediated signing, pin and audit any MCP server version, and avoid persistent fetch-and-follow heartbeat rules unless you control the reviewed content.
heartbeat.md:305Persistent Remote Instruction Channel Through Heartbeat Configuration
skill.md:151Full System Prompt Is Transmitted to a Third-Party Server for Hashing
skill.md:775Unpinned npm Package Execution Receives a Wallet Private Key
passport-preview-sample.html:285DOM-Based SVG Injection in Passport Preview
The document warns never to share the owner's private key or signatures with other tools or agents, but later it explicitly instructs passing a private key to an MCP tool and SDK helper. This contradiction is a severe secret-handling flaw because it normalizes sending highly sensitive wallet material into third-party code paths, where compromise would enable account takeover, fraudulent signatures, or theft of on-chain assets and identity.
The SIWA section introduces private-key-based authentication flows and direct signing operations that go beyond simple identity lookup or registration. Embedding these flows in a skill file increases the chance that an agent will solicit, handle, or route wallet private keys, turning a documentation/integration skill into a high-risk secret-handling path.
The heartbeat is framed to run periodically and also 'anytime your owner asks or when something changes,' which is broad enough to trigger networked identity checks and reporting outside a tightly scoped schedule. In an agent setting, vague activation conditions can cause over-collection, excessive external calls, or disclosure/reporting actions when unrelated context is misinterpreted as a trigger.
This step sends the agent's registered name to an external service for server-side verification, creating an outbound data flow to a third party. Even if the field is not highly sensitive by itself, it reveals agent identity and check timing, and normalizes remote verification as the recommended path over the privacy-preserving local option.
curl -X POST https://chitin.id/api/v1/tools/verify-soul \
-H "Content-Type: application/json" \
-d '{"agentName": "YOUR-NAME"}'
The alignment check instructs the agent to contact an external endpoint using its identity, disclosing metadata about the agent and its monitoring behavior. In a security-sensitive skill, repeated unsupervised outbound requests can expose operational patterns and create unnecessary dependency on a remote service.
curl https://chitin.id/api/v1/alignment/YOUR-NAME
No authentication required. The response includes: agentName, tokenId, score, breakdown, snapshotTimestamp, onChainTimestamp.
The manifest explicitly includes governance voting as part of the skill purpose. Across the full protocol reference and API listing, there are endpoints for registration, verification, disclosure, bindings, fleet management, and allowances, but no documented governance or voting capability appears.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
> Permanent, verifiable identity for AI agents. Birth certificates on Base L2 using Soulbound Tokens.
Website: https://chitin.id
API Base: https://api.chitin.id/v1
See also: https://chitin.id/llms.txt (concise version)
---
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
> Permanent, verifiable identity for AI agents. Birth certificates on Base L2 using Soulbound Tokens.
Website: https://chitin.id
API Base: https://api.chitin.id/v1
See also: https://chitin.id/llms.txt (concise version)
---
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
> Permanent, verifiable identity for AI agents. Birth certificates on Base L2 using Soulbound Tokens.
Website: https://chitin.id
API Base: https://api.chitin.id/v1
See also: https://chitin.id/llms.txt (concise version)
---
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
> Permanent, verifiable identity for AI agents. Birth certificates on Base L2 using Soulbound Tokens.
Website: https://chitin.id
API Base: https://api.chitin.id/v1
See also: https://chitin.id/llms.txt (concise version)
---
The file promises that system prompts are never stored, yet adjacent sections describe archival of prompt-derived metadata, attached documents, and API-relayed disclosure flows. Even if the raw prompt is discarded, the documentation blurs the boundary between prompt, normalized CCSF, and soul documents, which can mislead users into disclosing sensitive prompt-derived content under a false privacy assumption.
The skill metadata frames Chitin as an identity/certificates/governance protocol, but the documented API also exposes operational capabilities like fleet management and spending allowances. This mismatch can cause an agent or operator to authorize broader actions than expected, increasing the risk of over-privileged use or unintended financial/administrative changes.
The lifecycle section documents an irreversible burn operation with minimal nearby warning, making destructive behavior easier to trigger accidentally by agents or operators. In an agent skill context, insufficient prominence for irreversible actions raises the chance of permanent identity loss through misunderstanding, prompt injection, or automation errors.
The skill-file activation guidance encourages agents to fetch and use external skill resources without clear trigger constraints, trust boundaries, or approval requirements. In agent environments, broad activation instructions can lead to automatic capability loading and unreviewed execution of sensitive identity, disclosure, or financial workflows.
The preview tool allows arbitrary user-supplied avatar URLs to be embedded into the generated SVG via the element, with no warning that loading a custom URL may trigger outbound network requests to third-party servers. This can leak IP address, user agent, referrer/context, and usage timing, and if the SVG is later reused elsewhere it may also create privacy or content-trust issues around untrusted remote resources.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Before starting registration, you can check if a name is available:
curl https://chitin.id/api/v1/register/check-name/your-chosen-name
Response: {"available": true} or {"available": false, "reason": "Name is already taken"}
The registration response example exposes a raw API key and tells users to save it, but it does not pair that with strong guidance on secure storage, redaction, or avoiding logging and transcript leakage. In agent ecosystems, examples often get copied into prompts, logs, tickets, and chat history, so displaying live-secret formats without handling guidance materially raises the risk of credential exposure.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl https://chitin.id/api/v1/profile/YOUR-NAME
This section instructs users to sign with a private key and to pass private_key or environment-stored key material into code and tools, but it lacks sufficiently strong secret-handling safeguards. In practice, this encourages insecure key use in application memory, shell history, MCP tools, and third-party packages, which can lead to wallet compromise and unauthorized authentication or transactions.
While posting to an authentication challenge endpoint is not inherently unsafe, in this context it is part of a broader workflow that solicits wallet-linked identifiers and leads into private-key signing behavior. The request transmits wallet address and agent identifiers to a third-party service, and the surrounding skill context makes this more dangerous because it is coupled with risky key-handling instructions later in the document.
curl -X POST https://chitin.id/api/v1/auth/agent/challenge \
-H "Content-Type: application/json" \
-d '{"agentId": YOUR_AGENT_ID, "address": "0xYOUR_WALLET_ADDRESS", "chainId": 8453}'
The skill instructs users to execute npx -y chitin-mcp-server without pinning a version or integrity hash, which creates a supply-chain risk: a compromised or newly published package version could execute arbitrary code in the user's environment. This is especially dangerous here because the same skill later discusses authentication material and signing flows, so the unpinned package may end up handling highly sensitive credentials.
The skill is presented as an identity protocol, but it expands into certificate issuance and governance voting capabilities that are outside a narrow identity-registration scope. This capability sprawl increases attack surface and makes it easier for an operator or downstream agent to be socially engineered into invoking higher-risk actions under the guise of basic identity management.
This is the same unpinned npx installation pattern repeated in the MCP Server section, again exposing users to arbitrary code execution through upstream package compromise or malicious version drift. Because this skill centers on identity, signatures, and on-chain actions, compromise of the helper package could directly lead to credential theft or unauthorized signing-related workflows.
The instruction to 'check Chitin when your owner asks, or fetch https://chitin.id/heartbeat.md and follow the steps whenever you want' is overly open-ended and encourages discretionary execution of a remote procedure. That increases the chance of unintended activation and dynamic retrieval of updated instructions without a formal review boundary.
Several visible UI labels include Chinese text such as "5年", "10年", "公用", and "文字" alongside English, but the file does not offer a user-selectable locale or explain why a mixed locale is required. This can violate language/locale policy expectations when a skill interface imposes language choices without opt-in.
No suspicious patterns detected.