Elasticsearch

Security checks across malware telemetry and agentic risk

Overview

The skill is a coherent Elasticsearch/Kibana helper, but it gives an agent broad live data and admin powers without enough built-in safety checks.

Install only if you are comfortable letting an agent generate and run Elasticsearch/Kibana API calls. Use least-privilege, task-specific API keys, prefer read-only keys for search, avoid production admin credentials, keep secrets out of shell profiles and transcripts, and manually approve any DELETE, bulk write, reindex, alias, ILM, cluster-setting, dashboard import/export, saved-object delete, or alert-rule change.

SkillSpector

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

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill documents destructive operations such as deleting documents and indices, reindexing, and alias changes without requiring an explicit confirmation step or warning about irreversible data loss. In an agent setting, these examples can be copied or executed directly against production clusters, increasing the chance of accidental destructive actions.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
The skill instructs users to place API keys in environment variables and send them in Authorization headers, but provides no privacy warning about shell history, process exposure, terminal logging, or accidental disclosure in transcripts. While authenticated API use is expected for Elasticsearch, omitting handling guidance increases secret leakage risk in shared or instrumented environments.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The file includes destructive index deletion commands, including a wildcard delete example, without strong, explicit guidance about irreversible data loss, scope verification, and operator confirmation. In an agent skill that helps users interact with live Elasticsearch clusters, such examples can be copied directly into production workflows and lead to accidental mass deletion of indices.

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# All requests follow this pattern:
curl -s "${ES_URL%/}/<endpoint>" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '<json-body>'
```
Confidence
97% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
If the user provides a URL and key, export them as `ES_URL` and `ES_API_KEY` before running commands.

**Important — variable expansion in curl:**
- Always use `$(printenv ES_API_KEY)` instead of `$ES_API_KEY` in curl headers. The `$ES_API_KEY` variable may not expand correctly in the shell, resulting in empty `Authorization` headers and 401 errors.
- Always use `${ES_URL%/}` to strip any trailing slash from the URL, preventing double-slash path issues (e.g., `//_cluster/health`).

## Quick Health Check
Confidence
98% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
```bash
# Cluster health (green/yellow/red) — NOT available on serverless
curl -s "${ES_URL%/}/_cluster/health" -H "Authorization: ApiKey $(printenv ES_API_KEY)" | jq .

# Node stats summary — NOT available on serverless
curl -s "${ES_URL%/}/_cat/nodes?v&h=name,heap.percent,ram.percent,cpu,load_1m,disk.used_percent"  \
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Node stats summary — NOT available on serverless
curl -s "${ES_URL%/}/_cat/nodes?v&h=name,heap.percent,ram.percent,cpu,load_1m,disk.used_percent"  \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)"

# Index overview (works on both serverless and traditional)
curl -s "${ES_URL%/}/_cat/indices?v&s=store.size:desc&h=index,health,status,docs.count,store.size" \
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Index overview (works on both serverless and traditional)
curl -s "${ES_URL%/}/_cat/indices?v&s=store.size:desc&h=index,health,status,docs.count,store.size" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)"
```

**Serverless Elasticsearch:** If you get `api_not_available_exception` errors, the cluster is running in serverless mode. The following APIs are **not available** in serverless:
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
```bash
# Simple match query
curl -s "${ES_URL%/}/my-index/_search" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{
    "query": { "match": { "message": "error timeout" } },
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Bool query (must + filter + must_not)
curl -s "${ES_URL%/}/my-index/_search" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{
    "query": {
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
```bash
# Create index with mappings
curl -s -X PUT "${ES_URL%/}/my-index" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{
    "settings": { "number_of_shards": 1, "number_of_replicas": 1 },
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Index a document (auto-generate ID)
curl -s -X POST "${ES_URL%/}/my-index/_doc" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{ "message": "hello world", "@timestamp": "2026-01-31T12:00:00Z", "level": "info" }'
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Index with specific ID
curl -s -X PUT "${ES_URL%/}/my-index/_doc/doc-123" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{ "message": "specific doc", "level": "warn" }'
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
-d '{ "message": "specific doc", "level": "warn" }'

# Get document
curl -s "${ES_URL%/}/my-index/_doc/doc-123" -H "Authorization: ApiKey $(printenv ES_API_KEY)" | jq .

# Update document (partial)
curl -s -X POST "${ES_URL%/}/my-index/_update/doc-123" \
Confidence
93% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Update document (partial)
curl -s -X POST "${ES_URL%/}/my-index/_update/doc-123" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{ "doc": { "level": "error" } }'
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Delete document
curl -s -X DELETE "${ES_URL%/}/my-index/_doc/doc-123" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)"

# Bulk operations (newline-delimited JSON)
curl -s -X POST "${ES_URL%/}/_bulk" \
Confidence
95% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Bulk operations (newline-delimited JSON)
curl -s -X POST "${ES_URL%/}/_bulk" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/x-ndjson" \
  --data-binary @- << 'EOF'
{"index":{"_index":"my-index"}}
Confidence
95% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
```bash
# Terms aggregation (top values)
curl -s "${ES_URL%/}/my-index/_search?size=0" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{
    "aggs": {
Confidence
93% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Date histogram + nested metric
curl -s "${ES_URL%/}/my-index/_search?size=0" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{
    "query": { "range": { "@timestamp": { "gte": "now-24h" } } },
Confidence
93% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
```bash
# Get mapping
curl -s "${ES_URL%/}/my-index/_mapping" -H "Authorization: ApiKey $(printenv ES_API_KEY)" | jq .

# Add field to existing mapping (mappings are additive — you can't change existing field types)
curl -s -X PUT "${ES_URL%/}/my-index/_mapping" \
Confidence
93% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Add field to existing mapping (mappings are additive — you can't change existing field types)
curl -s -X PUT "${ES_URL%/}/my-index/_mapping" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{ "properties": { "new_field": { "type": "keyword" } } }'
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Reindex (change mappings, rename index, etc.)
curl -s -X POST "${ES_URL%/}/_reindex" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{
    "source": { "index": "old-index" },
Confidence
95% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
}'

# Delete index
curl -s -X DELETE "${ES_URL%/}/my-index" -H "Authorization: ApiKey $(printenv ES_API_KEY)"

# Index aliases
curl -s -X POST "${ES_URL%/}/_aliases" \
Confidence
96% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Index aliases
curl -s -X POST "${ES_URL%/}/_aliases" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{
    "actions": [
Confidence
94% confidence
Finding
printenv ES_API_KEY

Env Variable Harvesting

High
Category
Data Exfiltration
Content
# Index templates (for time-series / rollover patterns)
curl -s -X PUT "${ES_URL%/}/_index_template/my-template" \
  -H "Authorization: ApiKey $(printenv ES_API_KEY)" \
  -H "Content-Type: application/json" \
  -d '{
    "index_patterns": ["logs-*"],
Confidence
94% confidence
Finding
printenv ES_API_KEY

VirusTotal

66/66 vendors flagged this skill as clean.

View on VirusTotal