Back to skill

Security audit

Meddic B2b Sales Review

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent sales-review assistant, but it tells agents to automatically read and write customer memory and create Cron reminders without clear consent or safeguards.

Install only if you are comfortable with a sales-review skill that may access and persist customer notes and set reminders. Before use, require explicit confirmation for every memory read/write and scheduler change, sanitize customer names or use fixed customer IDs, and avoid storing confidential customer details unless you have a retention and deletion process.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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 (2)

T06 · System Persistence

Error
Location
references/review-visit.md:70
Finding
Automatic Creation of Persistent Cron Tasks Without Explicit Authorization<![CDATA[ ## Vulnerability Details **File Location**: `references/review-visit.md:70-74`; related directives also appear at `SKILL.md:19-20` and `references/review-visit.md:7-9` **Vulnerability Type**: T06: System Persistence **Risk Level**: High ### Vulnerable Instruction Snippet The following is a faithful English rendering of the complete relevant section at `references/review-visit.md:70-74`: ```markdown ## Memory Integration 1. **Read**: Before the review, read historical customer memory from `memory/customers/{customer-name}.md` and compare it with new information from the current visit. 2. **Write**: After the review, automatically append the result to the customer memory file. 3. **Reminder**: Create Cron reminders based on the deadlines in the action plan. ``` The scheduled-trigger directive at `references/review-visit.md:7-9` states: ```markdown ## Trigger Conditions - The user describes a visit: "Today I met customer XX" - The user requests a review: "Help me conduct a visit review" - It may also be triggered by a Cron scheduled task, such as proactively asking about the day's visits every day at 20:00. ``` The primary Skill instructions at `SKILL.md:19-20` similarly advertise: ```markdown 5. **Visit review**: A structured review after a single visit, integrating MEDDIC status updates, Six-Step evaluation, action plans, and customer memory. 6. **Routine trigger**: Supports Cron scheduling, such as proactively asking about the day's visits every day at 20:00. ``` ### Technical Analysis The Skill explicitly instructs the Agent to create Cron reminders from action-plan deadlines and supports recurring Cron-triggered interactions. A Cron entry is persistent system state: it remains active after the current Skill invocation and can trigger future actions without a new request in the current session. The instructions contain no requirement to: - Obtain explicit user approval before creating a scheduled task. - Display the exac ...[truncated 2086 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace automatic Cron creation with a proposed reminder plan. 2. Require explicit, informed confirmation before every scheduler modification. 3. Show the user: - The exact execution date and time. - Whether the task is one-time or recurring. - The reminder contents. - The scheduler identity or account under which it will run. 4. Prefer one-time reminders over recurring Cron entries. 5. Assign an explicit expiration date to every recurring task. 6. Use stable task identifiers to prevent duplicate reminders. 7. Remove a task when its action item is completed, canceled, or expired. 8. Do not include confidential customer details in command-line arguments, job names, or scheduler logs. 9. Restrict scheduler operations to a dedicated allowlisted reminder API rather than arbitrary Cron commands. 10. Provide the user with a list and deletion mechanism for all tasks created by the Skill. 11. If scheduler tooling is unavailable or authorization is not granted, return reminder instructions without modifying system state. ]]>

T05 · Unauthorized Access and Privilege Escalation

Error
Location
references/review-visit.md:70
Finding
Path Traversal and Unapproved Persistence Through Customer-Controlled Memory Paths<![CDATA[ ## Vulnerability Details **File Location**: `references/review-visit.md:70-74` **Vulnerability Type**: T05: Unauthorized Access and Privilege Escalation, T09: Insecure Skill Coding Practices **Risk Level**: High ### Vulnerable Instruction Snippet The following is a faithful English rendering of the complete relevant section: ```markdown ## Memory Integration 1. **Read**: Before the review, read historical customer memory from `memory/customers/{customer-name}.md` and compare it with new information from the current visit. 2. **Write**: After the review, automatically append the result to the customer memory file. 3. **Reminder**: Create Cron reminders based on the deadlines in the action plan. ``` The customer name is a required user-supplied input under `references/review-visit.md:11-19`: ```markdown ## Input | Input item | Required | Description | |------------|----------|-------------| | Customer name | Yes | Which customer was visited | | Visit content | Yes | Text description, speech-to-text, or visit notes | | Participants | Recommended | Customer-side and internal participants | | Visit date | Recommended | Defaults to the current day | ``` ### Technical Analysis The Skill constructs a filesystem path by directly interpolating the user-controlled customer name: ```text memory/customers/{customer-name}.md ``` No instruction requires validation, sanitization, canonicalization, or verification that the resolved path remains inside `memory/customers`. A customer name containing path separators or traversal components can therefore alter the intended target. For example, a value conceptually equivalent to: ```text ../../target ``` would produce: ```text memory/customers/../../target.md ``` Depending on path resolution and Agent permissions, this can reference a file outside the intended customer-memory directory. The workflow performs both a read and an automatic append, creating separate confidentiality and integrity risks. ...[truncated 2225 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Never use a raw customer name as a filesystem path component. 2. Generate a stable opaque identifier for each customer, such as a UUID or keyed hash. 3. If a human-readable identifier is required: - Normalize Unicode. - Apply a strict allowlist of permitted characters. - Reject `/`, `\`, `..`, null bytes, drive prefixes, and control characters. - Enforce a conservative maximum length. 4. Resolve the candidate path to a canonical absolute path and verify that it remains beneath the canonical `memory/customers` directory. 5. Reject symbolic links and avoid following links when opening customer-memory files. 6. Use safe file-opening primitives that prevent traversal and link races. 7. Require explicit confirmation before reading existing customer memory or appending new data. 8. Show the destination record and a summary of the information that will be stored. 9. Separate customer or tenant records with access controls rather than relying only on filenames. 10. Encrypt sensitive records at rest and restrict file permissions. 11. Define retention, export, correction, and deletion procedures. 12. Minimize stored content and redact personal, confidential, or commercially sensitive details unless necessary. 13. Use atomic writes and structured records rather than unrestricted append operations. 14. Treat previously stored memory as untrusted data and prevent it from becoming executable Agent instructions. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • 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
Findings (33)

Hidden Instructions

High
Category
Prompt Injection
Content
---
name: meddic-b2b-sales-review
description: Structured B2B sales review using original PTC MEDDIC Six-Step methodology. Stage gates and win rates follow the authentic PTC six-step framework (Discovery→Scope→Go/No-Go→Validation→Business Case→Close). Enhanced D1-D9/S1-S7 gates are labeled as VP-level depth tools for deeper review, not substitutes for the original gates.
version: 1.4.0
Confidence
60% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The primary user-facing description is written entirely in Chinese and presents the skill's behavior and usage in that language, with no indication that users may choose another language. This can violate language/locale policy when a skill implicitly mandates a specific language without user opt-in or a justified region-specific scope.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The entire document is written in Chinese and does not indicate that language selection is optional or limited to a specific region or audience. Under the policy, forcing a specific language without user opt-in is a natural-language locale violation.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
The entire reference content is written in Chinese and line L26 states output requirements without indicating that another language may be used. Under the language/locale policy, forcing a specific language without user opt-in is a natural-language policy concern unless the locale restriction is clearly justified, which is not present here.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The entire skill content is written in Chinese and does not indicate that language selection is optional or that the skill is intended only for a Chinese-speaking or region-specific audience. Under the policy, a skill that effectively requires a specific language without opt-in is a natural-language locale violation.

Natural-Language Policy Violations

Medium
Confidence
86% confidence
Finding
The entire skill file is written in Chinese and does not indicate that language selection is optional or configurable. Under the stated policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale constraint is documented and justified.

Natural-Language Policy Violations

Medium
Confidence
92% confidence
Finding
This markdown file presents all instructions and operational guidance exclusively in Chinese, and there is no indication that the user can opt into another language or that the skill is intended only for a Chinese-speaking audience. Under the policy rule for language or locale constraints, forcing a specific language without user choice is a natural-language policy concern.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The entire skill reference is written only in Chinese, with no indication that users may choose another language or that the file is restricted to a Chinese-speaking or region-specific audience. Under the policy, forcing a specific language without opt-in is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
The entire guidance file is written in Chinese and provides no indication that language choice is optional or adaptable to user preference. Under the policy, forcing a specific language without opt-in is a natural-language locale violation unless the constraint is explicitly documented and justified.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The file explicitly instructs automatic recall based on broad sales/scenario descriptions, which can cause the agent to inject this methodology into loosely related conversations. Because these triggers are not tightly scoped to confirmed sales-analysis tasks, normal user language could spur unintended skill activation and steer responses away from user intent.

Vague Triggers

Medium
Confidence
95% confidence
Finding
Several trigger words listed here are common everyday terms like 'consider,' 'urgent,' or 'boss,' which are highly ambiguous outside sales workflows. If the system uses them for automatic association, unrelated conversations may be misclassified and the skill may override more appropriate reasoning paths or introduce irrelevant business frameworks.

Vague Triggers

Medium
Confidence
90% confidence
Finding
The topic-based auto-invocation section maps broad phrases directly to methodology stages without clear constraints, making over-triggering likely. This is dangerous because it can silently bias the agent toward a predefined framework even when the user's request is only superficially similar, reducing accuracy and potentially causing inappropriate advice.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
This markdown file is entirely written in Chinese and does not indicate that users may choose another language or locale. Under the stated policy, forcing a specific language without opt-in is a natural-language policy violation unless the locale restriction is documented and justified.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The entire skill is written as prescriptive operational guidance in Chinese, with no indication that users may choose another language or locale. Under the stated policy, forcing a specific language without opt-in is a natural-language policy violation.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The entire skill is written only in Chinese and provides no indication that users may choose another language or locale. Under the policy for natural-language constraints, this can constitute a language/locale restriction without explicit opt-in.

Vague Triggers

Medium
Confidence
93% confidence
Finding
The trigger phrases are broad enough to match routine conversation about customer visits, which can cause the skill to activate when the user did not actually request a structured debrief. This creates unintended collection and processing of business notes and can cascade into memory reads/writes or follow-up actions based on incidental chat.

Vague Triggers

Medium
Confidence
92% confidence
Finding
The Cron-based activation allows proactive triggering without clear scope, consent, frequency limits, or gating conditions. In practice, this can cause the agent to initiate debrief workflows unexpectedly, potentially surfacing sensitive customer context or creating actions/reminders without an explicit user request at that moment.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill explicitly instructs automatic reading of historical customer memory and automatic appending to customer memory files, but does not mention user notice, confirmation, or safeguards around modifying stored data. This is dangerous because sensitive customer information may be accessed or persisted without clear consent, and inaccurate summaries could permanently contaminate records and drive future actions.

Natural-Language Policy Violations

Medium
Confidence
87% confidence
Finding
This markdown file is entirely written in Chinese and does not indicate that language selection is optional or that the skill is intentionally limited to a Chinese-speaking audience. Under the policy rule for natural-language violations, forcing a specific language without user opt-in can be a locale-policy issue.

Natural-Language Policy Violations

Medium
Confidence
96% confidence
Finding
The markdown text presents the skill template only in Chinese, which can constitute a language/locale policy violation when no user opt-in or alternative language option is provided. The file does not indicate that the template is intended only for a Chinese-speaking audience or region-specific workflow.

Natural-Language Policy Violations

Medium
Confidence
95% confidence
Finding
The template is written entirely in Chinese and prescribes a fixed Chinese output format without any language selection or user opt-in. In an agent skill, this can cause unwanted language coercion, reduce usability for non-Chinese users, and create confusion or miscommunication when the surrounding system or user expects another language.

Natural-Language Policy Violations

Medium
Confidence
97% confidence
Finding
This markdown file presents the scorecard template entirely in Chinese, with no indication that language choice is optional or that the template is intended only for a Chinese-speaking or region-specific context. The policy explicitly calls for flagging language or locale constraints when they are imposed without user opt-in or clear justification.

Natural-Language Policy Violations

Low
Confidence
90% confidence
Finding
This markdown file contains all instructional content in Chinese and does not indicate that the user can choose another language or that the skill is intentionally limited to Chinese-speaking users. Under the natural-language policy rules, forcing a specific language without user opt-in can be a locale-policy issue.

Natural-Language Policy Violations

Low
Confidence
92% confidence
Finding
The entire skill file is written only in Chinese and does not offer any language choice, fallback, or opt-in for users who may expect another language. Under the stated policy, a skill that enforces a specific language without user choice is a natural-language policy concern.

Natural-Language Policy Violations

Low
Confidence
89% confidence
Finding
SQP-3 applies to all file types and covers language or locale policy violations. This markdown content presents all instructions in Chinese with no indication of user opt-in, alternative language support, or justification for a Chinese-only audience.

Static analysis

No suspicious patterns detected.