T09 · Insecure Skill Coding Practices
- Location
src/client.ts:5- Finding
Authenticated Strapi Traffic Can Be Sent Over Cleartext HTTP
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Strapi skill is coherent but gives an agent broad authenticated CMS, user, file, and raw API power with weak safeguards around secrets, file access, remote downloads, and destructive actions.
Install only for a Strapi instance you trust, with a narrowly scoped API token and HTTPS base URL. Avoid using it for account authentication, password reset, arbitrary local file paths, or URL-based media uploads until those paths are constrained and secrets are redacted. Confirm destructive content, schema, user, locale, and media operations manually before execution.
src/client.ts:5Authenticated Strapi Traffic Can Be Sent Over Cleartext HTTP
src/handlers/files.ts:24Unrestricted Remote File Download Enables Server-Side Request Forgery and Memory Exhaustion
src/handlers/files.ts:82Unrestricted Local File Paths Can Be Read and Uploaded to Strapi
instructions.md:343Passwords and Reset Tokens Are Exposed Through Process Arguments and Login JWTs Are Printed to Standard Output
The skill description claims broad CMS, media, schema, locale, auth, and raw HTTP management capabilities that the underlying implementation reportedly does not actually provide. This mismatch is dangerous because users and orchestrators may invoke the skill under false assumptions, potentially exposing credentials, routing sensitive requests to the wrong capability set, or approving a skill whose real behavior has not been accurately represented.
The end-user management examples include listing users, creating accounts with plaintext credentials in examples, assigning roles, and blocking users without emphasizing sensitivity or confirmation requirements. In a skill designed for agent-driven execution, this can lead to unauthorized account creation, privilege misuse, exposure of credentials in logs/history, and harmful user-management actions triggered by simple prompts.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
- **Content introspection** — discover types, schemas, components, relations; inspect real data shape
- **Schema management** — create/update/delete content types, components, fields (local/dev only; production blocks this)
- **Form layout** — configure edit form field order, sizes, labels, descriptions (local/dev only)
- **Draft & publish** — list drafts/published, publish, unpublish, create as draft or published
- **Media library** — list, get, upload, update metadata, delete files
- **Users & Permissions** — end-user CRUD, roles, authentication (login, register, password reset)
- **Locales (i18n)** — list, create, delete locales
The README documents destructive collection, single-type, and media deletion commands in a high-impact CMS context without a clear general warning that these operations can permanently delete content or files. In an agent skill, terse examples can normalize irreversible actions and increase the chance of accidental data loss when invoked against production systems.
The README exposes user-management and authentication commands, including create/update/delete users and login/register/password reset flows, without warning about credential handling, least privilege, audit sensitivity, or account-impacting consequences. In a skill that can act on live identity data, lack of guidance increases the risk of credential leakage, unauthorized account changes, and unsafe operation by downstream agents or users.
The skill advertises operations that inherently require network access and use of sensitive environment-backed credentials, but it does not declare an explicit tool scope such as allowed tools or permissions. This creates ambiguity in what the skill is authorized to do and weakens reviewability, increasing the chance of over-privileged or unintended execution against a live Strapi instance.
The activation description is very broad, covering generic CMS, media, REST API, user, role, and authentication requests. In an agent setting, this can cause the skill to trigger for loosely related prompts and perform credential-backed actions on a Strapi instance when the user may only be asking general questions, increasing the risk of unintended access or modification.
The setup instructs users to provide a Strapi API token and base URL, yet the skill description does not clearly warn that the skill can perform authenticated, integrity-impacting operations against a remote service and may expose sensitive data via raw HTTP access. With credential-backed network access to a CMS, insufficient privacy and integrity warnings materially increase the chance of accidental misuse or overtrust.
The capabilities list includes destructive operations such as schema create/update/delete and content deletion, but the description does not clearly warn that these actions can irreversibly alter production CMS data and structure. In this context, a Strapi admin skill connected to a live instance makes omission of such warnings more dangerous because a user may enable or invoke it without appreciating the blast radius.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.
No suspicious patterns detected.