Back to skill

Security audit

Academic Research Hub

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed academic-search tool with expected network access and optional local file downloads, but users should treat its dependency and download handling as ordinary security hardening gaps.

Install this only in a virtual environment, avoid elevated privileges, and prefer pinned dependencies or a reviewed lockfile. Use downloads deliberately, keep result counts small, and choose output directories you are comfortable modifying. Be aware that the docs overstate some features and mention Google Scholar-related dependencies even though the inspected script does not implement Google Scholar support.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T08 · Insecure Dependencies

Warning
Location
scripts/requirements.txt:4
Finding

Unpinned and Unnecessary Third-Party Dependencies Create Supply-Chain Exposure

Content
View full analysis
=2.0.0 # Semantic Scholar search semanticscholar>=0.8.0 # PubMed search (via BioPython) biopython>=1.81 # HTTP requests requests>=2.31.0 # Optional: For enhanced parsing beautifulsoup4>=4.12.0 lxml>=4.9.0 ``` The documentation also recommends installing additional unconstrained packages: ```bash pip install arxiv scholarly pubmed-parser semanticscholar requests ``` This instruction appears at `SKILL.md:16`, `SKILL.md:21`, `SKILL.md:562`, and `SKILL.md:567`. ### Technical Analysis Every dependency uses an open-ended lower-bound constraint rather than an exact, reviewed version. A future release satisfying these constraints will be accepted automatically. No package hashes or lock file are supplied to verify artifact integrity. The documentation additionally directs users to install `scholarly` and `pubmed-parser`, although the audited implementation does not import or require those packages. The requirements file similarly includes `beautifulsoup4` and `lxml` without corresponding use in `scripts/research.py`. These unnecessary packages increase the number of maintainers, release processes, and transitive dependencies that must remain trustworthy. Python packages may execute code during installation or when imported. Consequently, compromise of an accepted package release or its distribution account could introduce code that runs with the permissions of the user installing or invoking this Skill. ### Attack Path 1. An attacker compromises the release infrastructure or publisher account of a listed package, or otherwise causes a malicious version to be distributed through the configured package index. 2. The malicious version remains compatible with the open-ended `>=` constraint, or the user installs one of the unconstrained packages ...[truncated 909 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/research.py:148
Finding

Remote PDF Downloads Lack Destination and Content Validation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (15)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill documents commands that perform network access and write files locally, but it does not declare any explicit tool scope such as permissions or allowed-tools. In an agent ecosystem, that mismatch weakens policy enforcement and can allow the skill to be invoked with broader capabilities than users or operators expect.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger description is very broad, covering generic research, citation, download, and scholarly-information tasks across several platforms. Overbroad activation criteria increase the chance the agent invokes this skill in situations where external network access, downloads, or file output were not intended, expanding attack surface and creating opportunity for prompt-routing mistakes.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 746)May include surrounding context.

md
- OpenClawCLI: https://clawhub.ai/
- arXiv API: https://arxiv.org/help/api
- PubMed API: https://www.ncbi.nlm.nih.gov/books/NBK25501/
- Semantic Scholar API: https://api.semanticscholar.org/

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README presents the skill as using only arXiv, PubMed, and Semantic Scholar, but the documented dependency list also includes scholarly, a Google Scholar scraping library. This inconsistency can mislead users and reviewers about the skill’s actual network behavior and data sources, reducing informed consent and potentially masking scraping of a service with stricter access expectations.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The README explicitly states that Google Scholar is not included, while earlier installation guidance requires scholarly, which is specifically used for Google Scholar scraping. Contradictory statements about external-service access are dangerous because they can conceal actual capability from users, operators, and security reviewers, making policy violations or unexpected scraping harder to detect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

This markdown file documents PDF downloads, batch download support, and organized file naming, which imply creating files on disk. While the commands show how to use these features, the README does not explicitly warn users that enabling download/output options will write multiple files locally and may consume storage or modify target directories.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
94% confidence
Finding

The dependency is specified with a lower bound only, which permits installation of any newer release and makes builds non-reproducible. This increases supply-chain risk because a future malicious or vulnerable version could be pulled in without review, though the requirements file alone does not prove immediate compromise.

