T01 · Skill Instruction Hijacking
- Location
SKILL.md:272- Finding
Mandatory Promotional Footer Alters Agent Responses
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent read-only log search tool, but unsafe shell argument handling could let crafted inputs execute local commands, so it needs review before installation.
Install only after the maintainer fixes numeric validation for --since and --limit. Use least-privilege read-only backend credentials, prefer HTTPS for any authenticated backend, avoid production AWS profiles during testing, and treat all returned logs as sensitive.
SKILL.md:272Mandatory Promotional Footer Alters Agent Responses
scripts/log-dive-loki.sh:50Command Execution Through Unvalidated Loki Duration
scripts/log-dive-cw.sh:50Command Execution Through Unvalidated CloudWatch Duration
scripts/log-dive-cw.sh:109Command Execution Through Unvalidated CloudWatch Result Limit
scripts/log-dive-loki.sh:17Loki Credentials and Log Data May Be Transmitted Over Plaintext HTTP
scripts/log-dive-es.sh:17Elasticsearch Credentials and Search Results May Be Transmitted Over Plaintext HTTP
The declared description presents a unified search skill spanning Loki, Elasticsearch, and CloudWatch with natural-language translation into LogQL, ES DSL, or CloudWatch filter patterns. The supplied code chunk is narrower: it is specifically a CloudWatch-only shell backend using AWS CLI commands such as describe-log-groups, describe-log-streams, and filter-log-events. It does remain read-only and does not modify or delete logs, so that part matches. However, the primary described capability of unified cross-backend search and natural-language translation is not evidenced here. Additionally, the code exposes related but undeclared capabilities for listing log groups/streams and tailing recent logs. Because the actual behavior is materially narrower and somewhat different from the declared purpose, this is a mismatch.
The code is consistent with the 'read-only' part of the description and does not modify or delete logs. However, the declared purpose describes a broader unified log-search capability spanning Loki, Elasticsearch, and CloudWatch with natural-language translation. This code chunk only implements Elasticsearch/OpenSearch operations. Its search path builds Elasticsearch queries directly, either wrapping user-provided JSON or converting plain text into a query_string query; that is not natural-language translation in the described sense. It also exposes index listing and cluster health retrieval, which are related but broader than log search. Therefore the description overstates and partially misrepresents what this code chunk actually does.
The code is consistent with the read-only portion of the description: it queries Loki and lists/tails logs without modifying or deleting data. However, the declared purpose says the skill provides unified log search across Loki, Elasticsearch, and CloudWatch and translates natural language queries into LogQL, ES DSL, or CloudWatch filter patterns. This code chunk only supports Loki and expects an explicit query string; there is no evidence of Elasticsearch support, CloudWatch support, or natural-language translation. Additionally, it includes tail mode for live/recent log streaming, which is adjacent to log search but not clearly captured by the stated description. Therefore the description overstates the implemented capabilities in this supplied code chunk.
The code is broadly related to unified log access across Loki, Elasticsearch, and CloudWatch, and it appears read-only, consistent with the non-destructive claim. However, the declared description emphasizes natural-language query translation, which is not present in this code chunk; the script requires a backend-specific --query and simply dispatches to per-backend scripts. Additionally, the script includes undeclared capabilities such as live tailing, backend detection/status reporting, and listing labels/indices/log groups. These are material behavior differences from the declared purpose, so this should be flagged as a mismatch.
Without declared permissions the skill's intent is opaque and cannot be validated.
The CloudWatch testing instructions encourage use of real AWS credentials and live log queries but do not warn that the commands may access production or sensitive log data, incur cloud costs, or expose private operational information in terminal output. In the context of a log-search skill, this is more dangerous because the feature is explicitly designed to retrieve potentially sensitive logs across environments.
Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.
Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.
This Docker instruction pulls localstack/localstack without an explicit version tag or digest, which makes test execution non-reproducible and exposes users to supply-chain risk if the upstream image changes unexpectedly. In a testing guide, this can lead to silently running different code over time, including code with new vulnerabilities or malicious compromise of the tag.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
local url="${ELASTICSEARCH_URL%/}${path}"
if [[ -n "$data" ]]; then
curl "${curl_args[@]}" -d "$data" "$url" 2>&1
else
curl "${curl_args[@]}" "$url" 2>&1
fi
The manifest frames the skill as a unified log search tool. The list_indices command enumerates available indices and returns health, status, document counts, and storage size, which is additional discovery/administration-oriented functionality beyond executing log searches.
The manifest describes a read-only log search capability across backends, centered on translating natural-language queries into backend-specific search syntax. The cluster_health command queries Elasticsearch cluster status and node/shard metadata, which is operational infrastructure introspection rather than log search behavior.
No suspicious patterns detected.