Back to skill

Security audit

AMG Storage Account Health Check

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a legitimate Azure Storage health-check skill, but its setup and fallback instructions expose sensitive credentials and allow broader local execution than the task needs.

Review before installing. Use a least-privileged Grafana service account, avoid pasting bearer tokens directly into shell commands if a safer secret mechanism is available, rotate any token that may have been exposed through command history, and treat generated reports, IP addresses, user agents, URIs, and subscription IDs as sensitive operational data.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:20
Finding

Grafana Service-Account Token Exposed Through Command-Line Arguments

Content
View full analysis
/api/azure-mcp","transport":"streamable-http","headers":{"Authorization":"Bearer "}}' ``` ```text Replace `` with your Azure Managed Grafana endpoint and `` with a valid Grafana service-account token (starts with `glsa_`). ``` ### Technical Analysis The setup instructions require users to substitute a Grafana service-account bearer token directly into a shell command. Consequently, the token becomes part of the command-line text. Depending on the operating-system and shell configuration, the secret may be: - Persisted in shell history. - Visible temporarily through process inspection facilities. - Captured by terminal logging or command auditing systems. - Accidentally copied into support logs, documentation, or shared transcripts. The project does not contain a hard-coded credential, but it prescribes an insecure method for supplying a sensitive credential. A Grafana service-account token should be treated as a reusable secret because possession of it may be sufficient to authenticate to the configured Grafana endpoint. ### Attack Path 1. A user follows the documented setup procedure and replaces `` with a valid Grafana service-account token. 2. The shell records the complete command in its history, or a local monitoring process captures the command-line text. 3. A local user or process with access to that history, audit trail, terminal log, or process metadata retrieves the token. 4. The attacker identifies the Grafana endpoint from the same command. 5. The attacker submits authenticated requests using the recovered bearer token. 6. The attacker gains whatever Grafana and Azure-observability access has been grante ...[truncated 722 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:7
Finding

Overly Broad Node.js Execution Permission Violates Least Privilege

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (5)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly instructs the agent to create and update persistent local files under memory/amg-check-storage-account/ for configuration and ongoing reports, but it does not require an upfront user warning or explicit consent before modifying local state. This can surprise users, create unintended retention of operational data, and persist sensitive environment details such as subscription IDs or historical findings across sessions.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The query explicitly groups and ranks authentication failures by CallerIpAddress, UserAgentHeader, and AuthenticationType, which can expose sensitive requester metadata to anyone running the skill without any warning, minimization, or role-based restriction in the documentation. In this skill’s fleet-wide health-check context, the data may span many storage accounts and users across a subscription, increasing privacy and reconnaissance risk beyond what is needed for a routine health investigation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The 404 analysis and slow-operation queries surface full resource URIs and related object identifiers, which can disclose container names, blob paths, and missing-object references without any warning about sensitivity. In a cross-account deep-dive skill, this broadens the blast radius by exposing internal resource structure and naming conventions that could aid reconnaissance or leak tenant-specific data patterns.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The guidance tells the operator to save potentially large results to a temp file and then invoke local interpreters (node, python, jq, pwsh) and approve a Bash prompt. That expands the skill's behavior from Azure monitoring into local code execution and shell access, creating unnecessary risk if data is malformed, attacker-influenced, or if ad hoc commands are constructed unsafely during troubleshooting.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The instructions direct writing result data to a temporary file and executing an interpreter without any explicit user warning about local file creation or code execution. Even if intended for handling oversized outputs, this can lead to sensitive cloud data being written locally and normalized into unsafe manual execution patterns that exceed the skill's stated purpose.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.