T08 · Insecure Dependencies
- Location
references/documentation-systems.md:7- Finding
Execution of an Unpinned Docusaurus Package
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent documentation helper, but some interactive API documentation templates normalize risky credential persistence, credentialed browser requests, mutable remote scripts, and unpinned package execution without enough warning or scoping.
Install only if you are comfortable reviewing generated documentation-site and interactive API portal configs before use. Pin package and CDN versions, avoid mutable latest URLs, disable persisted API authorization unless there is a controlled need, avoid sending browser credentials from try-it consoles by default, and add clear notices before collecting search analytics, uploading files, or logging account data.
references/documentation-systems.md:7Execution of an Unpinned Docusaurus Package
references/coverage-reports.md:104Unpinned Documentation Tool Installation Commands
references/documentation-systems.md:187Mutable Third-Party JavaScript Loaded into Documentation Pages
references/interactive-api-docs.md:162Unpinned Redoc Runtime Loaded from a Remote CDN
references/interactive-api-docs.md:137Persistent Storage of Interactive API Authorization Credentials
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
const tokens = await client.oauth.exchangeCode(code);
3. Use the access token:
```typescript
const client = new Client({ accessToken: tokens.access_token });
The trigger list contains very broad terms such as 'documentation', 'comments', and 'tutorials', which can cause the skill to be invoked in many unrelated contexts. Over-broad invocation increases the chance that a documentation-writing skill is selected when a more appropriate or safer skill should handle the task, leading to unintended actions or context misuse.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
- Generate coverage report
### MUST NOT DO
- Assume docstring format without asking
- Apply wrong API doc strategy for framework
- Write inaccurate or untested documentation
- Skip error documentation
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.
The custom analytics example captures documentation search queries, result counts, and timestamps without any accompanying notice about telemetry, retention, or consent expectations. Search queries can contain sensitive internal terms, error strings, names, or secrets pasted by users, so normalizing this pattern in a documentation skill can lead to privacy and compliance issues when adopted verbatim.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://api.example.com/oauth/authorize
tokenUrl: https://api.example.com/oauth/token
scopes:
read:users: Read user data
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://api.example.com/oauth/authorize
tokenUrl: https://api.example.com/oauth/token
scopes:
read:users: Read user data
The Swagger UI example explicitly enables persistAuthorization: true, which causes auth tokens to remain stored in the browser across page reloads/sessions. In interactive API docs this increases the chance of credential leakage on shared workstations or accidental reuse of privileged tokens, especially because the documentation does not warn users about retained auth state.
The Stoplight Elements example sets tryItCredentialsPolicy="include", which can cause browser/session credentials such as cookies or HTTP auth to be sent with interactive requests. Without an explicit warning, users may unknowingly execute authenticated actions against real environments, increasing risk of CSRF-like misuse, unintended state changes, or exposure of privileged session context.
The how-to guide instructs readers to select a file from the local system and upload it with client.files.upload(formData), but it does not explicitly warn that the file contents will be transmitted to the service and stored remotely. In markdown guidance, behaviors affecting user data or privacy should be clearly disclosed.
This markdown file includes a quick-start example that calls client.users.list() and instructs the user to print and inspect returned user data, but it does not warn that the response may contain real account data. For markdown files, user-facing descriptions should disclose behaviors that can affect privacy or user data handling.
Detected: suspicious.exposed_secret_literal