Back to skill

Security audit

Muse Installer

Security checks for vulnerabilities and agentic risk

Overview

This skill should be reviewed carefully because it runs unverified downloaded code, sideloads an unreviewed browser extension, and asks for a Telegram bot token in chat.

Install only if you trust the GitHub repository and are comfortable running whatever is currently on its main branch. Review the downloaded code and Chrome extension permissions before starting them, avoid pasting Telegram tokens into chat, and ask for explicit stop, uninstall, and data deletion steps before using the background service or onboarding profile features.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (4)

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:36
Finding

Mutable Remote Repository Is Downloaded and Executed Without Integrity Verification

Content
View full analysis
&1 | tail -3 ``` ```bash cd ~/.muse/muse-catch # Kill the previous process, if present pkill -f "python3 server.py" 2>/dev/null sleep 1 # Start in the background nohup python3 server.py > /tmp/muse-server.log 2>&1 & sleep 3 ``` ### Technical Analysis The Skill clones or updates the mutable `main` branch of an external repository and then immediately executes `server.py`. The repository contents are not included in the audited artifact. No immutable commit reference, cryptographic checksum, signature verification, or source review is required before execution. Consequently, the effective executable payload can change after this Skill has been reviewed. The repository owner, a compromised maintainer account, or an attacker who gains control of the repository could replace the expected application with arbitrary Python code. The `git pull origin main` update path also means an existing installation can silently acquire a new payload during a later invocation. ### Attack Path 1. An attacker compromises or otherwise obtains write access to `KevPH2026/muse-catch`. 2. The attacker commits malicious code to the mutable `main` branch, particularly in `server.py` or an imported module. 3. A user invokes the Muse installation Skill. 4. The Agent clones the repository or pulls the modified branch. 5. The Agent executes `python3 server.py` through `nohup`. 6. The malicious payload runs under the Agent or user's operating-system account. ### Impact Assessment The downloaded payload can obtain the same privileges as the invoking user. Subject to the user's operating-syst ...[truncated 459 chars]
Remediation
View remediation

T03 · Remote Payload Retrieval and Execution

Error
Location
SKILL.md:69
Finding

Unreviewed Browser Extension Is Sideloaded from Mutable Remote Content

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:209
Finding

Telegram Bot Token Is Accepted in Chat and Can Be Printed in Plaintext

Content
View full analysis
" nohup python3 bot.py > /tmp/muse-bot.log 2>&1 & sleep 2 && tail -3 /tmp/muse-bot.log ``` ```bash echo $MUSE_BOT_KEY ``` ### Technical Analysis The Skill asks the user to send a Telegram bot token through the Agent conversation. This can place the credential in conversation history or other Agent-side records. The token is then stored in an environment variable, where same-user process inspection or debugging may expose it. The troubleshooting instruction explicitly prints the secret using `echo $MUSE_BOT_KEY`. This can disclose the complete credential through terminal output, screenshots, copied diagnostic information, shell transcripts, or Agent logs. Although the token is not hardcoded in the Skill, its collection and diagnostic handling do not follow secure secret-management practices. ### Attack Path 1. The user sends the Telegram bot token to the Agent as instructed. 2. The token becomes part of the conversation context and is exported into the bot process environment. 3. During troubleshooting, the Agent or user runs `echo $MUSE_BOT_KEY`. 4. The plaintext token appears in visible or recorded output. 5. An attacker with access to the transcript, terminal output, screenshots, or same-user process information obtains the token. 6. The attacker authenticates to Telegram's Bot API using the stolen credential. ### Impact Assessment A stolen token permits unauthorized control of the associated Telegram bot through the Bot API. Depending on the bot's configuration and conversations, an attacker may send messages as the bot, modify bot configuration, disrupt service, or access updates and messag ...[truncated 214 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Note
Location
SKILL.md:50
Finding

Broad Process-Matching Command Can Terminate Unrelated Python Services

