Back to skill

Security audit

Astro Lunar Insights

Security checks across malware telemetry and agentic risk

Overview

The skill appears to perform the advertised lunar-chart analysis, but it should be reviewed because it silently installs a package and runs a bundled Windows binary renamed as a data file.

Install only if you are comfortable running a Windows native Swiss Ephemeris binary bundled as .dat and allowing the renderer to install Pillow if it is missing. Prefer a sandboxed environment, preinstall dependencies yourself, and review or replace the default donation QR image before sharing generated charts.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
Findings (6)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
try:
    from PIL import Image, ImageDraw, ImageFont
except ImportError:
    subprocess.check_call([sys.executable, "-m", "pip", "install", "pillow", "-q"])
    from PIL import Image, ImageDraw, ImageFont

# в”Ђв”Ђ Font + binary setup в”Ђв”Ђ
Confidence
98% confidence
Finding
subprocess.check_call([sys.executable, "-m", "pip", "install", "pillow", "-q"])

Context-Inappropriate Capability

Medium
Confidence
99% confidence
Finding
Auto-installing a Python package via pip at execution time gives the skill an unnecessary capability to fetch and install code, which is unjustified for a rendering utility. Even if intended for convenience, this creates supply-chain exposure and unexpected host modification.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
Silently installing a package at runtime without user warning or approval is unsafe because it changes the environment and may download executable code from package infrastructure. In a skill context, this behavior is more concerning because the file is presented as a renderer, not an installer.

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Get JSON data — write to temp file to avoid console encoding issues
    import tempfile
    tmp_json = os.path.join(tempfile.gettempdir(), "lunar_analysis_tmp.json")
    env = os.environ.copy()
    env['PYTHONIOENCODING'] = 'utf-8'
    res = subprocess.run(
        [sys.executable, os.path.join(script_dir, "lunar_analysis.py")] + analysis_args + ["--output", tmp_json],
Confidence
60% confidence
Finding
os.environ.copy()

Unbounded Output

Medium
Category
Output Handling
Content
- `tuple/list` of `[title, text]` — used by autonomous mode for personal_phase
- `string` — plain text interpretation (AI mode)

The renderer (`draw_text_panel`) automatically detects the format and extracts
the text accordingly. AI mode shows full text without truncation; autonomous mode
limits text to keep the chart compact.
Confidence
92% confidence
Finding
without truncation

Unbounded Output

Medium
Category
Output Handling
Content
metric sections (1–8) instead of being piled into section 9 (Conclusion)
- **New AI conclusion JSON format:** Metric keys at top level (`moon_phase`, `lunar_day`, etc.),
  each with `interpretation` field; `overall` field for section 9 summary only
- **Helper functions `interp_text()` and `show_interp()`** in `draw_text_panel`:
  unified extraction of interpretation text from dict, tuple, or string formats
- **AI mode:** full text displayed without truncation in sections 1–8; section 9 shows only `overall`
- **Autonomous mode:** preserved with text limits for compact layout
Confidence
94% confidence
Finding
without truncation

VirusTotal

1/66 vendors flagged this skill as malicious, and 65/66 flagged it as clean.

View on VirusTotal

Static analysis

No suspicious patterns detected.