Back to skill

Security audit

Geoskill: Drone Survey QC

Security checks across malware telemetry and agentic risk

Overview

The skill is mostly a drone-survey QC tool, but it can download public satellite imagery and treat it as an orthomosaic without strong provenance labeling, which could mislead users about what was actually checked.

Install only if you are comfortable with an optional network-enabled mode that may contact Microsoft Planetary Computer using the area/date you provide and cache/download imagery locally. For actual UAV deliverable acceptance, prefer supplying explicit local orthomosaic/DSM/control-point files, and treat bbox/date remote results as reference imagery rather than proof that the drone deliverables passed QC.

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 (13)

eval() call detected

High
Category
Dangerous Code Execution
Content
"""Validate file existence and numeric ranges.
    Returns exit code (0 = ok, 2 = arg error)."""
    for flag, accessor in FILE_ARGS.items():
        path = eval(accessor)  # safe: only string concat
        if path is not None and not Path(str(path)).exists():
            print(f"ERROR: --{flag.replace('_', '-')} not found: {path}", file=sys.stderr)
            return 2
Confidence
90% confidence
Finding
path = eval(accessor) # safe: only string concat

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding
The skill is presented as a local QC tool for user-supplied drone deliverables, but it also advertises autonomous remote data acquisition from Microsoft Planetary Computer using bbox/date inputs. This behavior expansion changes the trust boundary, introduces network access and third-party data handling not reflected in the core description, and could cause unexpected external communication or analysis of unintended data sources.

Description-Behavior Mismatch

Medium
Confidence
91% confidence
Finding
The documentation states the skill performs QC on provided drone-survey deliverables, then later adds an autonomous download path for external remote sensing data. That inconsistency can mislead users about what the skill will do and what data leaves the local environment, increasing the risk of unexpected network activity and policy violations in restricted environments.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
Fetching remote datasets from an external service is not necessary for a skill whose stated purpose is quality control of already-delivered drone survey outputs. Unnecessary external acquisition broadens attack surface, may create data provenance confusion, and can cause users to trust results generated from unrelated downloaded imagery instead of their actual deliverables.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
The skill is described as performing local QA on drone survey deliverables, but the requirements include a shared data-download library explicitly associated with external sources. That mismatch expands the attack surface by enabling unnecessary network access and data ingestion paths that are not justified by the stated purpose, which is risky in an agent skill where hidden fetch behavior could exfiltrate data or pull untrusted content.

Intent-Code Divergence

Low
Confidence
84% confidence
Finding
The dependency comment explicitly advertises external data-download behavior that conflicts with the skill's QA-only description. Even if no malicious behavior is proven from this file alone, this inconsistency is a security-relevant signal because it can conceal undeclared network functionality and weaken operator trust and policy enforcement.

Description-Behavior Mismatch

Medium
Confidence
87% confidence
Finding
The skill is described as UAV/drone deliverable QC, but it can silently substitute remote Sentinel-2 satellite bands as an 'orthomosaic' when bbox/date arguments are provided. This creates integrity and provenance risk: users may believe they are validating survey deliverables while the tool analyzes unrelated remote imagery, leading to incorrect QA outputs and potentially unsafe operational decisions.

Context-Inappropriate Capability

Medium
Confidence
88% confidence
Finding
The code includes remote search and download capability for external imagery assets, which is unnecessary for an offline QC tool and expands the attack surface. Network-enabled acquisition can introduce data exfiltration, unexpected dependency behavior, supply-chain risk from fetched content, and non-deterministic processing of untrusted remote data.

Intent-Code Divergence

Medium
Confidence
84% confidence
Finding
The function claims to download an orthomosaic but actually fetches Sentinel-2 spectral bands, which are not equivalent to a user survey orthomosaic. This semantic mismatch is a security-relevant integrity flaw because downstream QA results can be materially misleading while appearing authoritative.

Unpinned Dependencies

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

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

Unpinned Dependencies

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

Unpinned Dependencies

Low
Category
Supply Chain
Content
# Requirements for drone-survey-qc
# 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
90% confidence
Finding
numpy

VirusTotal

65/65 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

Detected: suspicious.dynamic_code_execution

Dynamic code execution detected.

Critical
Code
suspicious.dynamic_code_execution
Location
scripts/drone_survey_qc.py:95