T09 · Insecure Skill Coding Practices
- Location
SKILL.md:70- Finding
Unprotected Persistent Storage of Internal Recruitment Information
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 70-124
Vulnerability Type: Plaintext persistence of potentially sensitive business information
Risk Level: MediumEvidence
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
View remediation
Remediation Suggestions
- Do not store user-provided recruitment information inside the distributable Skill package.
- Require explicit, informed user consent before any durable storage operation.
- Use protected, user-scoped or tenant-scoped storage rather than a shared Markdown file.
- Apply restrictive file permissions and encryption at rest where supported.
- Store only the minimum fields required for the stated workflow; redact personal data and unnecessary internal details.
- Define a retention period and provide commands to review, update, export, and securely delete the profile.
- Verify that the current user is authorized to access a saved profile before loading or displaying it.
- Ask for confirmation before reusing saved information in a new session or for a different company or role.
- Add the populated profile path to packaging and version-control exclusion rules.
- Maintain a sanitized, empty template in the repository and store actual profiles outside the project tree.
