Back to skill

Security audit

Geoskill: Construction Progress Monitor

Security checks across malware telemetry and agentic risk

Overview

The skill's documentation and code do not line up: it advertises satellite-based construction analysis, but its normal workflow generates simulated results and has under-scoped network downloading.

Review before installing. Do not rely on this skill for audits, compliance, payments, or operational decisions unless the publisher fixes the workflow to analyze real imagery, clearly separates demo/synthetic mode, and documents network downloads and cache/output behavior. Prefer a pinned dependency set and require explicit user approval before remote data fetching.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (14)

eval() call detected

High
Category
Dangerous Code Execution
Content
Returns exit code (0 = ok, 2 = arg error)."""
    # File existence
    for flag, accessor in FILE_ARGS.items():
        path = eval(accessor)
        if path is None or path == "":
            continue
        if not Path(str(path)).exists():
Confidence
97% confidence
Finding
path = eval(accessor)

Lp3

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding
The skill documents file read/write capabilities via CLI inputs and generated outputs, but does not declare permissions or boundaries for those actions. Undeclared filesystem access weakens transparency and policy enforcement, making it easier for an agent or user to invoke the skill with unexpected paths and causing data exposure or overwrite risks.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
The documented purpose is remote-sensing-based construction monitoring, but the analyzed behavior reportedly performs undeclared network downloads and synthetic/demo data generation while ignoring actual imagery content. This mismatch is dangerous because users may trust the outputs as evidence-based analysis when they are simulated or fetched through undeclared channels, leading to silent integrity failures and unexpected data egress.

Intent-Code Divergence

Medium
Confidence
89% confidence
Finding
The documentation introduces an automatic download workflow using bbox/date-range parameters that is inconsistent with the earlier CLI and manifest, which describe local monitoring inputs. Inconsistent interfaces can cause operators and calling agents to trigger undocumented network behavior or pass unsupported arguments, undermining trust and safe execution controls.

Description-Behavior Mismatch

Medium
Confidence
84% confidence
Finding
The skill documentation broadens scope from image-based monitoring to automatic remote satellite-data acquisition, which is a materially different capability with privacy, compliance, and network-security implications. Scope expansion without explicit declaration can bypass user expectations and agent policy checks designed around a narrower, offline analysis tool.

Description-Behavior Mismatch

High
Confidence
99% confidence
Finding
The skill advertises satellite-imagery-based monitoring but the core workflow fabricates project progression and synthetic spectral values instead of analyzing imagery. This is dangerous because downstream users may rely on false outputs for compliance, auditing, or operational decisions, and the deception is amplified by the security-sensitive context of infrastructure monitoring.

Intent-Code Divergence

Medium
Confidence
96% confidence
Finding
auto_download_image() unexpectedly overwrites args.projects with the downloaded image path, even though the function claims only to set args.image. This can corrupt control flow, cause the raster to be treated as a GeoJSON projects file, and lead to incorrect processing or denial of service through repeated validation/parse failures.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The markdown states that the skill can automatically download remote data without warning users about network access or external data transfer. Silent outbound requests are risky in agent environments because they may leak user-supplied AOIs, schedules, or usage patterns to third-party services and violate network restrictions.

Missing User Warnings

Medium
Confidence
83% confidence
Finding
The script can automatically fetch remote data and write downloaded assets locally without a strong explicit warning or opt-in confirmation beyond argument combinations. In agent or automated environments, silent network access and file creation can violate operator expectations, trigger unwanted egress, and enlarge the attack surface through remote content ingestion.

Unpinned Dependencies

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

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

Unpinned Dependencies

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

Unpinned Dependencies

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

Unpinned Dependencies

Low
Category
Supply Chain
Content
# Requirements for construction-progress-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
71% 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/construction_progress_monitor.py:90