Back to skill

Security audit

Secondme Dev Assistant

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly matches SecondMe developer work, but it silently runs unpinned self-update commands and persists sensitive local state in ways users should review before installing.

Install only if you are comfortable with a skill that can run update tooling automatically, store SecondMe credentials locally, and write telemetry state. A safer version should remove silent self-updates, require explicit approval for update and credential persistence, enforce strict file permissions or use a secret store, and fail closed on OAuth state mismatches.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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 (3)

T08 · Insecure Dependencies

Error
Location
SKILL.md:25
Finding

Silent Execution of an Unpinned Package and Automatic Skill Update

Content
View full analysis
&1 | grep -qiE "second-me-skills|second\.me"; then npx skills update mindverse/second-me-skills -y 2>&1 || true fi ``` ### Technical Analysis The Skill instructs the agent to invoke `npx skills` automatically during its pre-flight process. No exact package version, package digest, repository revision, or signature is specified. Depending on the local npm environment, `npx` can resolve and execute a package obtained from a remote registry. The subsequent update command automatically modifies the installed Skill from the mutable `mindverse/second-me-skills` source. The `-y` option suppresses interactive confirmation, while `|| true` suppresses update failures. Consequently, reviewed Skill instructions can be replaced without the user reviewing or approving the new version. This behavior is not required for the Skill's core function of assisting with SecondMe application development. It therefore exceeds the minimum privilege necessary and creates an avoidable remote supply-chain execution channel. ### Attack Path 1. An attacker compromises the package resolved as `skills`, the relevant package registry entry, or the upstream `mindverse/second-me-skills` repository. 2. The Skill is activated after the 24-hour update interval. 3. `npx skills check` resolves and executes the mutable package without a pinned version or integrity check. 4. The compromised package reports an applicable update or directly executes malicious installation logic. 5. `npx skills update ... -y` downloads and applies attacker-controlled Skill content without user confirmation. 6. The new package code or Skill instructions execute with the permissions of the agent process during current or subsequent invocations. ### Impact Assessment Successful exploitatio ...[truncated 630 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
references/implementation-guidance.md:127
Finding

OAuth State Mismatch May Be Accepted in WebView Environments

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
references/app-bootstrap.md:121
Finding

Persisted Platform Credentials Do Not Have Enforced File Permissions

Content
View full analysis
` for all subsequent API calls Credential file: - path: `~/.secondme/dev_credentials` - directory: `~/.secondme` - preferred permissions: directory `700`, file `600` ``` ### Technical Analysis The Skill directs the agent to persist an OAuth client secret and a reusable bearer token in plaintext files. Although restrictive permissions are described as “preferred,” the documented write flows do not require a restrictive `umask`, secure atomic file creation, permission verification, or corrective `chmod`. File permissions are determined by the process umask and by the permissions of any existing file. Therefore, a newly created credential file may be more permissive than intended, while overwriting an existing file generally retains that file's previous mode. The client secret also uses a single global filename, `~/.secondme/client_secret`, rather than an application-specific credential record. The overwrite warning partially mitigates accidental replacement but does not provide strong credential isolation between applications. ### Attack Path 1. The agent runs in an environment with a permissive umask, or the credential path already exists with permissive permissions. 2. The Skill saves a newly issued client secret or bearer ...[truncated 1161 chars]
Remediation
View remediation
Vulnerability Patterns
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
Findings (40)

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

Scanner excerpt · references/control-plane.md (reported line 29)May include surrounding context.

md
Routes:

- `POST /api/auth/skills/token` — exchange auth code for access token (public, no auth required)

Process:

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The pre-flight block performs self-update logic and telemetry collection unrelated to the immediate developer-assistance task. This broadens the skill's behavior to include background network access, file writes, and usage logging, increasing attack surface and privacy risk beyond what a user would reasonably expect from the requested operation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill directs a silent pre-flight update check that performs network access and local file writes before handling the user's actual request. Hidden modification and remote contact without notice undermines informed consent and can expose users to supply-chain compromise or unintended state changes.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
96% confidence
Finding

The skill invokes npx skills check without pinning an exact package/version, allowing execution of whatever package resolution returns at runtime. In a pre-flight path that runs automatically, this creates a supply-chain risk: a compromised package, dependency, or registry response could lead to arbitrary code execution under the user's account.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
97% confidence
Finding

npx skills update mindverse/second-me-skills -y performs an unpinned remote update and executes package-managed code in the same flow. Because it is triggered silently and writes to the local environment, an attacker controlling the package source or dependency chain could gain code execution and persistence-like modification of the skill environment.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The telemetry preamble collects and stores session, OS, architecture, and optional device identifiers without upfront warning in the user-facing workflow. Even when nominally configurable, hidden collection and persistence of analytics data creates privacy and compliance risk, especially in developer environments that may handle sensitive projects.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The trigger list includes broad phrases such as '开发应用', '开发项目', and 'hackathon', which are common requests outside the intended platform scope. Even though the surrounding description discusses SecondMe, these examples themselves lack sufficient specificity and no negative examples are provided alongside them.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill says to trigger early if the user mentions 'hackathon', 'A2A app', 'app development', or 'project development', then confirm whether it is for SecondMe. Terms like app development and project development are common, cross-domain phrases that overlap with everyday software requests and can activate the skill before SecondMe relevance is established.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
It should not:

- invent credentials, endpoints, or secrets
- claim review submission is safe without checking platform state
- generate a full project blindly before requirements are clear
- release an integration without explicit user confirmation

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

md
- generate a full project blindly before requirements are clear
- release an integration without explicit user confirmation

For actual app implementation, default to giving the user or their coding agent a precise implementation brief and required standards. Only write project code if the user explicitly asks for code work in the current coding workspace.

## Trigger Map

Ssd 3

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The completion telemetry persists device/session metadata and error text to a local analytics file, potentially accumulating sensitive operational details over time. Logging raw error messages can capture tokens, endpoint data, stack traces, or other secrets if upstream failures include them, creating a secondary disclosure risk.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · references/app-bootstrap.md (reported line 5)May include surrounding context.

md
## Contents

- [Phase 1: Create The SecondMe App And Obtain Credentials](#phase-1-create-the-secondme-app-and-obtain-credentials)
  - [Default Interaction Rule](#default-interaction-rule)
  - [Required Outcome](#required-outcome)
  - [Bootstrap Decision](#bootstrap-decision)

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · references/app-bootstrap.md (reported line 20)May include surrounding context.

md
### Default Interaction Rule

- do not ask the user to manually draft the full App Info block or platform form first
- ask for the minimum missing facts one by one or in a compact list
- then assemble the App Info, create payload, listing payload, or integration payload on the user's behalf
- present the drafted values for confirmation and continue the operation unless the user explicitly wants to fill the form themselves

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill directs the assistant to persist an OAuth client secret to a predictable local file path, but does not require strong user consent, platform secret storage, encryption, or clear risk disclosure. Even with suggested 700/600 permissions elsewhere, local plaintext storage increases the chance of credential leakage through backups, multi-user hosts, malware, or accidental file exposure.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This section creates a workflow for soliciting a client secret from the user, storing it persistently, and reusing it automatically in later operations. That natural-language pattern expands the assistant's role into credential collection and retention, which is dangerous because it normalizes handling highly sensitive secrets and can lead to unauthorized disclosure, misuse across apps, or long-lived compromise if the local store is accessed.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
90% confidence
Finding

The overwrite/update behavior for ~/.secondme/client_secret confirms persistent credential state across tasks and encourages replacing stored secrets in place. This increases the risk of cross-app secret confusion, unintended reuse, and silent long-term retention of sensitive credentials in a shared local location.

Content

Scanner excerpt · references/app-bootstrap.md (reported line 145)May include surrounding context.

md
Conflict rule:

- if a different secret already exists and the current task is clearly for another app, warn before overwriting
- if the current flow just created or regenerated the secret for the app being configured, overwrite it and explain what changed

Failure recovery:

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The document instructs storing a bearer access token on disk in a predictable location, but it does not clearly require explicit user consent or warn that this is sensitive local credential material. In an agent-skill context, that omission increases the risk of silent persistence of reusable credentials, especially on shared machines or when users do not expect secrets to be cached.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The CDN upload guidance tells the agent to upload user-provided local files to a remote service but does not explicitly warn the user that local content will leave their machine. In a skill that may handle screenshots, icons, or videos, this can cause unintended disclosure of sensitive files if users misunderstand the operation.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/control-plane.md (reported line 275)May include surrounding context.

md
}
    ],
    "mcp": {
      "endpoint": "https://api.example.com/mcp",
      "timeoutMs": 12000,
      "toolAllow": ["real_mcp_tool_name"],
      "headersTemplate": {},

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/control-plane.md (reported line 288)May include surrounding context.

md
}
    ],
    "mcp": {
      "endpoint": "https://api.example.com/mcp",
      "timeoutMs": 12000,
      "toolAllow": ["real_mcp_tool_name"],
      "headersTemplate": {},

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file defines a telemetry-consent and device-tracking flow that is outside the stated purpose of a developer-assistant skill for building on the SecondMe platform. Embedding unrelated data-collection behavior in a development skill increases privacy risk and violates least surprise, especially because it persists settings and influences future sessions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The user-facing consent flow is written entirely in Chinese, including the prompt text and response options. The policy for this category applies to language/locale constraints, and this file does not offer opt-in, fallback, or any indication that the skill is intentionally region-specific.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
88% confidence
Finding

The skill writes persistent state under ~/.secondme and creates marker files so the behavior survives across sessions. Persistent local modification is security-relevant here because it changes future agent behavior and records telemetry preferences outside the immediate user task, which is more dangerous given the skill's unrelated developer-assistant context.

Content

Scanner excerpt · references/feedback-prompt.md (reported line 28)May include surrounding context.

bash
SM_DIR="$HOME/.secondme"
SM_CONFIG="$SM_DIR/config"
mkdir -p "$SM_DIR"
python3 -c "
import json, os
p = os.path.expanduser('$SM_CONFIG')

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

This flow generates and stores a stable device ID for telemetry, enabling long-term correlation of activity across sessions. Even if content claims anonymity for some data fields, a persistent identifier materially increases tracking capability and privacy sensitivity beyond what is necessary for a developer-assistance skill.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · references/implementation-guidance.md (reported line 42)May include surrounding context.

md
# Open APIs for Third-Party Developers

All endpoints use `{BASE}` = `https://api.mindverse.com/gate/lab`. All requests require `Authorization: Bearer <accessToken>` obtained via OAuth.

## Contents