T09 · Insecure Skill Coding Practices
- Location
scripts/save_paper.py:98- Finding
Insufficient arXiv URL Validation Enables Unintended Network Requests
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This Zotero helper fits its stated purpose, but it needs review because it uses a Zotero API key and can fetch and upload content from insufficiently validated URLs.
Review this before installing. Use a narrowly scoped Zotero API key, avoid exposing ZOTERO_CREDENTIALS in prompts or logs, pass only trusted HTTPS Zotero/arXiv URLs, and consider requiring exact dependency pinning plus strict arXiv URL validation before routine use.
scripts/save_paper.py:98Insufficient arXiv URL Validation Enables Unintended Network Requests
scripts/save_paper.py:2Unpinned Dependency Is Dynamically Resolved at Runtime
The skill invokes code that uses both environment variables and network access, but it does not declare any explicit tool scope such as allowed tools or permissions. This weakens security review and runtime policy enforcement because users and hosting systems cannot clearly see or constrain that the skill will read credentials and send data over the network.
The skill instructs users to place a Zotero userid and API key in an environment variable but provides no warning about sensitive-secret handling, storage, logging, or exposure risks. Because the skill also performs networked operations, mishandling of this credential could lead to unauthorized access to the user's Zotero library or accidental leakage through process output, shell history, or agent telemetry.
The script's natural-language interface, including the command description and argument help strings, is entirely in Chinese. This imposes a specific language on users without opt-in or any documented justification for a locale-specific constraint.
The skill behavior exceeds its stated scope: instead of only saving bibliographic metadata to Zotero, it also performs a network download from arXiv and uploads the resulting PDF as an attachment. This can surprise users, increase network and storage side effects, and create trust and policy issues because unadvertised remote retrieval occurs based on user-controlled input.
The natural-language instructions and parameter descriptions are presented in Chinese throughout the skill file, which can amount to forcing a specific language without user opt-in. The file does not state that the skill is intentionally Chinese-only or provide an alternative language option.
The code accesses sensitive credentials via ZOTERO_CREDENTIALS, but there is no explicit disclosure in comments, help text, or the parser description that the script will read API credentials from the environment. The later error message explains how to set the variable if missing, but it does not serve as a proactive warning about sensitive credential access during normal use.
No suspicious patterns detected.