Back to skill

Security audit

凡心八字在线排盘,导出AI指令

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent and simple, but it sends personal birth details and optional name to a third-party API over unencrypted HTTP.

Review this before installing if you do not want your name, gender, and exact birth time sent to a third-party service. The main issue is not hidden behavior, persistence, or local compromise; it is that the API URL uses HTTP instead of HTTPS, so the submitted data and returned result can be observed or modified on the network.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
paipan.py:12
Finding
Personal Data Transmitted Over Unencrypted HTTP## Vulnerability Details **File Location**: `paipan.py:12, 43` **Vulnerability Type**: Plaintext transmission of sensitive personal data **Risk Level**: Medium The endpoint is also documented as insecure in `SKILL.md:42`. ```python API_ENDPOINT = "http://api.bagezi.top/api/paipan" ``` ```python payload = { "name": name, "gender": gender, "birthday_str": birthday_str, } response = requests.post(API_ENDPOINT, json=payload, timeout=TIMEOUT) ``` ```markdown - Latest endpoint: `http://api.bagezi.top/api/paipan` ``` ### Technical Analysis The CLI sends a user's name, gender, and complete birth timestamp to a remote API using plaintext HTTP. HTTP provides neither transport confidentiality nor server authentication and does not protect message integrity. An attacker with a network position—such as a malicious Wi-Fi operator, compromised router, ISP-level intermediary, or local network attacker capable of traffic interception—can inspect the submitted personal information. The attacker can also modify the request or API response in transit because the client has no authenticated TLS channel through which to verify the server or received content. ### Attack Path 1. A user runs the CLI and supplies their name, gender, and birth timestamp. 2. The application serializes those values into a JSON request body. 3. `requests.post` sends the body to `http://api.bagezi.top/api/paipan` without TLS. 4. A network-positioned attacker captures the HTTP traffic and reads the personal data. 5. The attacker may alter the outgoing request or substitute a forged API response. 6. The application accepts the modified response as originating from the intended service and prints it to the user. ### Impact Assessment Exploitation does not grant local operating-system privileges or code execution. Its scope is the confidentiality and integrity of data exchanged with the remote API. An attacker can obtain the submi ...[truncated 175 chars]
Remediation
## Remediation Suggestions 1. Replace the endpoint with an HTTPS URL backed by a valid, trusted certificate: ```python API_ENDPOINT = "https://api.bagezi.top/api/paipan" ``` 2. Confirm that the service supports HTTPS and retains certificate verification. Do not set `verify=False`. 3. Prevent downgrade behavior: do not fall back to HTTP if TLS fails. 4. Ensure redirects cannot silently move sensitive requests to an HTTP destination, for example by validating the final destination and scheme or disabling redirects where they are unnecessary. 5. Update `SKILL.md` so all documented endpoints and examples use HTTPS. 6. Clearly disclose that the supplied personal data is sent to a third-party service and minimize the submitted fields where possible. 7. If the server cannot provide properly configured HTTPS, do not transmit personal information to it until secure transport is available.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (7)

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill documents network use via an external API endpoint but does not declare any explicit tool scope or permissions constraining network access. This creates a policy and review gap: operators cannot clearly determine or enforce what outbound access the skill requires, increasing the risk of unintended data transmission or broader-than-necessary network capability.

Natural-Language Policy Violations

Medium
Confidence
88% confidence
Finding
The natural-language content in the description and usage instructions is exclusively Chinese, which can effectively force a specific language on users without opt-in. The policy allows locale constraints when they are explicitly documented and justified, but this file does not provide such justification or an alternative language option.

External Transmission

Medium
Category
Data Exfiltration
Content
# API 端点

- 最新端点: `http://api.bagezi.top/api/paipan`
Confidence
88% confidence
Finding
The skill specifies an external API endpoint over plain HTTP, meaning any transmitted user input such as birth date, gender, and possibly name can be intercepted or modified in transit. Because the skill processes personal data and sends it to a third-party service, lack of transport security and unclear data-handling boundaries materially raise confidentiality and integrity risks.

External Transmission

Medium
Category
Data Exfiltration
Content
import requests

API_ENDPOINT = "http://api.bagezi.top/api/paipan"
DEFAULT_NAME = "张三"
TIMEOUT = 15
Confidence
100% confidence
Finding
The API endpoint uses plain HTTP rather than HTTPS, so sensitive data is sent without transport encryption. This enables interception and tampering by network attackers, exposing name, gender, and precise birth time and allowing man-in-the-middle modification of responses.

External Transmission

Medium
Category
Data Exfiltration
Content
"birthday_str": birthday_str,
    }

    response = requests.post(API_ENDPOINT, json=payload, timeout=TIMEOUT)
    response.raise_for_status()
    return response.json()
Confidence
99% confidence
Finding
The code transmits user-supplied personal data to an external API, which is a real security/privacy concern in a skill because the data leaves the trusted execution environment. This is made more dangerous by the nature of the payload and by the lack of safeguards such as consent, endpoint trust validation beyond default TLS behavior, or a privacy boundary explanation.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The script sends personally identifiable and highly sensitive personal data (name, gender, and full birth timestamp) to a third-party service without any built-in user notice, consent flow, or privacy warning. In this context, the risk is increased because birth data is unusually sensitive for identity profiling, and the destination is an external network service outside the local tool boundary.

Natural-Language Policy Violations

Low
Confidence
89% confidence
Finding
文件中的模块说明、CLI 描述、帮助文本和错误信息均固定为中文,构成了默认语言约束。根据规则,若未提供用户语言/locale 选择,且未说明这是特定地区或特定用户群体专用工具,则属于自然语言层面的语言策略问题。

Static analysis

No suspicious patterns detected.