T09 · Insecure Skill Coding Practices
- Location
scripts/share-file.js:25- Finding
Shared filename collisions allow content substitution and cross-token deletion
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a real public file-sharing tool, but it has implementation flaws that could expose or substitute shared files, so users should review it carefully before installing.
Install only if you are comfortable running a public file-sharing server. Use a strong SHARE_SECRET, avoid query-string secrets, confirm every file before sharing, do not place sensitive files in the shared directory unless intended, and fix the filename-collision and TTL-validation issues before relying on it for important files.
scripts/share-file.js:25Shared filename collisions allow content substitution and cross-token deletion
scripts/server.js:47Unvalidated TTL values can bypass expiration and disrupt status processing
scripts/server.js:27Management secret accepted through query parameters may leak through infrastructure logs
scripts/package.json:10Dependency installation is not locked to an audited dependency graph
The skill declares environment variable requirements, including a sensitive secret, but does not declare an explicit tool scope or permission boundary. In an agent environment, missing scope metadata can cause the skill to be invoked with broader-than-expected capabilities or without clear review of its access to secrets and local execution context.
The trigger phrases are broad enough to match common conversation like 'share', 'send link', or 'download link', which can activate the skill in situations the user did not clearly intend. Because this skill creates public internet-accessible links for local files, accidental invocation increases the risk of unintended data exposure.
The file contains hard-coded Italian user-facing strings such as error/download messages and explicitly formats timestamps with the 'it-IT' locale and 'Europe/Rome' timezone. This enforces a specific language/locale choice for all users, which matches the policy-violation category when no opt-in or justification is provided.
This code file contains natural-language strings and usage text exclusively in Italian, including the top-level description and CLI usage. That imposes a locale/language choice on users without offering an alternative or documenting that the tool is intentionally region-specific.
This is a real vulnerability: the script explicitly permits the service to start when SHARE_SECRET is unset and only prints a warning, which means administrative endpoints such as /generate and /status may be exposed without authentication. In this skill's context, the service is designed to create public file-sharing links and may be exposed through Cloudflare Tunnel, so unauthenticated access could let an external party generate links, enumerate shared files, or interfere with file lifecycle behavior.
The dependency is specified with a caret range (^5.2.1), which allows installation of newer compatible releases rather than a single verified version. In a security-sensitive file-sharing service exposed publicly via Cloudflare Tunnel, this weakens build reproducibility and can unexpectedly introduce vulnerable or unreviewed dependency updates into deployed environments.
"author": "",
"license": "ISC",
"dependencies": {
"express": "^5.2.1"
}
}
The manifest references express without an exact pinned version, and static analysis notes multiple known advisories affecting some Express releases. Because this skill provides public download links through an internet-exposed server, uncertainty about the exact installed version materially increases risk: a vulnerable Express release could be pulled in without visibility, potentially exposing redirect, injection, or other web-layer flaws.