Back to skill

Security audit

geoskill-riparian-buffer-analysis

Security checks across malware telemetry and agentic risk

Overview

This skill needs Review because it advertises local riparian-buffer analysis but bundles under-disclosed credential and network helpers and can generate misleading results from synthetic land-cover data.

Review before installing. Use only in a contained environment, do not rely on --input results for real environmental decisions unless real LULC input handling is fixed, and remove or audit the bundled credential/network modules and hardcoded credentials. Pin dependencies before production use.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (15)

Lp3

Medium
Category
MCP Least Privilege
Confidence
83% confidence
Finding
The skill documentation declares an offline/local geospatial analysis purpose, yet the detected capabilities include network, shell, environment access, and file read/write without any corresponding permissions disclosure. This creates a transparency and trust boundary problem: users may run a skill expecting only local raster processing while the implementation can access local files, execute commands, and communicate externally.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding
The documented behavior is narrow geospatial buffer analysis, but the detected implementation apparently includes geocoding, generic HTTP download logic, sensor/product registries, and credential handling for multiple external services including reading ~/.netrc and ~/.geoskill/secrets.json plus fallback credentials. That mismatch is dangerous because it can conceal data exfiltration paths, unexpected remote access, and secret harvesting far beyond the user's reasonable expectations for this skill.

Description-Behavior Mismatch

Medium
Confidence
96% confidence
Finding
The vendored metadata claims the embedded core came from a different skill, 'landsat-download', while this package presents itself as a riparian-buffer-analysis skill. That mismatch breaks provenance and makes it hard to verify that the bundled code actually matches the advertised purpose, increasing supply-chain and hidden-functionality risk even if the code hashes are present.

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
In --input mode, the code reads only a DEM from the provided GeoTIFF and then calls generate_synthetic(...) to fabricate the LULC layer instead of using user-supplied land-cover data. This creates materially false analytical outputs while presenting them as real riparian-buffer integrity results, which is dangerous in geospatial decision-making because users may trust incorrect environmental assessments for planning, compliance, or restoration actions.

Missing User Warnings

Medium
Confidence
78% confidence
Finding
The module sends user-provided place names to external geocoding providers (Open-Meteo and optionally Nominatim) without any user-facing notice or consent mechanism in this code path. In geospatial workflows, place queries can reveal sensitive locations of interest, creating a real privacy and data-disclosure risk even if the destination services are legitimate.

Missing User Warnings

High
Confidence
99% confidence
Finding
The module contains hardcoded fallback credentials for NASA Earthdata, including a plaintext username and password. Even if intended as a fallback, embedding real credentials in source code risks immediate credential compromise, unauthorized account use, reuse attacks against other services, and accidental propagation into forks, logs, packages, or model contexts.

Credential Access

High
Category
Privilege Escalation
Content
_DEFAULTS: dict[str, str] = {
    "EARTHDATA_USERNAME": "ruiduobao",
    "EARTHDATA_PASSWORD": "Ruiduobao123",
    "EARTHDATA_TOKEN": "",  # 用户级 secrets.json 提供(不走默认值以免推到 GitHub)
    "FIRMS_MAP_KEY": "",
    "CMA_API_KEY": "",
    "OPENAI_API_KEY": "",
Confidence
98% confidence
Finding
secrets.json

Unpinned Dependencies

Low
Category
Supply Chain
Content
numpy
rasterio
scipy
geopandas
Confidence
97% confidence
Finding
numpy

Unpinned Dependencies

Low
Category
Supply Chain
Content
numpy
rasterio
scipy
geopandas
shapely
Confidence
97% confidence
Finding
rasterio

Unpinned Dependencies

Low
Category
Supply Chain
Content
numpy
rasterio
scipy
geopandas
shapely
Confidence
97% confidence
Finding
scipy

Unpinned Dependencies

Low
Category
Supply Chain
Content
numpy
rasterio
scipy
geopandas
shapely
Confidence
96% confidence
Finding
geopandas

Unpinned Dependencies

Low
Category
Supply Chain
Content
rasterio
scipy
geopandas
shapely
Confidence
96% confidence
Finding
shapely

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
86% confidence
Finding
numpy

Known Vulnerable Dependency: scipy — 4 advisory(ies): CVE-2013-4251 (SciPy creates insecure temporary directories); CVE-2013-4251 (The scipy.weave component in SciPy before 0.12.1 creates insecure temporary dire); CVE-2023-25399 (A refcounting issue which leads to potential memory leak was discovered in scipy) +1 more

High
Category
Supply Chain
Confidence
85% confidence
Finding
scipy

Known Vulnerable Dependency: geopandas — 2 advisory(ies): CVE-2025-69662 (geopandas SQL Injection Vulnerability in to_postgis() Allows Information Disclos); CVE-2025-69662 (SQL injection vulnerability in geopandas before v.1.1.2 allows an attacker to ob)

Critical
Category
Supply Chain
Confidence
80% confidence
Finding
geopandas

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
tests/conftest.py:15