Back to skill

Security audit

Scholar Sidekick (REST API)

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a coherent citation API helper, but it includes an optional command that runs unpinned third-party npm code on the user's machine.

Use the REST examples only for references you are comfortable sending to scholar-sidekick.com. Avoid sending confidential, unpublished, or proprietary citation text unless you have approval. Treat the optional MCP command as higher risk: prefer a pinned reviewed version, verify the package source, and avoid exposing sensitive environment variables when running it.

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
SKILL.md:140
Finding
Unpinned Third-Party Package Download and Execution## Vulnerability Details **File Location**: `SKILL.md`, line 140 **Vulnerability Type**: Unpinned third-party dependency execution **Risk Level**: Medium ### Vulnerable Code ```bash npx -y scholar-sidekick-mcp@latest # needs RAPIDAPI_KEY in env ``` ### Technical Analysis The optional MCP setup instructs users to download and immediately execute the mutable `@latest` release of the `scholar-sidekick-mcp` npm package. No exact version, lockfile, or package-integrity value is specified. The `-y` option also suppresses the normal installation confirmation. Because `@latest` can resolve to a different package release after the skill has been reviewed, the effective code being executed is not fixed by this repository. A compromised npm account, malicious package update, or upstream supply-chain compromise could therefore cause arbitrary package or lifecycle code to run locally. ### Attack Path 1. An attacker compromises the package publisher, npm package, or release process. 2. The attacker publishes a malicious version and assigns it the npm `latest` distribution tag. 3. A user follows the documented optional setup command. 4. `npx` resolves `scholar-sidekick-mcp@latest`, downloads the attacker-controlled release, and executes it without an interactive confirmation because of `-y`. 5. The malicious package executes with the privileges and environment available to the invoking process. ### Impact Assessment Successful exploitation permits arbitrary code execution with the invoking user or Agent process's privileges. The malicious package could read or modify files accessible to that account, initiate network connections, alter the working environment, or access environment variables available to the process. This may include the `RAPIDAPI_KEY` explicitly referenced by the setup instructions. The scope is limited by the operating-system privileges and isolation controls applied to the process.
Remediation
## Remediation Suggestions - Replace `@latest` with an exact, reviewed package version; for example, use `scholar-sidekick-mcp@X.Y.Z` without a version range. - Commit and enforce a lockfile where installation is part of a managed project workflow. - Verify package provenance and integrity before execution, using npm registry integrity metadata, signed provenance, or an independently published checksum. - Remove `-y` so users receive an explicit confirmation before third-party code is downloaded and run. - Review the pinned release and its transitive dependencies, including npm lifecycle scripts. - Run the package in a sandbox or container with least privilege, restricted filesystem access, and limited network access. - Provide secrets only when required, scope the RapidAPI key narrowly, and avoid exposing it to installation or lifecycle scripts where possible. - Establish an explicit dependency-update process so newer versions are reviewed before the pinned version is changed.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

External Transmission

Medium
Category
Data Exfiltration
Content
### Format a citation
```bash
curl -sS -X POST "https://scholar-sidekick.com/api/format" \
  -H "Content-Type: application/json" \
  -d '{"text": "10.1038/nphys1170", "style": "vancouver", "output": "text"}'
```
Confidence
92% confidence
Finding
This example performs a live POST request to an external service with user-provided citation data, creating a real data exfiltration path from the agent environment to a third party. In context, external transmission is the core function of the skill, which makes it expected but still security-relevant because users may unknowingly submit sensitive bibliographic or research information.

Rp1

Medium
Category
MCP Rug Pull
Confidence
95% confidence
Finding
The skill recommends executing an MCP server via `npx -y scholar-sidekick-mcp@latest`, which pulls and runs the latest published package at execution time without pinning an immutable version. If the package is compromised, typo-squatted, or a malicious update is published, users could execute attacker-controlled code on their machine.

Missing User Warnings

Low
Confidence
89% confidence
Finding
The skill directs agents to send user-supplied identifiers and citation claims to a third-party API but does not clearly warn that this data leaves the local environment. Even if the payload seems low sensitivity, titles, identifiers, and verification requests can reveal private research interests, unpublished references, or confidential document contents.

Static analysis

No suspicious patterns detected.