Content
View full analysis
/dev/null sleep 1 ``` ### Technical Analysis The `pkill -f` command compares the supplied pattern against complete process command lines. The pattern is not uniquely tied to the Muse installation directory, user-managed PID file, executable identity, or listening port. Any unrelated process whose command line contains `python3 server.py` may match and be terminated. This is broader than the minimum authority needed to replace the Muse server. ### Attack Path 1. An unrelated local application runs with a command line matching `python3 server.py`. 2. The user invokes the Muse installer or reruns its server-start phase. 3. The Skill executes `pkill -f "python3 server.py"`. 4. The operating system sends a termination signal to every accessible matching process. 5. The unrelated service stops, potentially interrupting work or losing volatile state. ### Impact Assessment The command can terminate matching processes owned by the invoking user and any additional processes the account is authorized to signal. The likely impact is local denial of service, interrupted development servers, failed jobs, or loss of unsaved in-memory state. This does not independently provide privilege escalation, and the command's reach remains constrained by the invoking account's process-control permissions. ]]>
Remediation
View remediation
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
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (10)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The Telegram Bot setup explicitly asks the user to send a bot token without any warning that the token is a sensitive secret. This is dangerous because users may disclose production credentials into chat transcripts or tool logs, enabling account takeover or unauthorized bot control.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Requesting that the user provide a bot token directly to the agent is direct secret collection. This is especially risky because conversational systems may log, summarize, or retain inputs, and the token can be immediately abused to impersonate or control the Telegram bot.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill advertises fully automatic installation, dependency changes, repository cloning, process termination, and background service startup without upfront notice or consent boundaries. This is dangerous because it normalizes silent filesystem modification and process control, making users less able to detect unwanted persistence or disruption on their machine.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
87% confidence
Finding

Creating and using a persistent directory under ~/.muse establishes durable state on the user's machine. In context this supports product installation, but it is still a security-relevant persistence mechanism because files remain beyond the session and may contain code, logs, or user data without explicit user awareness.

Content

Scanner excerpt · SKILL.md (reported line 36)May include surrounding context.

Phase 1: 拉代码 + 装依赖

bash
mkdir -p ~/.muse && cd ~/.muse
if [ -d "muse-catch" ]; then
  cd muse-catch && git pull origin main
else

Session Persistence

Medium
Category
Rogue Agent
Confidence
94% confidence
Finding

Launching server.py via nohup in the background creates persistent execution after the agent interaction ends, and the flow also kills prior matching processes. This is dangerous because it combines persistence with process control in a largely automatic flow, increasing the chance of unnoticed long-running services or accidental termination of legitimate processes.

Content

Scanner excerpt · SKILL.md (reported line 55)May include surrounding context.

md
pkill -f "python3 server.py" 2>/dev/null
sleep 1
# 后台启动
nohup python3 server.py > /tmp/muse-server.log 2>&1 &
sleep 3
# 验证
curl -s http://localhost:5200/api/stats && echo "✅ Muse API 运行中" || echo "❌ 启动失败,查看 /tmp/muse-server.log"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The onboarding flow collects interests, occupation, and creator-platform links, then analyzes third-party content and persists the resulting profile, but gives no privacy notice or consent checkpoint. This creates a real privacy and data-governance risk because the user may not understand that personal profile data and external content-derived inferences will be stored and processed.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill directs the agent to collect personal profile details and platform links, infer a 'DNA' profile from user content, and sync it to a dashboard. Even if intended as product onboarding, this is privacy-sensitive profiling and storage of personal data without clear safeguards, minimization, or retention limits.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
83% confidence
Finding

The POST to /api/profile transmits user profile data and inferred 'DNA' information to a local service. Although the destination is localhost rather than a remote host, it still represents data transfer to another process and can expose sensitive data if that service is insecure, multi-user accessible, or later syncs externally.

Content

Scanner excerpt · SKILL.md (reported line 161)May include surrounding context.

  1. 同步到控制面板:

    bash
    curl -s -X POST http://localhost:5200/api/profile \
      -H 'Content-Type: application/json' \
      -d '{
        "profile": {
    

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill expands from installer/onboarding into collecting and handling a Telegram Bot token, which is a sensitive credential unrelated to the minimum functionality needed to install the product. Having the user send the token to the agent exposes a secret to the conversational channel and enables misuse of the bot account if logs, transcripts, or downstream tools retain it.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
96% confidence
Finding

Starting bot.py with nohup creates a persistent background bot process tied to a sensitive credential. In context this is more dangerous than ordinary persistence because a misconfigured or exposed bot can continue operating unattended and abuse the provided Telegram token.

Content

Scanner excerpt · SKILL.md (reported line 215)May include surrounding context.

bash
cd ~/.muse/muse-catch
export MUSE_BOT_KEY="<TOKEN>"
nohup python3 bot.py > /tmp/muse-bot.log 2>&1 &
sleep 2 && tail -3 /tmp/muse-bot.log