Back to skill

Security audit

Coding

Security checks for vulnerabilities and agentic risk

Overview

This skill is a dashboard-building helper, but it asks agents to create database structures, store supplied data, and repeatedly contact a specific external API with a session identifier without clear user controls.

Install only if you intentionally want this skill to create database objects, store the data you provide, and build dashboards that call the listed external service. Use a sandboxed or least-privileged database, avoid providing secrets or sensitive personal data, and confirm where session identifiers and collection names will be sent before use.

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:13
Finding

Unrestricted Database Operations and Repeated Disclosure of Runtime Identifiers

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, line 13
Vulnerability Type: Excessive database privileges and insufficiently constrained external API access
Risk Level: Medium

Complete Vulnerable Instruction Snippet:

text
1. Before creating a web page, design a database structure based on the supplied data and invoke tools to create that structure in the database.
2. The backend interface must account for the existing database structure. Send POST requests to https://teamo-dev.floatai.cn/api/engine/generalDataApi with {"session_group_id":"$SESSION_GROUP_ID$", "collection_name":${table_name}}. Develop a dynamic HTML dashboard based on the interface and fields. Each chart must independently request the interface and poll it every 60 seconds to update the page in real time.
3. Insert the supplied data into the newly created database structure.

The snippet above is an English translation of the complete vulnerable instruction segment in the audited file.

Technical Analysis

The skill directs the agent to create database structures and insert all supplied information without establishing authorization boundaries, an allowlisted database or schema, permitted field types, data-classification requirements, retention controls, or explicit user approval. If the agent has a broadly privileged database tool, these instructions permit data-definition and data-modification operations beyond what a narrowly scoped dashboard-generation task necessarily requires.

The skill also requires generated dashboards to submit a runtime session-group identifier and a dynamically selected collection name to a fixed external endpoint. Each chart makes a separate request and repeats it every 60 seconds. There are no requirements to validate collection names, protect the session identifier from client-side exposure, authenticate the endpoint safely, limit request frequency, or stop polling when the dashboard is inact ...[truncated 2214 chars]

Remediation
View remediation

Remediation Suggestions

  1. Require explicit user confirmation before creating database structures or persisting supplied information.
  2. Restrict the database tool to an allowlisted database and dedicated schema using a least-privileged service account.
  3. Separate schema-management privileges from normal insert and read privileges. Do not grant dashboard-generation workflows unrestricted DDL access.
  4. Define an approved schema and validate table, collection, column, and field names against strict allowlists. Never construct identifiers directly from untrusted input.
  5. Classify and minimize data before storage. Reject secrets, credentials, authentication tokens, and unnecessary personal information.
  6. Establish retention, deletion, encryption, audit-logging, and access-control requirements for persisted data.
  7. Keep reusable session identifiers out of client-side HTML where possible. Use short-lived, narrowly scoped tokens issued by a trusted backend.
  8. Enforce server-side authorization for every collection request and bind access to the requesting user and permitted session.
  9. Allowlist the external API hostname, require TLS certificate validation, and document precisely which fields are transmitted.
  10. Validate API responses before rendering them in HTML and apply contextual output encoding to prevent content-injection vulnerabilities.
  11. Consolidate polling where practical, stop polling when the page is inactive, and apply rate limits, expiration, and error backoff.
  12. Add a mandatory review step that presents the proposed schema, destination database, fields to be stored, endpoint, and polling behavior before any tool is invoked.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (2)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill directs the agent to design database schema, create structures, and insert provided data, while also implementing 60-second polling against an external API, but it provides no warning, approval gate, or scope limitation for these side effects. This is dangerous because it can cause unauthorized persistence, unintended modification of connected systems, and repeated network activity or load without the user's informed consent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The instructions explicitly send a session-related identifier ($SESSION_GROUP_ID$) to an external endpoint without any privacy notice, trust boundary explanation, or user consent mechanism. This creates a risk of leaking session-scoped information to a third party and normalizes external transmission of potentially sensitive contextual identifiers.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.