Back to skill

Security audit

Astro Transits

Security checks for vulnerabilities and agentic risk

Overview

This skill runs local astrology calculations and the reviewed artifacts do not show hidden, destructive, credential-seeking, or exfiltration behavior.

Install in a virtual environment and consider pinning `pyswisseph` before use. Be aware that saved natal chart JSON contains birth date, time, timezone, and location coordinates, so store it somewhere appropriate.

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
SKILL.md:19
Finding
Unpinned Third-Party Dependency Installation## Vulnerability Details **File Location**: `SKILL.md:19` **Vulnerability Type**: Unpinned and unverified third-party dependency **Risk Level**: Medium **Vulnerable Code Snippet**: ```bash pip install pyswisseph ``` ### Technical Analysis The documented setup command installs the currently resolved version of `pyswisseph` from the user's configured pip package index. The project does not provide a version constraint, cryptographic hash, lockfile, or trusted-index restriction. Python package installation may execute package-controlled build hooks. Consequently, the effective code installed by this command can change after the Skill has been audited. Exploitation would require compromise or substitution of the dependency, its distribution account, or the configured package index. The audit found no evidence that `pyswisseph` itself is malicious; the risk arises from the unpinned and unverified installation process. ### Attack Path 1. An attacker compromises the dependency's distribution account or a pip index configured on the target system, or otherwise causes a malicious distribution to be resolved. 2. The attacker publishes or substitutes a malicious release under the resolved package identity. 3. A user follows the setup instruction and runs `pip install pyswisseph`. 4. pip downloads the attacker-controlled distribution because no reviewed version or hash is enforced. 5. Malicious package build or installation logic executes with the privileges of the user running pip. 6. The installed package may execute again when the Skill scripts import `swisseph`. ### Impact Assessment Successful exploitation could permit arbitrary code execution with the privileges of the account performing installation or running the scripts. This may expose files, environment variables, astrology input data, and credentials accessible to that account, and may allow modification of user-writable files or installed Python packages. The im ...[truncated 219 chars]
Remediation
## Remediation Suggestions 1. Pin `pyswisseph` to a specific, reviewed version rather than resolving the latest available release. 2. Publish a locked dependency file containing cryptographic hashes and install it with pip's `--require-hashes` option. 3. Generate and review hashes for every permitted distribution artifact and platform. 4. Use the official Python Package Index explicitly, or an internally controlled package mirror, where appropriate. 5. Install dependencies inside an isolated virtual environment under a non-privileged account. 6. Add automated dependency vulnerability and provenance monitoring to the release process. 7. Replace the setup command with a hardened form, such as: ```bash python3 -m pip install --require-hashes -r requirements.txt ``` The corresponding `requirements.txt` should pin the reviewed version and include approved SHA-256 hashes.
Vulnerability Patterns
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding
The code is clearly focused on natal chart generation, not transit analysis or forecasting. It converts birth date/time/timezone to UTC Julian Day, computes planetary positions and houses via Swiss Ephemeris, and outputs natal chart data. This aligns only with the 'natal chart support' portion of the description. The broader declared purpose emphasizes a transit calculator with multiple forecasting and event-detection capabilities, none of which appear in this code chunk. There is no evidence of unrelated or dangerous behavior, and use of Swiss Ephemeris is consistent with the description, but the primary described functionality is materially broader than the implemented behavior here.

Tp4

High
Category
MCP Tool Poisoning
Confidence
89% confidence
Finding
The code substantially matches the declared astrology/transit-calculator purpose: it uses Swiss Ephemeris, supports natal chart input, computes daily and weekly transit aspects, and reports stations and ingresses. However, one specifically declared capability—void-of-course Moon—is not present anywhere in the code. The script calculates Moon sign and phase, but does not determine or report void-of-course periods. No suspicious undeclared capabilities, external network access, or unrelated behavior are present. This is a partial description-to-behavior mismatch due to an advertised feature missing from the implementation.

Lp3

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding
Without declared permissions the skill's intent is opaque and cannot be validated.

Description-Behavior Mismatch

Medium
Confidence
90% confidence
Finding
The manifest describes an astrological transit calculator with natal chart support, focusing on calculations such as transits, forecasts, aspects, and chart data. This file adds a separate persistence capability via `--save`, allowing the skill to write output to any caller-supplied path, which is beyond the described calculation-oriented behavior.

Static analysis

No suspicious patterns detected.