Back to skill

Security audit

Assess Me

Security checks for vulnerabilities and agentic risk

Overview

This skill is a self-audit helper, but it writes agent reasoning to a predictable temp file and can trigger self-modification without clear user approval.

Review before installing. The audit checklist itself is understandable, but use it only if you are comfortable with the agent writing task context to a predictable local temp file and with the skill potentially invoking another manager skill to modify its own instructions. Prefer a version that keeps the audit inline, avoids storing sensitive reasoning, and requires explicit approval before any skill changes.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • 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
  • 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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:25
Finding

Predictable Plaintext Temporary File Exposes Agent Reasoning

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 25-59
Vulnerability Type: Unsafe temporary-file handling and plaintext storage
Risk Level: Medium

Vulnerable Code Snippet

markdown
Write your current thinking state to a temp file, then read it back.

1. Answer 6 questions and write to a temp file
2. Read it back
3. Critically analyze what you wrote
4. Continue based on the findings

Write tool → /tmp/assess-me.md
Content:
# Assess Me

**Goal:** <1-2 sentences>
**Progress:** <1-2 sentences>
**Gaps:** <1-2 sentences>
**Assumptions:** <1-2 sentences>
**Blocker:** <1-2 sentences>
**Recovery:** <1-2 sentences>

After writing, use Read tool to read `/tmp/assess-me.md` back.

Technical Analysis

The Skill requires the agent to place its current task state, assumptions, gaps, and blockers in the fixed path /tmp/assess-me.md. The instructions do not require exclusive file creation, restrictive permissions, symbolic-link checks, content redaction, or deletion after use.

A predictable path in a shared temporary directory is vulnerable to race conditions and symbolic-link attacks. An attacker with local access may create the path before execution, monitor it, or replace it with a symbolic link. Depending on the write tool's behavior and the agent process's filesystem privileges, this can disclose sensitive context or redirect the write to another file writable by the agent.

The recorded reasoning may contain user data, filesystem paths, operational details, or other confidential task context. Persisting that information in plaintext unnecessarily expands the exposure surface.

Attack Path

  1. A local attacker predicts the documented path /tmp/assess-me.md.
  2. The attacker monitors the path or pre-creates it as a symbolic link to another file.
  3. A triggering event causes the Skill to perform its required self-assessment.
  4. The agent ...[truncated 865 chars]
Remediation
View remediation

Remediation Suggestions

  • Avoid writing internal reasoning or sensitive task state to disk unless persistence is strictly necessary.
  • Keep the assessment in process memory and return only a concise, sanitized summary.
  • If temporary storage is unavoidable, create a unique per-session file using a cryptographically unpredictable name.
  • Create the file atomically with exclusive-create semantics and permissions restricted to the current user, such as mode 0600.
  • Reject symbolic links and verify that the resulting file is a regular file owned by the expected account.
  • Store only the minimum required information and redact credentials, tokens, personal data, and sensitive paths.
  • Delete the temporary file in a guaranteed cleanup operation immediately after it is read.
  • Prefer a private runtime directory owned by the agent account instead of a globally shared temporary directory.

T02 · Agent Memory Poisoning

Warning
Location
SKILL.md:89
Finding

Unapproved Persistent Self-Modification Through Skill Manager

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 89-99
Vulnerability Type: Uncontrolled modification of persistent Skill instructions
Risk Level: Medium

Vulnerable Code Snippet

The relevant instructions require the Skill to optimize itself and direct both possible verification outcomes to load skill-manager:

markdown
- Self-optimization: This Skill can evolve itself.
  - Verification fails → load skill-manager to repair it: correct steps,
    add boundary cases, and fix bugs.
  - Verification passes → load skill-manager to optimize it: simplify steps,
    improve execution determinism, and improve verification criteria.

Technical Analysis

The instructions direct the agent to invoke another Skill and modify persistent Skill behavior regardless of whether verification succeeds or fails. They do not require explicit user authorization, validation of the loaded skill-manager, a reviewed change set, integrity verification, rollback support, or restrictions on which instructions may be altered.

This creates a persistent-state poisoning risk. If skill-manager is compromised, spoofed, replaced, or influenced by untrusted input, it may insert attacker-controlled rules into the Skill. Those rules can continue affecting future sessions after the original assessment has ended.

The unconditional structure increases exposure: a failed verification causes a repair operation, while a successful verification still causes an optimization operation. Therefore, completing the workflow always leads toward loading the external management capability.

Attack Path

  1. An attacker influences or replaces the skill-manager implementation, or supplies malicious content that it treats as a proposed modification.
  2. A normal trigger causes assess-me to run its verification workflow.
  3. Whether verification passes or fails, the instructions direct the agent to load skill-manager.
  4. The manage ...[truncated 887 chars]
Remediation
View remediation

Remediation Suggestions

  • Remove automatic self-evolution and do not modify persistent Skill instructions as a routine verification step.
  • Require explicit, informed user approval before loading a management Skill or writing any persistent change.
  • Pin skill-manager to a trusted version and verify its source and integrity before use.
  • Generate a proposed diff rather than directly applying modifications.
  • Restrict modifications to an explicit allowlist of fields and reject changes to safety constraints, tool permissions, activation rules, or external integrations.
  • Require human review and confirmation of the exact diff before persistence.
  • Validate the modified Skill in an isolated environment before deployment.
  • Maintain version history, audit logs, and a reliable rollback mechanism.
  • Treat all task content and manager-generated changes as untrusted input and prevent them from becoming persistent instructions without authorization.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • 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
Findings (8)

Vague Triggers

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger language is broad enough to activate on routine phrases like 'review' or ordinary expressions of uncertainty. Overbroad activation increases the chance the skill runs in unrelated contexts, causing unnecessary data handling and making the riskier behaviors in the skill easier to reach.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The skill directs the agent to write its current thinking state to /tmp/assess-me.md without warning, minimization, or sensitivity controls. This can persist sensitive user data, secrets, or hidden reasoning to disk where it may be accessible to other processes, logs, or later steps.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Writing 'current thinking state' to a temp file and then reading it back intentionally persists and resurfaces internal reasoning and session-derived content. This increases exposure of sensitive information and may leak chain-of-thought-like material or confidential user context into storage and subsequent outputs.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The document presents itself as a cognition-audit helper, but its verification section expands the action space into autonomous repair and optimization. This scope drift is dangerous because users and orchestration systems may grant the skill trust or auto-invocation appropriate for analysis, not for mutating other skills or its own operating logic.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill’s stated purpose is a bounded self-audit, but it escalates into loading skill-manager to repair or optimize itself. That creates unauthorized capability expansion and a pathway for unreviewed modification of behavior, instructions, or related files beyond the original audit scope.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Ambiguous triggers such as '需求模糊', '未验证假设', and generic post-fix verification lack operational boundaries, so the skill can be invoked whenever the model subjectively feels uncertain. In context, that matters because invocation leads to persistence of internal state and potentially to self-modification instructions later in the file.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The template explicitly collects assumptions, gaps, blockers, and recovery details, which are likely to include sensitive session facts, inferred secrets, or internal deliberation. By requiring these fields to be written to disk, the skill normalizes retention of data that should remain ephemeral or minimized.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The self-optimization branch authorizes loading another skill to change behavior without warning about downstream effects on files, prompts, or configuration. That creates an opaque chain of actions where a benign-seeming audit skill can become a launcher for additional mutation-capable logic.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.