Back to skill

Security audit

Meeting Notes Summarizer

Security checks for vulnerabilities and agentic risk

Overview

This meeting summarizer does what it claims, but it sends full meeting transcripts to Anthropic and handles the API key in a way users should review before installing.

Install only if you are comfortable sending meeting transcripts to Anthropic for processing. Avoid using it for confidential, regulated, customer, legal, HR, or security-sensitive meetings unless your organization permits that data flow, and use a dedicated Anthropic API key with spending limits and rotation.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
summarize.sh:35
Finding
Anthropic API Key Exposed Through Process Arguments## Vulnerability Details **File Location**: `summarize.sh`, lines 35–47 **Vulnerability Type**: Secret exposure through command-line arguments **Risk Level**: Medium ### Vulnerable Code ```bash RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \ -H "content-type: application/json" \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d "{ \"model\": \"claude-sonnet-4-20250514\", \"max_tokens\": 1500, \"messages\": [{ \"role\": \"user\", \"content\": $FULL_CONTENT }] }" 2>/dev/null) ``` ### Technical Analysis The `ANTHROPIC_API_KEY` environment variable is expanded into curl's `-H` command-line argument. Consequently, the complete `x-api-key` header can appear in curl's process argument vector while the request is in progress. On systems where process arguments are visible to other users or processes through tools such as `ps` or interfaces such as `/proc/<pid>/cmdline`, a local attacker may observe and recover the credential. Exploitation depends on the operating system's process-isolation configuration, the attacker's local access, and their ability to inspect the process during the relatively short request window. This is an insecure secret-handling practice rather than evidence of intentional credential theft. The credential is sent only to the documented Anthropic API endpoint, which is necessary for the declared API-backed summarization functionality. ### Attack Path 1. A victim configures `ANTHROPIC_API_KEY` and invokes `summarize.sh`. 2. The script expands the credential into the `x-api-key` curl header argument. 3. While curl is running, a local attacker repeatedly monitors process argument vectors. 4. If process arguments are visible under the host's access-control policy, the attacker extracts the API key from the header argument. 5. The attacker reuses the key to submit unauthorized requests to the Anthropic API unt ...[truncated 513 chars]
Remediation
## Remediation Suggestions - Do not place authentication secrets directly in command-line arguments. - Provide the sensitive header through a permission-restricted curl configuration supplied by a protected file descriptor or temporary file, where supported. - If a temporary file is unavoidable, create it with permissions limited to the current user, install an `EXIT` trap before writing the secret, and remove the file on every exit path. - Run the Skill under a dedicated, least-privileged account and configure the host to restrict cross-user process inspection. - Use a dedicated API key with minimum required permissions, provider-side spending limits, monitoring, and regular rotation. - Revoke and replace the key immediately if process monitoring or logs may have captured it. - Explicitly document that meeting transcripts are transmitted to `https://api.anthropic.com/v1/messages`, because transcripts may contain confidential business or personal information.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (9)

Ae1

High
Category
analysis-evasion
Content
./summarize.sh < transcript.txt
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
./summarize.sh < transcript.txt
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ae1

High
Category
analysis-evasion
Content
./summarize.sh < transcript.txt
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

External Script Fetching

High
Category
Supply Chain
Content
print(json.dumps(prompt + transcript))
")

RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill explicitly requires an external API key (`ANTHROPIC_API_KEY`), which strongly implies that meeting transcript contents are transmitted to a third-party service, yet the description does not disclose that sensitive meeting data leaves the local environment. This is dangerous because users may paste confidential business discussions, personal data, or regulated information into the tool without informed consent about external transmission and retention risks.

Context-Inappropriate Capability

Medium
Confidence
93% confidence
Finding
The script reads a credential from ANTHROPIC_API_KEY and transmits the full stdin meeting transcript to a third-party API. For a summarization skill this behavior is functionally expected, but it still creates a real data-exfiltration/privacy risk because potentially sensitive meeting content leaves the local environment without any minimization, consent flow, or policy controls.

External Transmission

Medium
Category
Data Exfiltration
Content
print(json.dumps(prompt + transcript))
")

RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
Confidence
94% confidence
Finding
The hardcoded https://api.anthropic.com endpoint confirms the script is designed to send user-provided meeting content off-host to a third party. While not inherently malicious, this is still sensitive because the skill context involves transcripts, which commonly contain confidential business or personal data.

External Transmission

Medium
Category
Data Exfiltration
Content
print(json.dumps(prompt + transcript))
")

RESPONSE=$(curl -s https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
Confidence
94% confidence
Finding
The hardcoded https://api.anthropic.com endpoint confirms the script is designed to send user-provided meeting content off-host to a third party. While not inherently malicious, this is still sensitive because the skill context involves transcripts, which commonly contain confidential business or personal data.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill sends meeting transcripts to an external LLM service but provides no user-facing warning at runtime that transcript contents will leave the host. This is dangerous because users may pipe confidential notes, customer data, or internal discussions into the tool under the assumption processing is local.

Static analysis

No suspicious patterns detected.