Back to skill

Security audit

Lead Storage RE-India

Security checks for vulnerabilities and agentic risk

Overview

This skill has a clear lead-storage purpose, but its approval gate would treat any non-empty confirmation token as enough to write personal and business lead data.

Review before installing. Use this only behind a trusted supervisor and storage service that verifies approval independently, ideally with signed short-lived tokens bound to the exact lead payload. Do not rely on the skill's non-empty token check alone before writing personal lead data to Sheets or a database.

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
references/storage-input.schema.json:13
Finding
Supervisor Confirmation Gate Accepts Arbitrary Non-Empty Tokens## Vulnerability Details **File Location**: `references/storage-input.schema.json:13-16`; related workflow instructions in `SKILL.md:21-24` and `SKILL.md:37` **Vulnerability Type**: Authorization bypass caused by inadequate confirmation-token validation **Risk Level**: Medium **Vulnerable code in `references/storage-input.schema.json`:** ```json "confirmation_token": { "type": "string", "minLength": 1 } ``` **Related workflow instructions in `SKILL.md`:** ```markdown 1. Accept payload from Supervisor. 2. Validate payload with `references/storage-input.schema.json`. 3. Verify `confirmation_token` is present and non-empty. 4. Write leads to storage through write-only interfaces. ``` ```markdown - Never write anything when confirmation token is missing or invalid. ``` ### Technical Analysis The workflow treats the presence of a non-empty `confirmation_token` as evidence of supervisor approval. The schema only enforces that the token is a string containing at least one character, while the instructions do not define any cryptographic verification or trusted supervisor-validation mechanism. Consequently, an arbitrary caller can provide a value such as `"x"` and satisfy the documented confirmation check. The design does not require a signature or message authentication code, identify a trusted issuer, bind approval to the submitted leads, enforce an expiration time, or prevent token replay. Although the instructions refer to an “invalid” token, they provide no rule or interface by which invalid tokens can be distinguished from valid ones. The package contains no executable storage implementation, so the ultimate exploitability also depends on the integrating runtime following this documented workflow without adding stronger authorization controls. ### Attack Path 1. An attacker or unauthorized caller constructs a payload containing attacker-controlled lead records. 2. The caller sets `confirmation_toke ...[truncated 1221 chars]
Remediation
## Remediation Suggestions 1. Replace the arbitrary string gate with a signed, short-lived confirmation artifact issued by a trusted supervisor service. 2. Verify the token cryptographically before performing any write. Validate its signature, issuer, audience, expiration time, issuance time, and intended operation. 3. Bind the confirmation to a canonical digest of the exact lead payload so that approved records cannot be replaced or modified after approval. 4. Include a unique nonce or token identifier and retain a consumed-token record to prevent replay. 5. Perform authorization verification in the trusted storage implementation rather than relying only on agent instructions or JSON Schema validation. 6. Reject requests when verification services are unavailable or when any authorization attribute is missing or ambiguous. 7. Avoid logging raw tokens, phone numbers, or complete lead payloads. Log only redacted identifiers and rejection reasons. 8. Add negative tests covering arbitrary strings, forged signatures, expired tokens, wrong audiences, modified payloads, and replayed tokens.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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

Static analysis

No suspicious patterns detected.