Back to skill

Security audit

Geoskill: NASA Dataset Download

Security checks for vulnerabilities and agentic risk

Overview

The skill’s NASA download purpose is coherent, but its documentation shows realistic plaintext Earthdata credentials and its optional QA output records credential-state metadata.

Install only if you are comfortable with the skill using NASA Earthdata credentials from environment variables, ~/.geoskill/secrets.json, or ~/.netrc. Prefer a bearer token or secure secret manager, do not copy the documented plaintext password example, rotate any real credential matching that example, and avoid sharing QA sidecar files because they can disclose credential locations and download context.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (8)

Context-Inappropriate Capability

Medium
Confidence
95% confidence
Finding
The documentation instructs users to store an Earthdata password in plaintext in a local secrets file even though the skill already supports bearer tokens. Normalizing plaintext password storage increases the chance of credential theft from disk, backups, screenshots, shared home directories, or accidental commits.

Missing User Warnings

High
Confidence
97% confidence
Finding
Including example credentials with a realistic plaintext password trains users to handle secrets unsafely and may even expose a real credential if the sample was not fabricated. In a skill whose purpose is remote authenticated download, poor secret-handling guidance materially raises the risk of account compromise and unauthorized access to associated data services.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The QA sidecar persists `describe_credentials()` output to disk alongside command metadata. Even if it does not store raw secrets, it reveals authentication presence, source locations, and operational context that can aid local attackers, incident responders, or log collectors in discovering where valid credentials exist.

Ssd 3

High
Confidence
96% confidence
Finding
The documentation explicitly shows secret-bearing fields and a plaintext password, which can normalize credential disclosure and encourage copy/paste of sensitive values into insecure locations. Because this skill authenticates to external services, the context makes secret exposure more serious: leaked credentials could enable unauthorized downloads or account abuse.

Ssd 3

Medium
Confidence
91% confidence
Finding
The sidecar combines command arguments, timestamps, output locations, result counts, and credential-state details into a single JSON artifact. That creates a practical data-leak path because the file can be copied, indexed, or uploaded, exposing sensitive operational context about authenticated data access.

Credential Access

High
Category
Privilege Escalation
Content
1. `EARTHDATA_USERNAME` / `EARTHDATA_PASSWORD` / `EARTHDATA_TOKEN` env vars
2. `~/.geoskill/secrets.json` (user-level, **not** vendored)
3. `~/.netrc` entries (`machine urs.earthdata.nasa.gov`)
4. Skill defaults

**Bearer token is preferred** for CMR / LP DAAC earthdata cloud / GES DISC
Confidence
86% confidence
Finding
Reading credentials from `~/.netrc` is a credential-access behavior that expands the set of local secrets the skill may consume. While common for CLI tooling, it increases the blast radius if the skill is invoked unexpectedly or if users are unaware that credentials from another workflow may be picked up automatically.

Credential Access

High
Category
Privilege Escalation
Content
---
name: nasa-dataset-download
description: 'Download any NASA Earth observation dataset (HDF / NetCDF / GeoTIFF) end-to-end. Wraps the official earthaccess library to authenticate with NASA Earthdata Login and bulk-download granules from MODIS, VIIRS, GPM, Sentinel, SMAP, ASTER, etc. Supports BBox + temporal window filtering and QA sidecars. Default credentials are loaded from ~/.geoskill/secrets.json (NASA Earthdata bearer token). 0.2.0: alias map (description → short_name), multi-word search, --dry-run, proper exit codes (5 on 0 results), accurate --max-files, fixed granule display.'
---

# nasa-dataset-download
Confidence
82% confidence
Finding
The skill advertises default loading of credentials from `~/.geoskill/secrets.json`, which is legitimate for functionality but still represents access to sensitive local material. In the context of a skill ecosystem, implicit secret loading can surprise users and may expose more credentials than needed if multiple skills share one secrets file.

Credential Access

High
Category
Privilege Escalation
Content
AppEEARS, Worldview). Resolution order:

1. `EARTHDATA_USERNAME` / `EARTHDATA_PASSWORD` / `EARTHDATA_TOKEN` env vars
2. `~/.geoskill/secrets.json` (user-level, **not** vendored)
3. `~/.netrc` entries (`machine urs.earthdata.nasa.gov`)
4. Skill defaults
Confidence
88% confidence
Finding
The documented credential resolution order includes environment variables and a shared secrets file, which is expected but security-relevant because it grants the skill access to locally stored authentication data. The danger is not maliciousness in the docs, but that broad automatic credential discovery can lead to unintended account use or secret exposure through logs/errors if poorly implemented.

Static analysis

No suspicious patterns detected.