Back to skill

Security audit

Ftp Client

Security checks for vulnerabilities and agentic risk

Overview

This FTP skill does what it says, but its default connection security and remote delete behavior create review-worthy risk for credentials and files.

Review this skill carefully before installing. Use only a least-privileged FTP account, prefer FTPS only if certificate validation is fixed, avoid plain FTP on untrusted networks, confirm remote paths before delete or recursive operations, and rotate credentials if malformed configuration values may have been logged.

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 (4)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/ftp-utils.mjs:84
Finding

FTPS Certificate Validation Is Disabled

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/ftp-utils.mjs:29
Finding

Plaintext FTP Is Used by Default

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/ftp-utils.mjs:16
Finding

Malformed Configuration Errors Can Disclose FTP Credentials

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/copy.mjs:19
Finding

Remote Files Are Copied Through a Predictable and Insufficiently Cleaned Temporary Path

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • 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 (6)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs users to store FTP credentials in an environment variable and supports plain FTP, but it does not warn that FTP transmits credentials and data without transport encryption. This can expose usernames, passwords, and transferred content to interception, and environment-variable storage also carries local secret-handling risks if logs or process metadata are exposed.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill exposes destructive remote operations, including recursive deletion, but does not include any warning, confirmation guidance, or safety guardrails. In an agentic context, this increases the chance of accidental or overly broad deletion of remote data, especially if a model or user supplies an incorrect path.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

This code initiates outbound FTP/FTPS connections using credentials from an environment variable without any user-facing disclosure or confirmation, which can cause unexpected credential transmission and network access when the skill is invoked. In this skill context, the risk is elevated because the helper also permits plain FTP and disables TLS certificate validation for FTPS, increasing the chance of credential exposure or man-in-the-middle interception.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This manifest description only says the skill is an "FTP/FTPS client skill for OpenClaw" and does not provide any specific invocation phrases, scope limits, or exclusion conditions. In a manifest file, such broad wording can leave activation behavior underspecified and increase the chance of unintended matching or invocation.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

The dependency is specified with a caret range (^5.0.5), which allows different patch/minor releases to be installed over time. This weakens supply-chain reproducibility and can unintentionally pull in a vulnerable or malicious upstream release, especially significant here because the skill performs network file operations against FTP/FTPS servers.

Content

Scanner excerpt · package.json (reported line 8)May include surrounding context.

json
"type": "module",
  "private": true,
  "dependencies": {
    "basic-ftp": "^5.0.5"
  }
}

Unverifiable Dependency: basic-ftp has 5 known advisory(ies) (CVE-2026-27699 (Basic FTP has Path Traversal Vulnerability in its downloadToDir() method); GHSA-6v7q-wjvx-w8wg (basic-ftp: Incomplete CRLF Injection Protection Allows Arbitrary FTP Command Exe); CVE-2026-39983 (basic-ftp has FTP Command Injection via CRLF) +2 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
96% confidence
Finding

The manifest uses basic-ftp without pinning to a verifiably safe release, while the package has multiple advisories including path traversal and FTP command injection. In the context of an FTP client skill that downloads files and sends FTP commands, these classes of flaws are directly relevant and could lead to unauthorized file writes/reads or execution of unintended FTP commands against remote servers.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.