Back to skill

Security audit

Search Pubmed

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward biomedical literature search helper, with some scoping and dependency-hardening issues but no evidence of hidden, destructive, persistent, or deceptive behavior.

Before installing, understand that search terms, optional email, and optional NCBI API key may be sent to NCBI through Biopython. Use a virtual environment and prefer a pinned Biopython version. Consider narrowing when the skill should be invoked if you only want explicit PubMed or literature-search requests to trigger 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:123
Finding

Unpinned Third-Party Dependency Installation

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 123–126
Vulnerability Type: Unpinned dependency retrieved from a mutable public package repository
Risk Level: Medium

Vulnerable Code:

markdown
## Dependencies

- Python 3.6+
- `biopython` package: `pip install biopython`

Technical Analysis

The installation instruction retrieves the latest available biopython package from the package index without specifying a reviewed version or validating an integrity hash. Consequently, the dependency installed in the future may differ from the version implicitly trusted when this Skill was audited.

Python package installation can execute package-controlled build and installation logic. If the package distribution, maintainer account, release process, or configured package index is compromised, an attacker-controlled release could execute code during installation and subsequently when Bio.Entrez is imported by scripts/search_pubmed.py.

This is a supply-chain hardening issue rather than evidence that the current biopython package is malicious. The project contains no lock file, version constraint, or cryptographic hash that would make dependency resolution reproducible.

Attack Path

  1. An attacker compromises the dependency’s publication process, maintainer account, package-index delivery path, or a package source configured in the installation environment.
  2. The attacker publishes or serves a malicious release that satisfies the unrestricted package name biopython.
  3. A user follows the documented pip install biopython instruction.
  4. pip resolves and downloads the attacker-controlled distribution because no version or hash is enforced.
  5. Malicious package logic executes during installation or when Bio.Entrez is imported.
  6. The payload runs with the privileges of the user installing or invoking the Skill.

Impact Assessment

Successful exploitation could permit arbit ...[truncated 578 chars]

Remediation
View remediation

Remediation Suggestions

  1. Pin biopython to a specific version that has been reviewed and tested:
    text
    biopython==<reviewed-version>
    
  2. Store dependencies in a version-controlled requirements or lock file rather than using an unrestricted installation command.
  3. Require cryptographic hashes during installation:
    bash
    python -m pip install --require-hashes -r requirements.txt
    
  4. Generate and independently verify SHA-256 hashes for the approved distributions, including platform-specific artifacts where applicable.
  5. Use an approved internal package mirror or repository with provenance controls where available.
  6. Run dependency installation in an isolated virtual environment or container as a non-privileged user.
  7. Add automated dependency vulnerability and provenance scanning to the release process, and update pinned versions through a documented review procedure.
Vulnerability Patterns
  • 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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (5)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding

The skill invokes a Python script that performs outbound network access to NCBI, but the manifest does not declare any tool scope such as permissions or allowed-tools. This creates a transparency and governance gap: the runtime capabilities of the skill exceed what its top-level declaration communicates, making unintended or unreviewed network use more likely.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest frames the skill as a PubMed search tool, but the documentation and examples show it can query other NCBI databases such as nucleotide and PMC. That mismatch broadens operational scope beyond what a reviewer or orchestrator might expect, which can lead to accidental invocation for tasks outside the declared purpose and weaken trust boundaries.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger language is extremely broad, covering many general biology, disease, gene, protein, drug, and organism-related topics even when the user does not explicitly ask for PubMed. Overbroad triggers can cause unintended invocation, leading the agent to route unrelated or broader scientific requests into a network-enabled literature-search skill, increasing the chance of inappropriate tool use and scope creep.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This code file contains user-facing natural-language text in Chinese in the module docstring and usage instructions, which effectively forces a specific language for users. The policy allows locale constraints only when they are explicitly justified or when users are given a language/locale choice, neither of which is present here.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

The file presents itself as a PubMed literature search skill, but the accompanying documentation explicitly says it can search "PubMed (and other NCBI databases)." This is an intent-level inconsistency in the skill's own documentation about whether the scope is PubMed-only or broader NCBI search.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.