Back to skill

Security audit

Numerology Fortune

Security checks for vulnerabilities and agentic risk

Overview

This numerology skill is mostly coherent, but it stores and silently reuses a user's full legal name and birth date in plaintext memory files.

Review this skill before installing if you do not want your full legal name and birth date saved locally and reused later. Prefer using it only with explicit consent to save data, remove cross-skill memory lookup, and add a clear way to inspect, update, or delete stored profile information.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:67
Finding

Persistent Plaintext Storage and Cross-Skill Reuse of Sensitive Personal Data

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 67–105 and 197–200
Vulnerability Type: Plaintext storage and cross-scope access of sensitive personal data
Risk Level: Medium

Vulnerable Code Snippet

markdown
## User Context

This Skill requires the user's birth date and full legal name (in English) to calculate the core numbers.

**Reading**: Before running, check in this order:
1. This directory's `MEMORY.md` — use first
2. `fortune-hub/MEMORY.md` in the same repo (if it exists) — fill in any missing base profile fields

If data is available, use it directly without asking again.

**Writing**: After collecting user info, write it to **this directory's** `MEMORY.md`:

```markdown
# User Info

## Basic Profile
- Date of birth: YYYY-MM-DD
- Full legal name (English): Full Name

## Core Numbers (Cached)
- Life Path Number: X
- Expression Number: X
- Soul Urge Number: X
- Personality Number: X
- Birthday Number: X
text

```markdown
### Step 5: Save Results

After the first complete reading, cache the core numbers to `MEMORY.md`. Subsequent Personal Cycle queries can use the cache without recalculating.

Technical Analysis

The Skill directs the Agent to collect a user's full legal name and date of birth and save them in a persistent Markdown file. These values are sensitive identifying information, but the instructions do not require explicit storage consent, encryption, restrictive file permissions, data minimization, a retention period, or a deletion mechanism.

The Skill also instructs the Agent to read fortune-hub/MEMORY.md, which belongs to another Skill scope, and to reuse any discovered profile data without asking the user again. This crosses a least-privilege boundary because the numerology calculation can operate on information supplied in the current session and does not inherently require access to another Skill's persistent state.

Automatic reuse ...[truncated 1507 chars]

Remediation
View remediation

Remediation Suggestions

  1. Keep names and dates of birth session-scoped by default. Do not persist them unless the user explicitly opts in.
  2. Remove default access to fortune-hub/MEMORY.md. If cross-Skill sharing is necessary, require an explicit user-approved capability and limit access to the minimum required fields.
  3. Before reading persistent profile data, tell the user what will be accessed, why it is needed, and from which file or scope it will be obtained.
  4. Verify that a recovered profile belongs to the current user before using it. Display a minimally identifying summary and request confirmation rather than silently applying it.
  5. Minimize persisted data. Cache derived numbers without retaining the full legal name or complete date of birth where feasible.
  6. If identity data must be retained, use protected storage with restrictive permissions and encryption appropriate to the host platform rather than a plaintext Markdown file.
  7. Define a retention period and provide clear commands for users to inspect, update, and permanently delete stored profile information.
  8. Prevent shared-workspace leakage by separating memory per user and per Skill, with access controls that prohibit unrelated Skills from reading the data.
  9. Avoid logging sensitive values and document the privacy implications of optional profile caching.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest markets the skill as 'Pure math + LLM interpretation. No external API required,' which can create a misleading privacy expectation even though the skill later instructs persistent storage of the user's birth date, full legal name, and derived profile in MEMORY.md. This mismatch can cause users or integrators to underestimate data retention and reuse risk, especially for a skill framed as simple local analysis.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs the agent to read and write sensitive personal data in MEMORY.md without an explicit privacy notice at the point of collection or persistence. Users may provide date of birth and legal name for computation without understanding that these details will be retained and reused across future interactions.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill normalizes persistence and later reuse of sensitive profile data from MEMORY.md, but does not define minimization limits, retention bounds, or scope controls. That makes the stored information available beyond the immediate transaction and increases the chance of unnecessary exposure, cross-context reuse, or stale personal data being applied to future requests.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
88% confidence
Finding

The instruction to 'use it directly without asking again' authorizes the agent to make privacy-relevant decisions about reusing previously stored personal data without renewed user confirmation. In context, this can lead to invisible processing of legal name and birth date across sessions, which is especially risky because the data is sensitive and persistence is not foregrounded to the user.

Content

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

md
1. This directory's `MEMORY.md` — use first
2. `fortune-hub/MEMORY.md` in the same repo (if it exists) — fill in any missing base profile fields

If data is available, use it directly without asking again.

**Writing**: After collecting user info, write it to **this directory's** `MEMORY.md`:

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill directs collection and persistent storage of full legal name and birth date, then caches multiple derived numerology attributes. Even if the data is relevant to calculation, persisting it for later reuse exceeds what is necessary for a one-time reading and increases exposure of identity data if memory files are later accessed by other skills, operators, or logs.

Content

No source excerpt is available for this finding.