Back to skill

Security audit

该 Skill 支持基于关键词的学术论文检索,可以设置发表时间范围与数量 并将论文下载到指定目录,帮助用户快速获取目标领域(如大模型)的最新或代表性研究成果。This skill enables keyword-based academic paper retrieval with optional constraints on time range and result size and download them in the folder.

Security checks for vulnerabilities and agentic risk

Overview

The skill does what it claims, but its downloader can silently fall back to unverified HTTPS and save potentially tampered PDFs to disk.

Review this skill before installing or running it. It is purpose-aligned for downloading arXiv papers, but users should remove the insecure TLS fallback or only run it on trusted networks after confirming their local certificate store is working. Be aware that search terms are sent to arXiv and PDFs are written to the selected output directory.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/download_arxiv.py:43
Finding

TLS Certificate Validation Bypass for arXiv Requests

Content
View full analysis
str: req = urllib.request.Request(url, headers={"User-Agent": "arxiv-related-papers-skill/1.0"}) for attempt in range(4): try: with urllib.request.urlopen(req, timeout=timeout, context=_SSL_CONTEXT) as resp: return resp.read().decode("utf-8", errors="replace") except urllib.error.HTTPError as err: if err.code not in (429, 503) or attempt == 3: raise sleep_s = 1.5 * (2**attempt) print(f"WARN: arXiv rate limited ({err.code}), retrying in {sleep_s:.1f}s.", file=sys.stderr) time.sleep(sleep_s) except urllib.error.URLError as err: # Some local Python environments miss CA certificates; retry once without verification. if "CERTIFICATE_VERIFY_FAILED" in str(err): print("WARN: SSL verify failed, retrying without certificate verification.", file=sys.stderr) with urllib.request.urlopen( req, timeout=timeout, context=_SSL_CONTEXT_UNVERIFIED ) as resp: return resp.read().decode("utf-8", errors="replace") raise raise RuntimeError("Unexpected fetch loop termination") ``` ```python def download_file(url: str, destination: Path, timeout: int = 60) -> None: req = urllib.request.Request(url, headers={"User-Agent": "arxiv-related-papers-skill/1.0"}) try: with urllib.request.urlopen(req, timeout=timeout, context=_SSL_CONTEXT) as resp: data = resp.read() except urllib.error.URLError as err: if "CERTIFICATE_V ...[truncated 3033 chars]
Remediation
View remediation
str: req = urllib.request.Request( url, headers={"User-Agent": "arxiv-related-papers-skill/1.0"}, ) with urllib.request.urlopen( req, timeout=timeout, context=ssl.create_default_context(), ) as resp: return resp.read().decode("utf-8", errors="replace") ``` Certificate errors should be reported to the caller rather than retried with verification disabled. ]]>
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill instructs the agent to perform network access to the arXiv API and write downloaded PDFs to the local filesystem, but it does not declare any explicit tool scope such as permissions or allowed-tools. This creates an authorization gap: an agent or execution environment may permit broader-than-intended network/file operations, making misuse or accidental overreach harder to constrain and audit.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script explicitly creates an unverified TLS context and later uses it when certificate validation fails. That permits man-in-the-middle interception or content substitution for both API responses and downloaded PDFs, which is unjustified for a public paper downloader and weakens transport security guarantees.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · scripts/download_arxiv.py (reported line 103)May include surrounding context.

python
print(f"WARN: arXiv rate limited ({err.code}), retrying in {sleep_s:.1f}s.", file=sys.stderr)
            time.sleep(sleep_s)
        except urllib.error.URLError as err:
            # Some local Python environments miss CA certificates; retry once without verification.
            if "CERTIFICATE_VERIFY_FAILED" in str(err):
                print("WARN: SSL verify failed, retrying without certificate verification.", file=sys.stderr)
                with urllib.request.urlopen(

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

On TLS verification failure, the script silently proceeds to download remote content over an unverified connection and writes the result directly to disk. An attacker controlling network traffic could supply tampered XML or malicious PDF content, and the automated write-to-disk behavior increases the chance users will trust and open attacker-provided files.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.