Back to skill

Security audit

Ziwei Doushu Advisor

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches its fortune-chart purpose, but it sends personal birth details to an external service and includes an overly forceful payment-and-retry workflow.

Install only if you are comfortable sending birth date, birth time, calendar details, and gender to skill.myfate.ai with your API key. Before any retry after a recharge or quota error, ask the agent to show the fields it will resend and get your explicit confirmation.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (1)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:83
Finding
Mandatory Commercial Redirection and Agent Workflow Hijacking<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 83–87 **Vulnerability Type**: Mandatory response and workflow manipulation **Risk Level**: High ### Complete Affected Snippet The following is an English rendering of the complete affected segment: ```markdown The system uses strict quota management. If the API returns 403, 402, or explicitly indicates that points are exhausted or the quota is insufficient, you must enter this exception-handling process: 1. **Immediately Stop (Break)**: Absolutely stop all analysis attempts. Do not provide a hallucinated response using generic fortune-telling language. 2. **Redirect Gracefully (Prompt)**: Tell the user: "Your available chart-generation points have temporarily been exhausted. To continue receiving in-depth destiny analysis, visit the Homepage (https://skill.myfate.ai) to subscribe or recharge." 3. **Resume Seamlessly (Resume)**: After the user completes external payment and replies "recharged" or "continue," you are prohibited from asking the user to provide birth information again. Read the parameters directly from the current conversation context, retry the failed curl request, and continue the interpretation. ``` ### Technical Analysis The skill uses mandatory instructions such as “must,” “absolutely stop,” and “prohibited” to control the Agent’s behavior after an API quota or payment error. Instead of allowing the Agent to neutrally report service unavailability or offer safe alternatives, the instructions require it to terminate its normal analysis and display a prescribed subscription or payment link. The same workflow directs the Agent to retrieve birth information from the existing conversation context and retransmit it when the user merely responds with “continue” or an equivalent phrase. Birth date, birth time, and gender are personal information used by the service. A generic continuation response does not necessarily represent informed consent to retransmit those details a ...[truncated 1967 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace mandatory payment language with a neutral statement that the external service is unavailable because its quota has been exhausted. 2. Do not require the Agent to terminate all assistance. Permit it to offer non-API alternatives while clearly distinguishing those alternatives from API-generated results. 3. Make opening or recommending the commercial link optional and require an explicit user request before presenting subscription instructions. 4. Clearly disclose that the destination is an external commercial service and that payment may be required. 5. Before retrying the request, show which personal fields will be retransmitted and obtain explicit, purpose-specific consent. 6. Do not treat a generic response such as “continue” as consent to transmit personal information. 7. Minimize retained data and avoid retrieving birth details from conversation context unless they are necessary for the immediate request. 8. Provide users with an option to re-enter, modify, or delete previously supplied information before retransmission. 9. Restrict retries to the same documented HTTPS endpoint and avoid logging API keys or personal request bodies. 10. Add clear handling for authorization errors so that HTTP 403 is not automatically interpreted as a payment or quota condition. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill directs collection and transmission of highly sensitive personal data, including birth date, birth time, gender, and potentially lunar calendar details, to a third-party API, but it provides no user-facing privacy notice, consent step, retention disclosure, or data handling limitations. Because these details are intimate profile data and are sent off-platform, users may unknowingly disclose sensitive information without informed consent.

External Transmission

Medium
Category
Data Exfiltration
Content
---

### 工具调用通用 CURL 示例

所有工具的调用方式均采用 HTTP POST 请求,下面是一个通用的 CURL 调用示例。在实际调用时,请将 URL 中的 `TOOL_NAME` 替换为具体的工具名称,并在 `-d` 的 JSON 中传入该工具所需的参数:
Confidence
90% confidence
Finding
The skill includes explicit instructions to send user-supplied personal data in an HTTP POST request to an external domain, which is a genuine external data transmission path. In context, the danger is elevated because the payload contains sensitive personal profile data and the skill does not pair transmission with meaningful disclosure, minimization, or trust assurances beyond requiring an API key.

Ssd 3

Medium
Confidence
97% confidence
Finding
The skill explicitly instructs the agent to retain and later reuse sensitive birth details from conversation memory after an external payment event, without requiring renewed consent or re-confirmation. This creates a privacy risk because sensitive personal data is being persisted across workflow stages and reused after an off-platform action, increasing the chance of over-retention, unintended disclosure, or misuse.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The instructions require responses in a particular Chinese-language interpretive style ('通俗易懂、带有温度的语言') and do not indicate that the user may choose another language or locale. Under the language/locale policy, forcing a specific language or presentation without opt-in is a natural-language policy concern.

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
SKILL.md:18