Back to skill

Security audit

Semantic Scholar

Security checks for vulnerabilities and agentic risk

Overview

This skill is a coherent Semantic Scholar helper that makes disclosed API calls and writes requested research outputs, with normal dependency and API-key cautions.

Before installing, expect the skill to contact Semantic Scholar and to write result files locally. Use a scoped Semantic Scholar API key if you provide one, choose output paths deliberately, and prefer pinned dependencies or an isolated environment when installing requests and pandas.

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
scripts/semantic_scholar_bulk_search.py:27
Finding
Unpinned Third-Party Python Dependencies## Vulnerability Details **File Location**: `scripts/semantic_scholar_bulk_search.py:27-29` **Vulnerability Type**: Unpinned third-party dependencies **Risk Level**: Medium ### Vulnerable Code ```text Install ------- pip install requests pandas ``` ### Technical Analysis The installation instructions resolve `requests`, `pandas`, and their transitive dependencies from the configured Python package index without exact version constraints, integrity hashes, or a lockfile. Consequently, installations are not reproducible and depend on mutable package-index state at the time the command runs. The package names are legitimate and there is no evidence that the project intentionally introduces a malicious dependency. Nevertheless, an attacker who compromises a named package, one of its transitive dependencies, or the package-index configuration could cause a user to install hostile code. A future incompatible release could also unexpectedly change runtime behavior. ### Attack Path 1. A user follows the documented `pip install requests pandas` instruction. 2. `pip` queries the user's configured package index and resolves the latest compatible packages and transitive dependencies. 3. A compromised package release, dependency, or package-index configuration supplies malicious distribution content. 4. The malicious package may execute code during installation or later when imported by the scripts. 5. That code runs with the permissions of the user performing the installation or executing the Skill. ### Impact Assessment Successful exploitation could permit arbitrary code execution within the installing user's security context. The resulting access could include files, environment variables, and network resources available to that user. If installation is performed from an elevated shell or privileged environment, the impact would increase accordingly. No direct privilege-escalation mechanism, malicious package, or package-index manipulation is present in the aud ...[truncated 114 chars]
Remediation
## Remediation Suggestions 1. Add a reviewed dependency manifest containing exact versions for direct and transitive dependencies. 2. Generate and commit integrity hashes for every permitted distribution. 3. Install dependencies using hash verification, for example: ```text python -m pip install --require-hashes -r requirements.txt ``` 4. Use a lockfile-producing dependency-management workflow and update dependencies through reviewed change requests. 5. Configure CI to scan dependencies for known vulnerabilities and verify that the lockfile remains synchronized with the declared dependencies. 6. Prefer a trusted, explicitly configured package index and avoid installing dependencies with elevated privileges.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding
A second independently identified description-behavior mismatch reinforces that the skill overstates its functionality relative to implementation. Overbroad claims in a capability-bearing skill are dangerous because orchestration systems may grant trust or route sensitive tasks based on the declared purpose rather than verified behavior.

Tp4

High
Category
MCP Tool Poisoning
Confidence
91% confidence
Finding
A second independently identified description-behavior mismatch reinforces that the skill overstates its functionality relative to implementation. Overbroad claims in a capability-bearing skill are dangerous because orchestration systems may grant trust or route sensitive tasks based on the declared purpose rather than verified behavior.

Lp3

Medium
Category
MCP Least Privilege
Confidence
79% confidence
Finding
The skill advertises network, file read/write, and environment-variable-dependent workflows but does not declare any explicit tool scope or permissions boundary. In an agent environment, this increases the chance the skill is invoked with broader capabilities than necessary, making misuse or accidental overreach harder to control and audit.

External Transmission

Medium
Category
Data Exfiltration
Content
import requests


BASE_URL = "https://api.semanticscholar.org/recommendations/v1/papers"


def build_headers() -> Dict[str, str]:
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
import requests


BASE_URL = "https://api.semanticscholar.org/recommendations/v1/papers"


def build_headers() -> Dict[str, str]:
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
import requests


BASE_URL = "https://api.semanticscholar.org/recommendations/v1/papers"


def build_headers() -> Dict[str, str]:
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
import requests


BASE_URL = "https://api.semanticscholar.org/recommendations/v1/papers"


def build_headers() -> Dict[str, str]:
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Vague Triggers

Low
Confidence
86% confidence
Finding
The description says to use the skill whenever Codex needs to 'find papers or authors' or 'build paper sets from complex queries,' which is broad enough to overlap with many ordinary scholarly-assistant requests. It does not provide explicit trigger boundaries or negative examples clarifying when this skill should not activate versus more general search or literature-analysis skills.

Static analysis

No suspicious patterns detected.