T09 · Insecure Skill Coding Practices
- Location
scripts/ftp-utils.mjs:84- Finding
FTPS Certificate Validation Is Disabled
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
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.
scripts/ftp-utils.mjs:84FTPS Certificate Validation Is Disabled
scripts/ftp-utils.mjs:29Plaintext FTP Is Used by Default
scripts/ftp-utils.mjs:16Malformed Configuration Errors Can Disclose FTP Credentials
scripts/copy.mjs:19Remote Files Are Copied Through a Predictable and Insufficiently Cleaned Temporary Path
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.
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.
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.
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.
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.
"type": "module",
"private": true,
"dependencies": {
"basic-ftp": "^5.0.5"
}
}
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.
No suspicious patterns detected.