Back to skill

Security audit

Geoskill: Harmful Algal Bloom Monitor

Security checks across malware telemetry and agentic risk

Overview

The skill is not clearly malicious, but it can generate operational-looking algal bloom reports from synthetic data even when a user expects local or downloaded imagery to be analyzed.

Use this skill only for demonstrations or exploratory workflow checks unless you first verify that real imagery is actually ingested and labeled in the outputs. Do not rely on its reports for environmental, safety, regulatory, or operational decisions as-is. Review network use before providing sensitive AOI/date parameters, and prefer pinned dependencies for reproducible installs.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • 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
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (8)

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

Lp3

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding
The skill documents file read/write behavior but does not declare corresponding permissions, which weakens user awareness and platform policy enforcement. Even if the operations are expected for producing reports and manifests, undeclared capabilities can enable broader filesystem access than users anticipate.

Tp4

High
Category
MCP Tool Poisoning
Confidence
81% confidence
Finding
The documented purpose emphasizes bloom monitoring, but the skill also performs remote data acquisition, synthetic data generation, and writes multiple operational metadata files. This mismatch can mislead users about network activity, data provenance, and artifact creation, increasing the chance of unreviewed external access or unintended disclosure through manifests.

Description-Behavior Mismatch

High
Confidence
92% confidence
Finding
The pipeline claims to analyze real remote-sensing inputs but silently falls back to synthetic demo data when file-based input is unimplemented, producing authoritative-looking outputs from fabricated data. In an environmental monitoring and alerting context, this is dangerous because it can mislead operators into making real-world decisions based on false analyses, undermining integrity and trust rather than confidentiality.

Intent-Code Divergence

Medium
Confidence
85% confidence
Finding
The code knowingly downloads Sentinel-2 L2A even though the documented/spec-required source is Sentinel-3 OLCI, creating a data provenance and semantic mismatch between expected and actual analysis inputs. In this domain, that can yield scientifically invalid outputs while presenting them as compliant monitoring results, which is an integrity problem with operational consequences.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The markdown describes automatic remote data download without an explicit network/privacy warning, so users may trigger outbound requests and transfer AOI/date parameters to a third-party service without informed consent. In geospatial workflows, location bounds can be sensitive, and silent network behavior increases privacy and compliance risk.

Unpinned Dependencies

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

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

Unpinned Dependencies

Low
Category
Supply Chain
Content
# Requirements for harmful-algal-bloom-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
94% confidence
Finding
geoskill-data-fetcher>=0.2.0

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/harmful_algal_bloom_monitor.py:1082