Back to skill

Security audit

Dele Deploy

Security checks for vulnerabilities and agentic risk

Overview

This looks like a real deployment helper, but it can upload entire local folders and an API key to a configurable web endpoint, so it should be reviewed before installation.

Install only if you are comfortable with an agent uploading selected local files to Dele. Use a dedicated static build output folder, avoid project roots containing .env files or secrets, choose non-public visibility unless public listing is intended, and do not allow prompts or callers to override the upload URL away from the Dele endpoint.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (3)

T09 · Insecure Skill Coding Practices

Error
Location
skill.md:89
Finding

Caller-Controlled Upload Endpoint Can Exfiltrate Local Files and API Credentials

Content
View full analysis
str: ``` ```python headers = {} if api_key: headers['Authorization'] = f"Bearer {api_key}" headers['x-agent-user'] = "openclaw-agent" try: for file_path, rel_path in files_to_upload: f = open(file_path, 'rb') file_handles.append(f) multipart_data.append(('files', (os.path.basename(file_path), f))) multipart_data.append(('paths', (None, rel_path))) response = requests.post(api_url, files=multipart_data, headers=headers) ``` ### Technical Analysis The upload destination is exposed as a caller-controlled `api_url` parameter. The implementation sends all selected local files to that URL and, when an API key is supplied, places the key in the `Authorization` header. No validation ensures that the destination: - Uses HTTPS. - Belongs to the expected `www.dele.fun` origin. - Uses an approved port and path. - Does not resolve to a loopback, private, link-local, or cloud metadata address. - Remains on an approved origin after HTTP redirection. Allowing the endpoint to be changed is not required for the declared purpose of deploying files to Dele. A fixed, trusted Dele endpoint would provide the required functionality with less privilege and substantially lower exposure. ### Attack Path 1. An attacker, malicious prompt, or compromised calling workflow supplies an attacker-controlled URL as `api_url`. 2. The Agent inv ...[truncated 1152 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
skill.md:144
Finding

Unrestricted Recursive Upload Can Publish Sensitive or Out-of-Scope Files

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
skill.md:32
Finding

Unpinned Dependency Installation Reduces Supply-Chain Integrity

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (5)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill description and overview do not clearly warn that using the skill uploads local files to an external service and defaults to public visibility. In this context, that omission is especially risky because users and agent operators may not realize sensitive code, assets, tokens embedded in files, or private prototypes could be exposed on a public URL.

Content

No source excerpt is available for this finding.

Scope Creep

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill manifest declares only read and glob capabilities, but the implementation performs outbound HTTP POST requests to upload local files and change app visibility. This mismatch is dangerous because it hides a data exfiltration action from policy and review layers, and the code can transmit arbitrary local project contents to an external service.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
84% confidence
Finding

Advertising that agents can 'automatically deploy' encourages autonomous external publication of generated content without an explicit approval checkpoint. In a deployment skill, autonomous action is more dangerous because it can publish local artifacts to a live URL, potentially exposing proprietary or sensitive information with little user awareness.

Content

Scanner excerpt · skill.md (reported line 17)May include surrounding context.

md
# Dele Deploy Skill

## Overview
This skill allows AI Agents (OpenClaw, Cursor, Claude, etc.) to automatically deploy generated HTML files or frontend project folders to Dele (https://www.dele.fun) — a static site hosting platform. It returns a live URL that can be shared with the user.

## Required Environment Variables

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The invocation guidance says to use the skill whenever a user asks to deploy, publish, or share a web application, which is broad enough to trigger on common sharing requests without emphasizing consent to external upload. In context, that can cause an agent to send local files to a third-party host when the user may only want a local preview, packaging, or non-public handoff.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
70% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · skill.md (reported line 189)May include surrounding context.

md
# Set visibility if specified and not default
        if visibility and visibility != "public":
            vis_url = api_url.replace('/api/upload', '/api/apps/visibility')
            vis_resp = requests.post(
                vis_url,
                json={"appName": app_name, "visibility": visibility},
                headers=headers

Static analysis

No suspicious patterns detected.