T09 · Insecure Skill Coding Practices
Warning
- Location
- README.md:77
- Finding
- Identifiable Patient Health Information Embedded in Documentation## Vulnerability Details **File Location**: `README.md:77-86`; related occurrence in `examples.md:78-83` **Vulnerability Type**: Plaintext exposure of identifiable health information **Risk Level**: Medium ### Vulnerable Content ```text **Input:** ``` 患者:王萃华 性别:女性 年龄:64岁 主诉:反复胸闷、气促3年,加重2周 诊断:扩张型心肌病、心力衰竭、心功能IV级 ``` **Output:** - Markdown文件:`临床案例_王萃华_扩张型心肌病心力衰竭诊疗体会.md` - Word文档:`临床案例_王萃华_扩张型心肌病心力衰竭诊疗体会.docx` ``` The same documentation later states: ```text 7. **患者姓名脱敏**:**文档名称和正文中都不能出现患者真实姓名**,使用"患者"或"本例"代替 ``` ### Technical Analysis The documentation associates a full personal name with age, sex, symptoms, diagnoses, and treatment-related information. It also demonstrates incorporating that name into output filenames. This is inconsistent with the project's own requirement that patient names must not appear in either document content or filenames. The repository does not establish that the identity is fictional or provide provenance showing that publication was authorized. Consequently, the content must be treated as potentially identifiable health information. Embedding such data in distributed documentation creates a direct disclosure risk without requiring execution of the Python script. The bundled script also does not implement de-identification or scan the input Markdown and output filename for patient identifiers. Its local conversion behavior therefore does not enforce the privacy requirement documented by the project. ### Attack Path 1. An unauthorized party obtains or browses the distributed Skill package. 2. The party opens `README.md` or `examples.md`. 3. The party extracts the displayed full name and its associated demographic and clinical details. 4. The party correlates those details with public, institutional, or other available records. 5. Users may additionally copy the documented filename convention, causing patient names to appear in filesystem metadata, backups, document ...[truncated 754 chars]
- Remediation
- ## Remediation Suggestions 1. Replace the full name with an unmistakably synthetic identifier, such as `Example Patient A`, and explicitly label all sample records as fictional. 2. Remove personal names from every example filename. Use a pattern such as `clinical_case_anonymized_dilated_cardiomyopathy.docx`. 3. Review the entire repository history and released packages for previous copies of the identifying content. If the data is genuine, follow the applicable incident-response and disclosure procedures. 4. Add an enforced de-identification stage before document generation. It should detect names and other direct identifiers in both Markdown content and output filenames. 5. Require users to confirm de-identification before processing clinical records, and fail closed when obvious identifiers are detected. 6. Add automated tests that reject sample records or output paths containing known patient identifiers. 7. Keep documentation consistent with the stated privacy rule by ensuring that no example encourages names in document content or filesystem metadata.