Content

Scanner excerpt · scripts/requirements.txt (reported line 4)May include surrounding context.

text
# Academic Research Hub - Python Dependencies

# arXiv search
arxiv>=2.0.0

# Semantic Scholar search
semanticscholar>=0.8.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
94% confidence
Finding

Using an unpinned minimum version for semanticscholar allows environment-dependent resolution to different package versions over time. That weakens reproducibility and can expose the skill to newly introduced vulnerabilities or malicious upstream changes.

Content

Scanner excerpt · scripts/requirements.txt (reported line 7)May include surrounding context.

text
arxiv>=2.0.0

# Semantic Scholar search
semanticscholar>=0.8.0

# PubMed search (via BioPython)
biopython>=1.81

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

Biopython is unpinned, so dependency resolution may select versions with known security issues or future vulnerable releases. In this skill's context, parsing scholarly and PubMed-related data can involve handling remote content, which makes dependency hygiene more important if XML/parsing code paths are used.

Content

Scanner excerpt · scripts/requirements.txt (reported line 10)May include surrounding context.

text
semanticscholar>=0.8.0

# PubMed search (via BioPython)
biopython>=1.81

# HTTP requests
requests>=2.31.0

Unverifiable Dependency: biopython has 2 known advisory(ies) (CVE-2025-68463 (Biopython is vulnerable to doctype XML external entity (XXE) injection through B); CVE-2025-68463 (Biopython is vulnerable to doctype XML external entity (XXE) injection through B)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
91% confidence
Finding

The manifest does not pin biopython, so it is impossible to verify whether the deployed version includes known advisories such as XXE-related issues. Given that this skill may retrieve and parse scholarly metadata or XML-backed content, an affected parser version could expose the environment to malicious document processing.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

Requests is a network-facing library, and leaving it unpinned allows automatic adoption of versions that may contain credential leakage, TLS, redirect, or request-handling flaws. Because this skill is designed to fetch data from external academic services, unsafe version drift is more operationally relevant than for a purely local tool.

Content

Scanner excerpt · scripts/requirements.txt (reported line 13)May include surrounding context.

text
biopython>=1.81

# HTTP requests
requests>=2.31.0

# Optional: For enhanced parsing
beautifulsoup4>=4.12.0

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
94% confidence
Finding

Requests has multiple historical advisories, and because the requirement is unpinned there is no assurance that installed environments will avoid affected releases. This matters more in this skill because it performs outbound HTTP requests to external services, potentially exposing credentials, request metadata, or response handling paths if a vulnerable version is used.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

BeautifulSoup4 is unpinned, so installations are not deterministic and may pick up incompatible or vulnerable future releases. While this is not direct proof of exploitability, it is a genuine supply-chain hardening gap.

Content

Scanner excerpt · scripts/requirements.txt (reported line 16)May include surrounding context.

text
requests>=2.31.0

# Optional: For enhanced parsing
beautifulsoup4>=4.12.0
lxml>=4.9.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

Lxml is a parsing library with a history of security advisories, and the unpinned specifier allows selection of unknown future or affected versions. In a research-downloading skill that may parse remote HTML/XML documents, parser vulnerabilities can be more consequential than ordinary package drift.

Content

Scanner excerpt · scripts/requirements.txt (reported line 17)May include surrounding context.

text
# Optional: For enhanced parsing
beautifulsoup4>=4.12.0
lxml>=4.9.0

Unverifiable Dependency: lxml has 14 known advisory(ies) (CVE-2021-43818 (lxml's HTML Cleaner allows crafted and SVG embedded scripts to pass through); CVE-2014-3146 (lxml Cross-site Scripting Via Control Characters); CVE-2021-28957 (lxml vulnerable to Cross-Site Scripting ) +11 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
94% confidence
Finding

Lxml has numerous advisories, and the unpinned requirement makes it unverifiable whether deployments will use a safe release. Since this skill may parse remote HTML/XML from academic sources, an affected parser version could increase exposure to malicious document content or sanitizer/parser bypasses.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.