Back to skill

Security audit

Microservice Gen

Security checks for vulnerabilities and agentic risk

Overview

This package is advertised as a Go Zero microservices helper, but the actual skill is a local activity journal that stores and exports user inputs.

Review carefully before installing. Do not enter secrets, proprietary code, credentials, incident details, or sensitive configuration into this tool unless you are comfortable with plaintext local retention and later export from ~/.local/share/microservice-gen. The package should be renamed or corrected to match its actual behavior and should add opt-in logging, redaction, purge controls, and safer export handling.

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
scripts/script.sh:74
Finding

CSV Formula Injection Through Unescaped Log Entries

Content
View full analysis

Vulnerability Details

File Location: scripts/script.sh, lines 74-79
Vulnerability Type: CSV formula injection
Risk Level: Medium

Vulnerable Code

bash
csv)
    echo "type,time,value" > "$out"
    for f in "$DATA_DIR"/*.log; do
        [ -f "$f" ] || continue
        local name=$(basename "$f" .log)
        while IFS='|' read -r ts val; do echo "$name,$ts,$val" >> "$out"; done < "$f"
    done
    ;;

User-controlled command arguments are stored verbatim in command-specific log files by the repeated command handlers at lines 129-297. The CSV export routine then writes those values directly into CSV cells without quoting fields, escaping embedded quotes or delimiters, or neutralizing formula-leading characters.

Spreadsheet applications may interpret cells beginning with =, +, -, or @ as formulas. This creates a formula-injection boundary when an exported file is opened in spreadsheet software.

Attack Path

  1. An attacker persuades a user or automated process to record a malicious entry, for example:

    bash
    microservice-gen report '=HYPERLINK("https://attacker.example/collect","Open report")'
    
  2. The command stores the supplied string unchanged in report.log.

  3. The user exports the accumulated data:

    bash
    microservice-gen export csv
    
  4. The exporter inserts the attacker-controlled value directly into ~/.local/share/microservice-gen/export.csv.

  5. The user opens the CSV file in spreadsheet software.

  6. Depending on the spreadsheet application and its security policy, the value may be evaluated as a formula.

Impact Assessment

Exploitation does not directly grant shell or elevated operating-system privileges through this script. Its scope is the spreadsheet context of the user who opens the export. Potential consequences include deceptive links or displayed values, external network requests, disclosure of spreadsheet-accessi ...[truncated 264 chars]

Remediation
View remediation

Remediation Suggestions

  • Generate CSV through a standards-compliant CSV encoder rather than string concatenation.
  • Enclose every field in double quotes and replace each embedded double quote with two double quotes.
  • Before serialization, neutralize cells whose first non-whitespace character is =, +, -, or @, such as by prefixing a single quote where compatible with the intended spreadsheet workflow.
  • Correctly preserve embedded commas, line breaks, carriage returns, and quotes.
  • Consider exporting JSON as the preferred machine-readable format and warn users that CSV files may contain untrusted data.
  • Add regression tests covering formula prefixes, commas, quotes, pipes, and multiline values.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (14)

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The skill metadata claims to provide a Go microservices framework/CLI, but the documented behavior is a local journaling and logging tool that persistently stores user inputs and supports export/search of accumulated data. This mismatch is dangerous because users may provide source code, configs, secrets, or internal design details under the assumption they are using a framework helper, not a retention-oriented logging utility.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The manifest identifies the skill as 'Go Zero', but the body documents an unrelated tool named 'Microservice Gen' with different capabilities and data-handling behavior. This identity mismatch undermines informed consent and can trick users into exposing sensitive development data to a tool they did not intend to use.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The script does not implement a Go Zero framework or microservice generator; it presents a generic local journaling/export utility under misleading branding. This kind of identity mismatch is dangerous because users may grant trust and provide sensitive project data to a tool that performs undisclosed persistence and data collection unrelated to the advertised function.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The description promises framework/code-generation productivity features, while the actual documented behavior mostly records and retains user inputs rather than performing substantive framework operations. In this context, the mismatch increases the chance that users submit proprietary code, configs, or credentials without realizing they are being archived for later export and reporting.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill description normalizes a complete devtools workflow with local traceability, but does not present a clear up-front warning that command inputs and activity are persistently logged to local files. Users may unknowingly input sensitive material, creating avoidable confidentiality and compliance risks.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The tool description explicitly promotes timestamped logging of every operation and local retention for traceability, which creates systematic storage of whatever users type into the commands. In a developer-tool context, those inputs may contain proprietary code, tokens, infrastructure details, or incident notes, making the retention behavior security-relevant.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The export feature is presented as a convenience capability without warning that it can package all previously logged user content into portable formats like JSON, CSV, or text. This broadens the disclosure surface and makes accidental sharing or exfiltration of sensitive development artifacts much easier.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The commands explicitly support reporting, exporting, and searching across all logged data, enabling bulk access to accumulated user submissions. That aggregation materially increases impact because one action can reveal a large corpus of sensitive content rather than a single entry.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The data storage section explicitly specifies per-command logs, a unified history log, and export of accumulated entries, establishing persistent retention as a core design behavior. Consolidated history files increase discoverability and make sensitive user content easier to harvest if the local environment is shared or compromised.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The behavioral specification states that every command with arguments saves the input and logs it to history, meaning retention is automatic and universal rather than contextual. This is dangerous because users are likely to treat generation, validation, linting, and explanation commands as transient analysis actions, not persistent archival of all submitted material.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The header identifies the tool as 'Microservice Gen' while the skill is presented as 'Go Zero', indicating repackaging or substitution of unrelated code. In a skill distribution context, such provenance mismatch is a supply-chain red flag because it obscures origin, purpose, and expected behavior, making hidden data-handling more likely to be overlooked.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The tool is designed to persistently record user inputs across commands and later reveal them through search, recent, status, and export functions in plaintext. Given the misleading skill context, this becomes more dangerous because users expecting Go framework functionality are less likely to realize they are interacting with a local activity recorder that accumulates sensitive operational data.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The export feature copies historical plaintext activity from all log files into new aggregate files, increasing the spread and retention of potentially sensitive content without clearly warning the user. This amplifies privacy risk by creating additional artifacts that are easier to share, exfiltrate, or accidentally commit to repositories.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

User-provided input is appended verbatim to persistent log files in the user's home directory without an upfront disclosure or consent mechanism. In an agent skill context, users may enter secrets, internal code fragments, prompts, or service details, which then remain on disk and can later be exposed to other local users, backups, or support tooling.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.