T09 · Insecure Skill Coding Practices
- Location
SKILL.md:33- Finding
Plaintext Persistent Storage of a ComPDF API Key
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a disclosed ComPDF document-processing helper, with real privacy and API-key handling considerations but no artifact-backed malicious behavior.
Install only if you are comfortable sending selected documents and any needed PDF passwords to ComPDF for processing. Keep the skill-local api_key file private, exclude it from source control and archives, and rotate the ComPDF key if it may have been exposed. Use extra care with confidential PDFs, decryption outputs, and AI extraction of sensitive fields.
SKILL.md:33Plaintext Persistent Storage of a ComPDF API Key
Referenced artifact was not completely inspected
3. Read the matching heading in `references/official-api-reference.md`. Use its exact endpoint path, request fields, request mode, and response fields; do not i
Referenced artifact was not completely inspected
6. Resolve credentials only from `api_key` in the directory containing this `SKILL.md`. Read its first non-empty line. Do not inspect environment variables or a
The documentation repeatedly instructs users to upload source files to ComPDF and retrieve outputs from ComPDF-hosted download URLs, but it does not foreground that documents and extracted content leave the local trust boundary and are transmitted to a third-party service. In a document-processing skill, this omission can cause unintentional disclosure of sensitive PDFs, OCR text, and derived data.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
The example response includes a plaintext password inside the returned fileParameter JSON (for example, userPassword embedded in the response payload). This normalizes secret echoing and can lead integrators to log API responses, persist passwords in telemetry, or expose credentials through debugging and audit systems.
The markdown explains how to remove password protection from encrypted PDFs, which changes the protection state of a document in a potentially security-impacting way. Although the feature purpose is described, there is no explicit caution to users that the resulting file will be unprotected and should be handled carefully.
The reference file materially expands the documented capability of the skill by introducing AI/IDP parsing and extraction endpoints that are not reflected in the manifest description. This creates a security-relevant scope mismatch: operators or downstream agents may invoke higher-sensitivity document understanding features, including extraction of structured content from uploaded files, without explicit disclosure, review, or consent expectations.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
This file is predominantly English, but some parameter descriptions are left in Chinese, which creates an avoidable language inconsistency for users who did not opt into that locale. That violates the language/locale policy criterion because the document does not offer a language choice or justify the mixed-language constraint.
No suspicious patterns detected.