Back to skill

Security audit

Arxiv

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent arXiv research helper, with disclosed local downloads and optional MongoDB reading-list storage but some install and scoping caveats to review.

Before installing, review whether you want optional MongoDB reading-list storage enabled and use a least-privileged database account if you configure it. Expect searches and paper IDs to be sent to arXiv, and expect PDF downloads to create local files. Prefer installing with pinned, reviewed dependency versions or a lockfile, and consider narrowing triggers if accidental activation is a concern.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
requirements.txt:1
Finding

Unpinned Third-Party Dependencies Create Supply-Chain Risk

Content
View full analysis

Vulnerability Details

File Location: requirements.txt:1-2 and package.json:18-21
Vulnerability Type: Unbounded dependency resolution
Risk Level: Medium

The affected dependency declarations are:

text
arxiv>=2.0.0
pymongo>=4.0.0
json
"dependencies": {
  "python": ">=3.8",
  "arxiv": ">=2.0.0"
},
"optional_dependencies": {
  "pymongo": ">=4.0.0"
}

Technical Analysis

The project specifies minimum versions without upper bounds, exact pins, lockfile resolution, or package hashes. Consequently, installations performed at different times can retrieve different dependency versions, including future releases that were not included in this audit.

In addition, pymongo is installed unconditionally through requirements.txt, although the documentation and package metadata describe MongoDB support as optional. This unnecessarily expands the default dependency and attack surface.

This does not establish that the currently available arxiv or pymongo releases are malicious. The vulnerability is the absence of deterministic, integrity-verified dependency resolution. Exploitation depends on a dependency account, release, distribution channel, or transitive dependency becoming compromised.

Attack Path

  1. An attacker compromises a permitted dependency release, its publishing account, or a transitive package.
  2. The attacker publishes a newer version that still satisfies arxiv>=2.0.0 or pymongo>=4.0.0.
  3. A user installs the Skill without a reviewed lockfile or hash verification.
  4. The package resolver selects the compromised release.
  5. Malicious package installation or imported runtime code executes with the privileges of the process installing or running the Skill.

Impact Assessment

A successfully compromised dependency could execute code with the permissions of the installer or Skill runtime. Depending on those permissions, this could e ...[truncated 817 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin each production dependency to an exact version that has been reviewed:
    text
    arxiv==REVIEWED_VERSION
    
  2. Move pymongo out of the default requirements file and into a dedicated optional dependency file or package extra, because MongoDB support is optional:
    text
    # requirements-mongodb.txt
    pymongo==REVIEWED_VERSION
    
  3. Generate and commit a lockfile containing the complete transitive dependency graph.
  4. Require cryptographic hashes during installation, such as a hash-locked requirements file used with pip install --require-hashes.
  5. Use automated dependency vulnerability and provenance scanning, but require review before accepting updates.
  6. Rebuild lockfiles on a controlled schedule and test updated dependencies before release.
  7. Install and run the Skill under a least-privileged account with restricted filesystem access and only the network destinations required for arXiv and any explicitly configured MongoDB service.
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (14)

Tp4

High
Category
MCP Tool Poisoning
Confidence
92% confidence
Finding

The skill description says it searches, downloads, and summarizes arXiv papers, but the documented behavior also includes reading-list persistence and status management backed by MongoDB. This mismatch can mislead users and reviewers about data collection and storage, increasing the risk of unauthorized retention of user activity or deployment with broader privileges than expected.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
60% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

Optional MongoDB integration for paper tracking:

yaml
# In your .env
MONGODB_URI=your_connection_string
MONGODB_DB_NAME=your_database

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill manifest describes a narrowly scoped arXiv research assistant for searching, downloading, and summarizing papers. In contrast, the README documents optional MongoDB configuration specifically 'for paper tracking,' which adds persistent database storage capability not reflected in the stated skill purpose.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding

The skill advertises capabilities that may require access to environment variables, but it does not declare any explicit tool scope or permissions. This weakens least-privilege boundaries and makes it harder for users or the platform to understand what sensitive resources the skill may access, especially since optional database configuration is documented later in the file.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill initializes optional MongoDB-backed persistent storage even though the stated purpose is arXiv search, download, and summarization. This expands capability into user data retention and state management, increasing attack surface and creating an integrity/privacy risk if a user or platform assumes the tool is stateless.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The code reads external MongoDB credentials from environment variables to enable database access that is not necessary for basic arXiv lookup and PDF download. In skill environments, introducing credential-driven external connectivity beyond the declared purpose can enable unreviewed data exfiltration or persistence paths and materially broadens trust requirements.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The save/list/update functionality adds undeclared persistent state management beyond the advertised arXiv research assistant scope. Hidden or undocumented data storage features are dangerous because they can surprise users, retain metadata about reading behavior, and violate least-privilege expectations for a search/download tool.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger list contains generic phrases like "paper," "find papers," and "search papers" that are common in normal conversation and can cause unintended invocation of the skill. Because this skill can search, download, and summarize remote academic content, accidental activation could lead to unnecessary external requests, unexpected tool use, or context hijacking when a user meant something more general.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown file explicitly advertises a PDF download feature that saves papers locally, which affects the user's filesystem. The description does not include any warning or disclosure about local file creation, overwrite behavior, or download destination in the feature summary.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
92% confidence
Finding

The command-line usage shows a download command and notes it downloads a PDF to a local folder, but provides no caution about creating files on disk. For markdown guidance, this is a missing disclosure about behavior that can affect user data/system state.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

The top-level docstring advertises python arxiv_tool.py list-saved, but the CLI parser only defines a list subcommand. This is an active contradiction between user-facing documentation and implemented behavior.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
95% confidence
Finding

The dependency specification for arxiv uses a lower-bound constraint only, which makes builds non-reproducible and allows installation of newer releases that have not been validated by the skill author. While this is not an exploit by itself, it increases supply-chain risk and can introduce vulnerable or breaking versions unexpectedly.

Content

Scanner excerpt · requirements.txt (reported line 1)May include surrounding context.

text
arxiv>=2.0.0
pymongo>=4.0.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
98% confidence
Finding

The dependency specification for pymongo is also unpinned, which creates non-deterministic installs and a supply-chain exposure window. This is more concerning here because the package has known historical advisories, so an unconstrained install could resolve to an affected or otherwise unreviewed version depending on environment and dependency resolution behavior.

Content

Scanner excerpt · requirements.txt (reported line 2)May include surrounding context.

text
arxiv>=2.0.0
pymongo>=4.0.0

Unverifiable Dependency: pymongo has 4 known advisory(ies) (CVE-2024-5629 (PyMongo Out-of-bounds Read in the bson module ); CVE-2013-2132 (Use of NullPointerException Catch to Detect NULL Pointer Dereference in Pymongo); CVE-2013-2132 (bson/_cbsonmodule.c in the mongo-python-driver (aka. pymongo) before 2.5.2, as u) +1 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
93% confidence
Finding

The manifest does not pin pymongo to a specific version, so it is impossible to verify whether deployed environments will avoid versions affected by known advisories. In a skill that may process search results, metadata, and possibly persistent storage interactions, using an unknown pymongo release increases the chance of pulling in a vulnerable BSON or driver implementation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.