Back to skill

Security audit

Geoskill: Geospatial Report Generator

Security checks across malware telemetry and agentic risk

Overview

This report-rendering skill mostly matches its purpose, but it under-discloses risky rendering and dependency behavior that users should review before installing.

Install only if you are comfortable reviewing or constraining the runtime: pin and vet dependencies, remove the data-fetcher dependency if it is not needed, use trusted local manifests only, avoid PDF generation for untrusted manifests, and run the renderer in a restricted environment without sensitive local files or internal network access.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (8)

eval() call detected

High
Category
Dangerous Code Execution
Content
if getattr(args, "synthetic", False):
        return 0
    for flag, accessor in FILE_ARGS.items():
        path = eval(accessor)
        if path is not None and not Path(path).exists():
            print(f"ERROR: --{flag} not found: {path}", file=sys.stderr)
            return 2
Confidence
98% confidence
Finding
path = eval(accessor)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding
The documented behavior says the tool only renders existing output-manifest.json data, but the implementation reportedly also accepts arbitrary JSON fallbacks and can generate synthetic manifests. That mismatch weakens operator trust boundaries and can cause the tool to ingest unintended local files, potentially exposing sensitive content in rendered reports or masking provenance of report data.

Intent-Code Divergence

Medium
Confidence
95% confidence
Finding
The requirements explicitly reference a shared data-download library even though the skill is described as render-only and non-downloading. This capability mismatch is a real security concern because it expands the skill's effective attack surface and may enable unexpected network access or data acquisition paths that users and reviewers would not anticipate.

Context-Inappropriate Capability

Medium
Confidence
96% confidence
Finding
A render-only report generator should not need a data-fetching package tied to external sources such as Planetary Computer, NASA POWER, or OSM. Including such a dependency creates unjustified capability creep and raises the risk of hidden fetch behavior, transitive vulnerabilities, or abuse of the skill in ways that contradict its declared purpose.

Unpinned Dependencies

Low
Category
Supply Chain
Content
geoskill-data-fetcher>=0.2.0

# Third-party dependencies used by this skill
docx
weasyprint
Confidence
88% confidence
Finding
docx

Unpinned Dependencies

Low
Category
Supply Chain
Content
# Third-party dependencies used by this skill
docx
weasyprint
Confidence
98% confidence
Finding
weasyprint

Unpinned Dependencies

Low
Category
Supply Chain
Content
# Requirements for geospatial-report-generator
# Shared data-download library (Planetary Computer / NASA POWER / OSM)
geoskill-data-fetcher>=0.2.0

# Third-party dependencies used by this skill
docx
Confidence
90% confidence
Finding
geoskill-data-fetcher>=0.2.0

Known Vulnerable Dependency: weasyprint — 6 advisory(ies): CVE-2024-28184 (WeasyPrint allows the attachment of arbitrary files and URLs to a PDF); CVE-2025-68616 (WeasyPrint has a Server-Side Request Forgery (SSRF) Protection Bypass via HTTP R); CVE-2026-49452 (WeasyPrint has CSS Injection via Presentational Hints) +3 more

High
Category
Supply Chain
Confidence
99% confidence
Finding
weasyprint

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/geospatial_report_generator.py:67