Back to skill

Security audit

Geoskill: Nature Risk TNFD

Security checks across malware telemetry and agentic risk

Overview

The skill is mostly a TNFD screening tool, but it has an under-disclosed auto-download mode that can fetch remote imagery and then fall back to synthetic results instead of analyzing real asset data.

Review this before installing. Use local GeoJSON/CSV assets for meaningful screening, avoid the bbox/date auto-download mode unless you accept remote network access and local downloads, and treat any output generated without a valid asset file as demo/synthetic rather than audit evidence. Pin dependencies before production use.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

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
95% confidence
Finding
path = eval(accessor) # safe: only string concat

Lp3

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding
The skill documents file read/write behavior yet declares no permissions, creating a transparency and policy-enforcement gap. In an agent environment, undeclared filesystem access can bypass user expectations and platform controls, increasing the chance of unintended data exposure or modification.

Tp4

High
Category
MCP Tool Poisoning
Confidence
93% confidence
Finding
The documented purpose presents a local TNFD screening tool, but the skill also appears to support remote data acquisition and a materially different workflow using bbox/date-range inputs and synthetic/demo data. This mismatch is dangerous because operators may approve or run the skill under incorrect assumptions about network access, data provenance, and evidentiary quality, leading to unauthorized external calls or misleading compliance outputs.

Intent-Code Divergence

Medium
Confidence
88% confidence
Finding
The Chinese-only section introduces automatic remote downloading behavior that contradicts the earlier documented CLI and output model. Hidden or inconsistently documented capabilities are risky in security review because they can conceal network activity and alternate execution paths from users and reviewers who rely on the primary documentation.

Description-Behavior Mismatch

Medium
Confidence
90% confidence
Finding
The documentation expands the skill from local analysis into automatic remote geodata acquisition, exceeding the manifest's stated purpose. Scope expansion without corresponding permission and behavior disclosure increases the risk of unauthorized network use, unexpected data transfer, and policy noncompliance in restricted environments.

Description-Behavior Mismatch

High
Confidence
92% confidence
Finding
The auto-download path fetches Sentinel-2 imagery and assigns the downloaded file to args.assets, but the rest of the pipeline only knows how to parse GeoJSON or CSV asset inputs. This silent type mismatch can cause the tool to fall back to synthetic assets or produce misleading outputs, creating integrity and trust failures in an audit-oriented risk screening workflow.

Intent-Code Divergence

Medium
Confidence
86% confidence
Finding
The docstring and function purpose imply downloading assets for screening, but the function actually downloads Sentinel-2 scene files and mutates the asset input path. This is dangerous because operators may trust the function's name and documentation, leading to incorrect assumptions about what data was screened and what evidence the outputs represent.

Missing User Warnings

Medium
Confidence
84% confidence
Finding
The script can initiate network access and create local files automatically when bbox/date arguments are present, without a clear user-facing confirmation step. In an agent skill context, implicit networked behavior increases supply-chain, privacy, cost, and provenance risks because callers may not realize external data is being fetched and persisted.

Unpinned Dependencies

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

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

Unpinned Dependencies

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

Unpinned Dependencies

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

# Third-party dependencies used by this skill
numpy
Confidence
96% 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
89% 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/nature_risk_tnfd.py:90