Back to skill

Security audit

Geoskill: 城市扩张监测

Security checks across malware telemetry and agentic risk

Overview

This skill mostly performs the advertised raster analysis, but its automatic download mode can produce misleading urban-expansion reports from raw satellite imagery.

Install only if you are comfortable with optional network downloads and local output creation. Prefer supplying your own validated before/after built-up rasters; avoid relying on the bbox/date auto-download mode for planning or policy decisions until it includes a proper built-up classification step and clearer dependency pinning.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (9)

eval() call detected

High
Category
Dangerous Code Execution
Content
# File existence (skip None to allow --synthetic mode)
    if not getattr(args, "synthetic", False):
        for flag, accessor in FILE_ARGS.items():
            path = eval(accessor)  # safe: only string concat
            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) # safe: only string concat

Intent-Code Divergence

High
Confidence
90% confidence
Finding
The skill claims to compare built-up area rasters, but the auto-download path fetches raw Landsat spectral assets and then feeds them into compute_expansion() as if they were built-up probability rasters. This semantic mismatch can produce materially incorrect outputs while presenting them as urban-expansion findings, which is dangerous in geospatial decision-support workflows because users may trust invalid results.

Context-Inappropriate Capability

Medium
Confidence
86% confidence
Finding
The skill includes remote search and download capability that can initiate outbound network access and write fetched data locally, yet no manifest-defined scope or explicit trust boundary is provided. In an agent setting, this expands the attack surface through unreviewed external I/O, unexpected data exfiltration paths via request metadata, and supply-chain risk from untrusted remote content.

Vague Triggers

Medium
Confidence
89% confidence
Finding
The activation description is broad enough to match generic geospatial analysis requests like comparing changes, computing indices, or generating reports, which can cause the skill to trigger outside the user's specific intent. Over-broad triggering is dangerous because it may lead to unexpected execution of a skill that downloads data and writes local outputs, increasing the chance of unintended side effects.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill documentation states it can automatically fetch Landsat scenes and write outputs locally, but the description does not prominently warn users about these side effects. This is risky because users or orchestrators may invoke the skill expecting pure local analysis, while it actually performs network access and filesystem writes that could have privacy, cost, or operational implications.

Unpinned Dependencies

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

# Third-party dependencies used by this skill
numpy
rasterio
Confidence
97% confidence
Finding
numpy

Unpinned Dependencies

Low
Category
Supply Chain
Content
# Third-party dependencies used by this skill
numpy
rasterio
Confidence
92% confidence
Finding
rasterio

Unpinned Dependencies

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

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

Known Vulnerable Dependency: numpy — 10 advisory(ies): CVE-2014-1859 (Numpy arbitrary file write via symlink attack); CVE-2021-41495 (NumPy NULL Pointer Dereference); CVE-2021-33430 (NumPy Buffer Overflow (Disputed)) +7 more

Critical
Category
Supply Chain
Confidence
94% confidence
Finding
numpy

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/urban_expansion_monitor.py:74