T09 · Insecure Skill Coding Practices
- Location
SKILL.md:36- Finding
Plaintext API Credential Storage Without Enforced Access Controls
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a disclosed ComPDF PDF-page helper, but it bundles broader ComPDF API capabilities and stores an API key in a plaintext local file, so it should be reviewed before installation.
Install only if you are comfortable sending selected PDFs to ComPDF and storing the ComPDF API key in a local plaintext file. Keep the key low-privilege if possible, exclude api_key from version control and packaging, rotate it if exposed, and avoid using this skill for unrelated ComPDF capabilities such as decryption or AI extraction unless explicitly intended.
SKILL.md:36Plaintext API Credential Storage Without Enforced Access Controls
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 reference file grants an agent broad knowledge of ComPDF capabilities far beyond the declared page-editing scope, including conversion, AI extraction, encryption, decryption, watermarking, and comparison APIs. In a skill advertised only for page editing, this scope expansion materially increases the chance of over-privileged behavior, accidental misuse of unrelated endpoints, or covert data-processing actions outside user expectations.
The presence of PDF encryption and especially decryption APIs in a page-management skill creates a capability mismatch that can be abused to remove document protections or alter access controls outside the user’s expected task. Because password-protected documents are often sensitive, exposing decryption in this context raises the risk of unauthorized handling and policy bypass.
Including AI document parsing and extraction documentation in a page-editor skill exposes powerful content-understanding and data-exfiltration-adjacent capabilities that are unrelated to page management. This is especially risky because uploaded documents may contain sensitive text, and AI extraction features can transform user files into structured data far beyond what the skill description implies.
The reference includes numerous unrelated capabilities such as watermarking, compression, comparison, format conversion, and PDF generation, which broadens the operational surface far beyond page editing. While not all of these are inherently dangerous, their inclusion undermines least privilege and makes unintended or deceptive use of extra functions more likely.
The workflow documentation describes direct upload, async upload, and pre-signed URL flows to ComPDF without clearly warning that user files and their contents are transmitted to a third-party service. For document-processing skills, lack of explicit disclosure can cause sensitive documents to be sent off-platform without informed consent, creating privacy, compliance, and trust risks.
Publishing decryption examples without any cautionary framing normalizes removal of PDF protections and can encourage unsafe handling of confidential files. In the context of an agent skill, such examples may lead operators or downstream automation to treat decryption as a routine action rather than a sensitive, authorization-dependent operation.
This file is predominantly written in English, but some parameter descriptions switch into Chinese-only text, which imposes a locale change on readers without opt-in or justification. That creates a natural-language policy issue because users are not given a choice of language for core documentation content.
This section presents an English API reference but uses a Chinese-only description for the pageLayoutMode field. That forces a specific locale for part of the guidance without user choice or documented justification.
These lines contain Chinese-only parameter descriptions inside an otherwise English reference, creating an inconsistent and forced locale experience. Users who rely on the English documentation are not given an alternative or explanation for the switch.
An otherwise English section switches to Chinese-only wording for a core parameter description. This is a locale-policy concern because it forces a language assumption rather than offering user choice.
The merge API section includes Chinese-only explanatory text for page ranges and passwords while the surrounding content is English. This inconsistent locale handling can exclude users and does not provide an opt-in language choice.
The split API page range description is written in Chinese only even though the surrounding documentation is English. That is a locale-policy inconsistency without user opt-in.
This parameter description is Chinese-only in an otherwise English reference. Users are forced into a different locale for key usage information without explanation or choice.
The extract-pages parameter help is Chinese-only while the rest of the section is English. This creates a language-policy inconsistency by forcing a locale change mid-document.
The watermark page-range description appears only in Chinese in a mostly English API reference. That constitutes a forced locale shift without user opt-in.
The remove-watermark section uses Chinese-only text for a key parameter in otherwise English content. This is a natural-language policy issue because it assumes a specific language without offering alternatives.
A Chinese-only OCR language description is embedded in an English AI parsing section. This forces a locale on users without documented justification or opt-in.
This block contains multiple Chinese-only descriptions for extraction parameters inside a predominantly English document. The content forces a specific locale for important operational guidance without user choice, which matches the language/locale policy concern.