Back to skill

Security audit

Dgt Wait

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent wait-time reporting purpose, but it exposes a live database access path and gives incomplete privacy and persistence disclosures.

Review this before installing. It appears to be a legitimate community wait-time skill, but installation would expose and use a live Supabase database key for public reads and submissions. Only install if the publisher can confirm strict Supabase RLS, insert-only/public-read limits as intended, no anonymous update/delete access, server-side validation and rate limiting, and clear privacy terms for stored reports and any IP-derived limits.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:16
Finding

Hardcoded Long-Lived Supabase Anonymous Access Token

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 16–17
Vulnerability Type: Hardcoded external-service credential and direct database exposure
Risk Level: Medium

text
- API URL: `https://qpryylklcyvbotrzfpfa.supabase.co/rest/v1/`
- Anon Key: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InFwcnl5bGtsY3l2Ym90cnpmcGZhIiwicm9sZSI6ImFub24iLCJpYXQiOjE3ODA1ODc3ODQsImV4cCI6MjA5NjE2Mzc4NH0.aYlRmmrSYUnxbozaRH1Y5wqr_BHrx-cCkbUezdkVMbo`

Technical Analysis

The Skill embeds a reusable Supabase anonymous JWT together with its REST endpoint. Supabase anonymous keys are commonly exposed to client applications by design, but their security depends entirely on strict Row Level Security policies, table permissions, validation rules, and server-side rate limiting.

The project contains no database policies or backend implementation demonstrating that the anon role is restricted to the minimum operations required. Anyone who obtains this Skill can extract the token and invoke the Supabase REST API independently of the intended agent workflow. Client-side instructions concerning acceptable wait times, outlier detection, or daily limits do not prevent direct API requests.

Consequently, weak or absent database controls could expose the reportis table to unauthorized reads, arbitrary submissions, modification, or deletion. The token must not be treated as a confidential server credential, and possession of it must confer only tightly constrained public access.

Attack Path

  1. Download or inspect the distributed SKILL.md file.
  2. Extract the Supabase project REST endpoint and embedded anonymous JWT.
  3. Send requests directly to the project REST API with the token in the apikey and authorization headers.
  4. Enumerate the operations permitted to the anon role on the reportis table.
  5. If Row Level Security or grants are insufficient, read records, submit fabricated reports, alter ex ...[truncated 806 chars]
Remediation
View remediation

Remediation Suggestions

  1. Enable Row Level Security on every exposed Supabase table and verify that it cannot be bypassed by the anon role.
  2. Grant the anonymous role only the operations required by the Skill. Do not grant anonymous update, delete, schema-management, or unrestricted read permissions.
  3. Define restrictive insertion policies and database constraints for required fields, allowed province values, numeric ranges, string lengths, and accepted data types.
  4. Enforce the 0.5 to 52 week range in the database rather than relying on natural-language Skill instructions.
  5. Implement abuse prevention and rate limiting in a trusted backend, API gateway, or database function. Client-side or instruction-only IP limits are bypassable.
  6. Consider exposing a narrow backend API or security-definer database function instead of direct generic table access.
  7. Ensure public queries return only fields intended for disclosure and avoid storing personal data in free-form fields.
  8. Review Supabase access logs and rotate the anonymous key if it was previously associated with excessive permissions or observed abuse.
  9. Add automated tests that authenticate as the anonymous role and confirm that prohibited reads, updates, and deletions fail.
  10. Document that an anonymous key is a public identifier rather than a secret and that security must be enforced through server-side authorization controls.
Vulnerability Patterns
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • 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 (4)

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
99% confidence
Finding

The skill file embeds a live Supabase API endpoint and an anon JWT-like key directly in documentation, which is sensitive operational metadata and may enable unauthorized use of the backend depending on database policies. In agent-skill contexts, hardcoded service credentials are especially dangerous because they can be harvested at scale, abused for scraping or spam submissions, and combined with weak row-level security to exfiltrate or tamper with data.

Content

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

md
---
name: dgt-wait
description: Consulta els temps d'espera per a exàmens pràctics de conduir a Espanya. Reporta la teva experiència i ajuda la comunitat.
version: 1.0.0
author: el-teu-nom
---

# DGT Wait - Skill per a cues d'exàmens pràctics

Aquest skill permet consultar i reportar els temps d'espera per a exàmens pràctics de conduir a diferents províncies d'Espanya.

## Configuració

El skill utilitza Supabase com a base de dades. Les credencials són:

- API URL: `https://qpryylklcyvbotrzfpfa.supabase.co/rest/v1/`
- Anon Key: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZS

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill promises that no IP is stored permanently while also requiring per-IP rate limiting, which creates a deceptive privacy claim and a likely mismatch between implementation and user expectations. Even if only temporary identifiers are used, the current wording can mislead users about collection and retention of network-linked data and creates compliance and trust risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The entire skill description, response formats, and operational instructions are written as if the skill operates only in Catalan, with no opt-in or alternative language handling. This creates a natural-language locale restriction that may violate language-choice policy unless the regional limitation is explicitly documented and justified.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill stores user-submitted reports in a database and asks users to contribute experience data, but the submission flow does not clearly warn at the point of collection that entries will persist and may require moderation or review. This can lead to uninformed submission of sensitive or defamatory content, and increases abuse risk because users are not told what will be stored or how unsafe content is handled.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.