T09 ยท Insecure Skill Coding Practices
- Location
scripts/lit_search.py:27- Finding
Unencrypted arXiv API Traffic Permits Query Disclosure and Metadata Tampering
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This literature-review helper is purpose-aligned and transparent overall, though it overstates some features and sends research queries to external academic APIs.
Install only if you are comfortable sending search terms to external scholarly APIs. Avoid using sensitive unpublished research queries over the arXiv source until its endpoint is changed to HTTPS, and treat the advertised advanced review features as incomplete.
scripts/lit_search.py:27Unencrypted arXiv API Traffic Permits Query Disclosure and Metadata Tampering
The code substantially matches several declared functions: multi-source literature search across the named sources, DOI/arXiv validation, conflict detection, citation formatting in the listed formats, and generation of a simple review summary with timeline/statistics. However, important parts of the declared description are not implemented. There is no logic for PICO, Boolean, or MeSH-guided systematic searching; no keyword extraction; and no source-quality tagging. The review generation is limited to a markdown summary with statistics, timeline, and paper entries, rather than a fuller writing assistant for the 'full lifecycle' of review drafting. This makes the description materially overstated relative to the actual code, though there are no obvious undeclared harmful capabilities.
The skill advertises and instructs use of capabilities that imply network access and local file interaction, but it declares no explicit tool scope or permissions. In an agent environment, this creates an authorization gap where reviewers and runtime policy may not clearly constrain what the skill is allowed to access, increasing the risk of unintended network requests or file reads/writes.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
GET https://api.datacite.org/dois
Line L205 suggests adding a mandatory filter of "English" when narrowing results. This imposes a language constraint in the skill content without offering a user choice or documenting a justified region-specific need, which matches the language/locale policy violation criteria.
The module usage docs show python3 lit_search.py file://papers.txt -f bibtex, implying file-driven processing of paper IDs, which fits the manifest's validation/formatting workflow. However, main() exits early in file mode with a TODO and never resolves IDs to papers, validates them, or formats them, so the advertised workflow is not actually supported.
The top-level docstring presents file-based invocation as supported behavior. In contrast, the code path for file:// input merely loads IDs, prints a count, and returns immediately with a TODO: ้่ฟ ID ่ทๅ่ฎบๆ่ฏฆๆ
, directly contradicting the documentation's implication that formatting/output will occur.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"timeout": 30,
},
"semantic_scholar": {
"base_url": "https://api.semanticscholar.org/graph/v1/paper/search",
"timeout": 30,
"requires_key": False,
},
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"timeout": 30,
},
"semantic_scholar": {
"base_url": "https://api.semanticscholar.org/graph/v1/paper/search",
"timeout": 30,
"requires_key": False,
},
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"requires_key": False,
},
"openalex": {
"base_url": "https://api.openalex.org/works",
"timeout": 30,
},
"crossref": {
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"requires_key": False,
},
"openalex": {
"base_url": "https://api.openalex.org/works",
"timeout": 30,
},
"crossref": {
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"timeout": 30,
},
"crossref": {
"base_url": "https://api.crossref.org/works",
"timeout": 30,
},
"pubmed": {
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"timeout": 30,
},
"crossref": {
"base_url": "https://api.crossref.org/works",
"timeout": 30,
},
"pubmed": {
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"timeout": 30,
},
"crossref": {
"base_url": "https://api.crossref.org/works",
"timeout": 30,
},
"pubmed": {
The stated capability includes systematic search using PICO, Boolean, and MeSH frameworks across sources. The actual search code passes the user-supplied query directly into each API request and contains no parsing, expansion, ontology handling, or query-construction logic for PICO/Boolean/MeSH-based search strategies.
Data from a source is assigned to a variable that is later passed to a sink, creating a variable-mediated taint flow.
"retmode": "json",
}
resp = requests.get(summary_url, params=summary_params, timeout=30)
resp.raise_for_status()
summary_data = resp.json()
The manifest advertises an auto-generated structured literature review including timeline, keyword extraction, and source-quality tagging. In code, ReviewGenerator.generate only aggregates source/year counts and emits a simple markdown list of papers and abstracts; there is no keyword extraction logic or any source-quality assessment/tagging implemented.
This markdown file contains user-facing documentation where parameter tables and many section labels are written in Chinese, but there is no indication that the skill is intentionally region-specific or that users may choose another language. Under the language/locale policy, forcing a specific language without opt-in can be a natural-language policy violation.
The manifest scopes the skill to searches across arXiv, Semantic Scholar, OpenAlex, CrossRef, and PubMed, plus citation output in APA 7th, MLA 9th, IEEE, BibTeX, RIS, and Markdown. This reference adds DataCite as an API source and lists Chicago formatting, expanding documented behavior beyond the stated manifest scope.
This code file contains mixed-language natural-language instructions, including Chinese-only usage examples and descriptions, but does not indicate that the language is optional or configurable. That can violate a language/locale policy where tools should not force a specific language without user opt-in.
The tool accepts a user-controlled local file path via file:// and also writes results to an arbitrary output path without restriction or safety prompts. In an agent setting, this can be abused to read unexpected local files or overwrite files the agent has access to, especially if untrusted prompts can influence CLI arguments.