T09 · Insecure Skill Coding Practices
- Location
scripts/docmind_parse.py:25- Finding
Document Contents Are Transmitted over Plaintext HTTP by Default
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This document-parsing skill is mostly coherent, but it can upload sensitive documents over plaintext HTTP by default and accepts an unrestricted endpoint from the environment.
Review before installing. Use this only for documents you are allowed to send to Alibaba Cloud or another configured endpoint, avoid sensitive files unless policy permits it, and set an HTTPS endpoint explicitly. Treat DOCMIND_V2_ENDPOINT and SKILL_SESSION_ID as privacy-relevant configuration, and be aware that --output-file may overwrite an existing file.
scripts/docmind_parse.py:25Document Contents Are Transmitted over Plaintext HTTP by Default
scripts/docmind_parse.py:18Unrestricted Configurable Endpoint Can Receive Documents and Session Identifiers
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
url = f"{self.endpoint}/skill/submit"
try:
resp = requests.post(url, json=payload, timeout=30,
headers={"User-Agent": SKILL_USER_AGENT})
except requests.ConnectionError as e:
raise RuntimeError(
Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.
url = f"{self.endpoint}/skill/submit"
try:
resp = requests.post(url, json=payload, timeout=30,
headers={"User-Agent": SKILL_USER_AGENT})
except requests.ConnectionError as e:
raise RuntimeError(
The skill does not prominently warn that local files, document contents, and URLs may be uploaded or transmitted to external Alibaba Cloud endpoints for processing. Users may provide sensitive internal documents without informed consent, leading to confidentiality, compliance, or data residency issues.
The skill can access environment variables, write files, and make outbound network requests, but it does not declare any explicit tool scope or permission boundaries. This weakens reviewability and enforcement, increasing the risk of unintended data access or exfiltration when the skill is invoked.
The trigger phrases include broad terms like document parsing and file parsing use cases, which can cause the skill to activate in situations beyond clear user intent. Because this skill transmits user-supplied files or URLs to external Alibaba Cloud services, over-broad activation raises the chance of accidental disclosure of sensitive documents.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
url = f"{self.endpoint}/skill/submit"
try:
resp = requests.post(url, json=payload, timeout=30,
headers={"User-Agent": SKILL_USER_AGENT})
except requests.ConnectionError as e:
raise RuntimeError(
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
url = f"{self.endpoint}/skill/submit"
try:
resp = requests.post(url, json=payload, timeout=30,
headers={"User-Agent": SKILL_USER_AGENT})
except requests.ConnectionError as e:
raise RuntimeError(
When given a local file, the tool base64-encodes the document and uploads its contents to a remote DocMind V2 service, but the CLI does not provide an explicit warning or confirmation that local data is leaving the machine. In a document-processing skill, users may supply sensitive files, so silent remote upload creates a real privacy and data-handling risk.
This is a markdown file, so SQP-2 applies to omitted warnings about behaviors affecting privacy or system integrity. The credential configuration section lists AccessKey environment variables, local credential files, and instance metadata sources, but provides no explicit user warning that these are sensitive credentials that must be protected and should not be logged, shared, or hard-coded.
The script writes parsing output to the path supplied by --output-file, but there is no prior confirmation prompt or advance warning that an existing file may be overwritten. The success message appears only after the write, so it does not function as disclosure before the file-modifying operation.
No suspicious patterns detected.