Back to skill

Security audit

会议纪要基础版

Security checks for vulnerabilities and agentic risk

Overview

This meeting-notes skill is not clearly malicious, but it asks for execution and network-capable workflows while making conflicting privacy and credential-handling claims.

Review before installing. Use it only with non-sensitive meeting content unless the publisher clarifies local-only mode, exact external API destinations, callback behavior, and confirmation prompts. Do not run the provided environment-variable check as written; validate only the specific credential the skill actually needs and never print token values.

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
SKILL.md:163
Finding

Broad Environment Inspection May Expose API Keys and Tokens

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 163–169
Vulnerability Type: Credential exposure through unnecessary environment-variable enumeration
Risk Level: Medium

Vulnerable Code

bash
# Verify whether environment variables are configured
echo "Configuration check:"
env | grep -E "API|KEY|TOKEN|SECRET" | sed "s/=.*/=***/"  # Linux/macOS
# Or PowerShell
# Get-ChildItem Env: | Where-Object {$_.Name -match "API|KEY|TOKEN"} | Format-Table

Technical Analysis

The Skill recommends enumerating all environment variables whose names contain credential-related terms. This inspection is broader than necessary for meeting-note processing and violates the principle of minimizing access to sensitive runtime information.

The Linux/macOS command reads all environment variables before filtering them. Although sed masks the displayed values, it still reveals the existence and names of credential-bearing variables in terminal output, Agent transcripts, and logs.

The PowerShell alternative is more severe: Get-ChildItem Env: produces objects containing both variable names and values, and Format-Table may render matching API keys or tokens in plaintext. If an AI Agent executes this validation instruction, the resulting output can be incorporated into its conversation context or retained by terminal and platform logging systems.

No evidence indicates that the Skill transmits these credentials to an external destination. The confirmed risk is local disclosure through output and logging rather than demonstrated exfiltration.

Attack Path

  1. A user loads the Skill and follows its environment-validation instructions.
  2. The AI Agent invokes the provided Unix or PowerShell command through its declared execution capability.
  3. The command enumerates the process environment and selects variables with names containing API, KEY, TOKEN, or SECRET.
  4. On Unix-like systems, sensitive varia ...[truncated 1161 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove broad enumeration of environment variables based on generic credential-related keywords.

  2. Define the exact environment variable required by the Skill, if any, and validate only whether that specific variable is present.

  3. Never print a secret value. Return only a boolean or fixed status message, such as API credential is configured.

  4. Avoid piping complete environment listings through filtering commands because the full environment is still accessed by the pipeline.

  5. Replace the PowerShell example with an explicit presence check that cannot render the value:

    powershell
    if (Test-Path Env:REQUIRED_API_KEY) {
        Write-Output "Required API credential is configured."
    } else {
        Write-Output "Required API credential is not configured."
    }
    
  6. Use an equivalent value-free check on Unix-like systems:

    bash
    if [ -n "${REQUIRED_API_KEY+x}" ]; then
      echo "Required API credential is configured."
    else
      echo "Required API credential is not configured."
    fi
    
  7. If meeting-note processing does not require an external credential, remove the credential-validation section entirely.

  8. Configure the Agent and execution environment to redact secrets from command output and avoid retaining sensitive terminal output in persistent logs.

Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
96% confidence
Finding

The file claims FREE-version data is always stored locally and not uploaded to the cloud, while other sections state some functions require network access and external APIs. For meeting notes, this contradiction is dangerous because users may expose confidential discussions, participant identities, or action items under false privacy assumptions.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
83% confidence
Finding

The document positions FREE as limited to core functions and reserves advanced analysis for PRO, yet Scenario 2 outputs '决策轨迹', '隐含假设', '风险机会', and '专家圆桌洞察' at L136, which matches the PRO preview at L100-L105. This creates a direct intent/documentation inconsistency about what the FREE skill is supposed to do.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

An overly broad natural-language trigger can cause the agent to invoke the skill in contexts the user did not specifically intend. Because the skill has exec and possible network/API behavior, accidental activation could lead to unintended command execution, processing of sensitive meeting data, or transmission to external services.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The skill markets itself as a local/free meeting-note tool, yet it also supports callback URLs and references external API use. This creates a misleading trust boundary: users may provide sensitive meeting content believing it remains local when the agent may transmit data off-host or to third-party endpoints.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The example trigger phrase is generic enough that ordinary user requests could match it unintentionally, causing the skill to activate without informed consent. In a tool that may automatically call APIs or shell commands, generic activation increases the chance of surprise execution and mishandling of sensitive notes.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill says the agent will automatically call tools or APIs and execute operations, but it does not provide a prominent upfront warning that commands may run or that content may be sent externally. This is risky because users may paste sensitive meeting transcripts expecting summarization, while the agent could execute shell actions or transmit data without clear informed consent.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.