T09 · Insecure Skill Coding Practices
Warning
- Location
- SKILL.md:70
- Finding
- Unprotected Persistent Storage of Internal Recruitment Information## Vulnerability Details **File Location**: `SKILL.md`, lines 70-124 **Vulnerability Type**: Plaintext persistence of potentially sensitive business information **Risk Level**: Medium ### Evidence The relevant Skill instructions and storage template are reproduced below in English: ```markdown ### 2.3 Save Company Profile After the user confirms the information, write it to `references/company-profile.md`: # {Company Name} Recruitment Profile > Creation date: {YYYY-MM-DD} > Last updated: {YYYY-MM-DD} ## Compensation Structure - Base range: {XX-XXK} - Annual bonus: {X months} - Annual salary months: {X-X} - Stock/options: {Yes/No}, {specific rules} ## Job-Level Structure - Level sequence: {sequence} - Target level: {level} - Comparable levels: {levels at other companies} ## Recruitment Preferences - Headcount type: {new/replacement/expansion} - Target companies: {Company A, Company B} - Industry-background requirements: {requirements} - Expected start date: {period} - Remote-location candidates: {accepted/not accepted} ## Notes - {Internal restrictions or reporting relationships} ### 2.4 Profile Update Rules - Whenever the user provides new internal information, update `company-profile.md`. - Reuse company information for roles at the same company. - Before each analysis, ask whether the information has changed. ``` ### Technical Analysis The Skill explicitly directs the agent to persist user-provided internal recruitment information in a plaintext Markdown file inside the Skill package. The stored fields can include salary budgets, equity-grant rules, headcount status, target companies, hiring preferences, reporting relationships, and other internal notes. No corresponding controls are specified for: - Explicit consent to durable storage - User or tenant isolation - File access restrictions - Encryption at rest - Data minimization or redaction - Retention pe ...[truncated 2002 chars]
- Remediation
- ## Remediation Suggestions 1. Do not store user-provided recruitment information inside the distributable Skill package. 2. Require explicit, informed user consent before any durable storage operation. 3. Use protected, user-scoped or tenant-scoped storage rather than a shared Markdown file. 4. Apply restrictive file permissions and encryption at rest where supported. 5. Store only the minimum fields required for the stated workflow; redact personal data and unnecessary internal details. 6. Define a retention period and provide commands to review, update, export, and securely delete the profile. 7. Verify that the current user is authorized to access a saved profile before loading or displaying it. 8. Ask for confirmation before reusing saved information in a new session or for a different company or role. 9. Add the populated profile path to packaging and version-control exclusion rules. 10. Maintain a sanitized, empty template in the repository and store actual profiles outside the project tree.
