Back to skill

Security audit

CC3PO arXiv Research

Security checks for vulnerabilities and agentic risk

Overview

This arXiv research skill has some disclosure and dependency hygiene issues, but its network access, downloads, and optional paper tracking fit the stated research purpose.

Install only if you are comfortable with arXiv network lookups, local PDF downloads, and optional MongoDB storage of saved paper metadata. Configure a dedicated download directory and a dedicated MongoDB database if using tracking, and prefer a locked or reviewed dependency environment.

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 Permit Unreviewed Package Updates

Content
View full analysis

Vulnerability Details

File Location: requirements.txt:1-2
Vulnerability Type: Supply-chain risk caused by unbounded dependency versions
Risk Level: Medium

Vulnerable Code:

text
arxiv>=2.0.0
pymongo>=4.0.0

Technical Analysis

Both dependencies use minimum-version constraints without upper bounds, exact version pins, or package hashes. A future release satisfying these constraints may be installed automatically even though it was not part of the reviewed artifact.

Python packages can execute code during installation or when imported. The application imports both dependencies in arxiv_tool.py, making a malicious or compromised compatible release capable of executing code under the privileges of the user running the Skill. This does not prove that the current releases are malicious, but the dependency policy creates an avoidable supply-chain exposure.

Attack Path

  1. An attacker compromises the upstream arxiv or pymongo release process, maintainer account, or distribution channel.
  2. The attacker publishes a malicious version greater than or equal to the configured minimum.
  3. A user installs or updates the Skill in an environment without a restrictive lock file.
  4. The package resolver selects the malicious compatible version.
  5. Attacker-controlled code executes during package installation or when arxiv_tool.py imports the dependency.

Impact Assessment

Successful exploitation would execute code with the privileges of the account installing or running the Skill. Depending on that account's permissions, the attacker could access application files, environment variables, MongoDB credentials, downloaded papers, and other resources available to the process. The affected scope is limited by the host account and runtime sandbox permissions; this issue does not itself provide privilege escalation beyond those permissions.

Remediation
View remediation

Remediation Suggestions

  1. Replace minimum-version constraints with exact versions that have been reviewed and tested:
    text
    arxiv==<reviewed-version>
    pymongo==<reviewed-version>
    
  2. Generate a lock file containing cryptographic hashes and install with hash verification, such as pip install --require-hashes -r requirements.txt.
  3. Update package.json dependency metadata to use the same exact reviewed versions so package manifests do not disagree.
  4. Perform dependency updates through a controlled review process that includes changelog inspection, vulnerability scanning, and regression testing.
  5. Install and run the Skill in a least-privileged virtual environment or container with access only to required files and network destinations.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
Findings (15)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The documented purpose does not fully match the described capabilities: it includes optional MongoDB-backed persistence, reading-list management, and local/download behavior that are not clearly declared in the top-level purpose. This mismatch is dangerous because users may authorize a seemingly simple research skill without realizing it can store data or modify state, increasing the risk of unintended persistence, privacy issues, and trust-boundary violations.

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 80)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
85% confidence
Finding

The manifest description limits the skill to searching, downloading, and summarizing arXiv papers for researchers. The README additionally documents optional MongoDB configuration for 'paper tracking', which implies persistent storage and tracking behavior not stated in the skill's described purpose.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
80% confidence
Finding

The skill advertises network and optional database-related behavior but does not declare an explicit tool scope or permissions boundary, while also indicating environment-variable use. In an agent setting, missing scope declarations can cause overbroad execution privileges or make users and hosts unaware that the skill may access sensitive runtime configuration.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest describes an arXiv research utility focused on searching, downloading, and summarizing papers. This file adds a separate reading-list/database capability by connecting to MongoDB via environment configuration and later storing and updating paper records, which is broader than the stated scope.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The core methods search for papers, fetch metadata, download PDFs, and save/list/update records, but there is no code that generates summaries beyond returning or truncating the existing arXiv abstract. Truncating or displaying the source abstract is not the same as summarizing, so the advertised behavior is not implemented.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger list contains generic phrases such as "paper," "find papers," and "search papers" that are broad enough to match ordinary user requests and cause unintended activation. In a skill ecosystem, overbroad triggers can route user intent to the wrong skill, creating confusion, privacy concerns, or unexpected external queries even if the package metadata itself contains no executable payload.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The manifest describes a skill for searching, downloading, and summarizing academic papers from arXiv for AI/ML researchers. Requiring pymongo suggests database access/storage capability, which is not an obvious or necessary part of that stated purpose and is broader than the manifest implies.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

The markdown explicitly advertises 'PDF Download' and says papers can be 'Save[d] locally for offline reading', which is a user-data/system-affecting operation. The README does not include any caution about where files are stored, potential overwrites, or that the skill will write to a local directory.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The README instructs users to set a MONGODB_URI and labels it 'MongoDB for paper tracking', indicating the skill may transmit or persist usage-related data to an external service. There is no accompanying warning about what data may be stored, where it is sent, or that enabling this feature involves external persistence.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill tells users it can download PDFs and maintain saved-paper state but does not disclose that this may write files locally or persist user data. Lack of disclosure weakens informed consent and can lead to accidental storage of documents or research activity on shared systems.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
97% confidence
Finding

The top-level usage docstring says users should run 'python arxiv_tool.py list-saved', but the argparse configuration only defines a 'list' subcommand. This is an active contradiction between documentation and executable behavior, not merely an omitted detail.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
92% confidence
Finding

The dependency arxiv>=2.0.0 is not pinned to a specific version, allowing different environments to install different releases over time. This increases supply-chain risk because a future compromised, vulnerable, or incompatible version could be pulled in without review, making builds non-reproducible and security posture unpredictable.

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
96% confidence
Finding

The dependency pymongo>=4.0.0 is unpinned, so installations may resolve to different versions depending on when and where the skill is installed. Because pymongo has had security advisories, failing to pin a known-safe release increases the chance of silently deploying an affected or unexpected version.

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
90% confidence
Finding

pymongo has known security advisories, and because the manifest does not pin a version, it is impossible to verify from this file whether the installed release is affected. This uncertainty is dangerous in a supply-chain context: deployments may end up using a vulnerable version without any change to the source manifest.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.