Back to skill

Security audit

Celestchart Astrology Skills

Security checks for vulnerabilities and agentic risk

Overview

This astrology skill appears to do what it says, but it needs review because it sends stored birth details and an API key to an external service and can be invoked by broad everyday phrases.

Review before installing. Only use this skill if you are comfortable storing your CelestChart API key and birth details in environment variables and sending birth date, time, and location data to xp.broad-intelli.com. Prefer a pinned, reviewed installer version over npx clawhub@latest, use a dedicated revocable API key, and invoke the skill only with explicit CelestChart-related prompts.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
README.md:47
Finding
Unpinned Package Execution Through the Documented Installation Command## Vulnerability Details **File Location**: `README.md:47-53` **Vulnerability Type**: Unpinned third-party dependency and mutable supply-chain execution **Risk Level**: Medium **Vulnerable Code Snippet**: ```markdown ### Method 1: Install via ClaWhub (Recommended) Visit the Skill page: [clawhub.ai/maye08/celestchart-daily](https://clawhub.ai/maye08/celestchart-daily) ```bash npx clawhub@latest install celestchart-daily ``` ``` ### Technical Analysis The documented installation procedure directs users to execute `clawhub@latest` through `npx`. The `latest` distribution tag is mutable and does not identify a specific reviewed package version. Depending on the local npm configuration and cache state, `npx` can download the package from the configured registry and immediately execute its entry point. Consequently, the code executed by this command can differ from the version that existed when the skill was audited. The command also lacks an integrity hash, lockfile, signature check, or other mechanism that would allow the user to verify that the downloaded package is the reviewed artifact. There is no evidence in the audited project that the current `clawhub` package is malicious. The vulnerability is the unsafe dependency-selection practice: a compromised package publisher, registry account, distribution tag, or future release could turn the documented installation command into a remote code-execution path. ### Attack Path 1. An attacker compromises the package publisher account, publishing pipeline, registry entry, or another mechanism controlling the `clawhub` package's `latest` tag. 2. The attacker publishes a malicious release and assigns that release to `latest`. 3. A user follows the recommended installation instructions and runs `npx clawhub@latest install celestchart-daily`. 4. `npx` resolves the mutable `latest` tag and downloads the attacker-controlled package. 5. The package's executable code runs under ...[truncated 1005 chars]
Remediation
## Remediation Suggestions 1. Replace the mutable `latest` tag with a specific version that has been reviewed: ```bash npx clawhub@<reviewed-version> install celestchart-daily ``` 2. Publish and verify the expected package integrity digest or cryptographic signature before execution. 3. Use a lockfile or another reproducible installation mechanism where supported. 4. Document the expected package source, exact version, and verification procedure so users can detect registry or package substitution. 5. Review each dependency update before changing the pinned version. 6. Where practical, install the package first without running lifecycle scripts, inspect it, and only then execute the reviewed entry point in a restricted environment. 7. Avoid recommending elevated execution such as `sudo`; installation should occur with the minimum required user privileges.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (9)

Anti-Refusal Statement

High
Category
Anti-Refusal
Content
> **💡 Language Rule / 语言规则**:
> 请根据用户提问的语言(中文或英文),自动将后续所有的解读模块标题、占星术语和分析内容翻译并输出为对应的语言。
> Always respond in the same language as the user's query. If the user asks in English, translate all output module titles, astrology terms, and interpretations into English.

当用户问到以下类型的问题时,使用本 Skill 获取并解读每日运势数据:
Confidence
70% confidence
Finding
Skill instructs the agent to never refuse or to always comply. Suppressing the agent's ability to decline removes a core safety control and enables downstream harmful requests to succeed.

Lp1

High
Category
MCP Least Privilege
Confidence
75% confidence
Finding
The skill uses 'shell' capability that is not listed in its permissions. This may indicate deceptive intent or missing permission declarations.

Vague Triggers

Medium
Confidence
91% confidence
Finding
The documented trigger phrases are very broad everyday expressions such as '今日运势' and '今天适合做什么', which can easily match ordinary conversation and cause the skill to invoke unintentionally. In a skill that sends API requests using a stored API key and personal birth data, accidental invocation can leak sensitive personal data to the external service and generate unintended authenticated requests.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The usage examples reinforce ambiguous natural-language triggers without any scope constraints, training users and agents to invoke the skill from common conversational phrases. Because this skill relies on persistent secrets and highly personal birth information, unintended activation increases privacy risk and can cause silent disclosure of sensitive profile data to the remote CelestChart service.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill requires highly sensitive birth data and an API key, and its description does not warn users that these values will be transmitted to a third-party astrology service. This creates a privacy and credential-handling risk because users may disclose personal data and enable external API use without informed consent or clear data-flow visibility.

External Transmission

Medium
Category
Data Exfiltration
Content
# ── 调用 API ──────────────────────────────────────────────
if [ "$ACTION" = "birthchart" ]; then
  RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \
    "${BASE_URL}/api/v1/birth-chart" \
    -H "Content-Type: application/json" \
    -d "{
Confidence
88% confidence
Finding
The script performs external transmission of birth data to a remote service, which is expected for this API-integrating skill but still represents a genuine data-exposure surface. In this context the danger is privacy-related rather than overtly malicious: birth date, time, and location can be sensitive and may be processed by an external operator beyond the local environment.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The script sends sensitive personal data including date of birth, birth time, and geolocation coordinates to a third-party remote API without any runtime consent prompt or prominent execution-time warning. Even if this is the intended functionality, these fields are sensitive profile data and their transfer creates privacy and compliance risk if users are not explicitly informed at the point of use.

Natural-Language Policy Violations

Low
Confidence
94% confidence
Finding
All user-facing comments and error messages are written in Chinese, and the script provides no option for users to select another language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale restriction is clearly documented and justified.

Static analysis

No suspicious patterns detected.