Back to skill

Security audit

Pipeworx fda

Security checks for vulnerabilities and agentic risk

Overview

The skill’s FDA search purpose is coherent, but installing it can run mutable npm code via npx and sends health-related search terms to a third-party gateway without clear privacy disclosure.

Review this skill before installing. Avoid sending patient identifiers, secrets, proprietary research terms, or other sensitive health-related information through it. Prefer a pinned mcp-remote version or a controlled/self-hosted setup if you need stronger supply-chain and privacy assurances.

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 (2)

T08 · Insecure Dependencies

Error
Location
SKILL.md:45
Finding
Unpinned Package Is Downloaded and Executed Through npx<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 45-54 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: High ### Vulnerable Code ```json { "mcpServers": { "pipeworx-fda": { "command": "npx", "args": ["-y", "mcp-remote@latest", "https://gateway.pipeworx.io/fda/mcp"] } } } ``` ### Technical Analysis The MCP configuration invokes `npx` with both the automatic-confirmation option (`-y`) and the mutable dependency version `mcp-remote@latest`. Consequently, use of this configuration can download and execute package code that was not present in the audited project and whose contents may change after the Skill has been reviewed. The `latest` tag does not identify an immutable artifact. If the package, its publishing account, the package registry, or a transitive dependency is compromised, a malicious release can become the code executed by this configuration. Automatic confirmation also removes an opportunity for the user to inspect and approve the exact package version before execution. Although this is primarily an insecure dependency issue, it also establishes a remote, mutable code-execution channel. The project does not provide a lockfile, integrity hash, package provenance check, or other mechanism that constrains the downloaded payload. ### Attack Path 1. An attacker compromises the `mcp-remote` package, a maintainer account, the distribution registry, or a dependency used by a future release. 2. The attacker publishes a malicious release and causes it to resolve through the `latest` tag. 3. A user activates the documented MCP configuration. 4. `npx -y` downloads the currently resolved package without interactive confirmation. 5. Package lifecycle or runtime code executes under the account running the agent. 6. The malicious code can access resources available to that account, subject to operating-system and sandbox restrictions. ### Impact Assessment Successful exploitation provides arb ...[truncated 545 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Replace `mcp-remote@latest` with a reviewed, exact version such as `mcp-remote@x.y.z`. - Pin the package and all transitive dependencies through a lockfile and verify registry integrity hashes. - Avoid `npx -y` for first-time installation. Require explicit approval showing the exact package name and version. - Prefer installing the reviewed package during a controlled build or deployment stage rather than downloading executable code when the Skill is invoked. - Use package provenance or signature verification where available. - Run the MCP client with least privilege in a sandbox or container with restricted filesystem, environment-variable, credential, and network access. - Establish an update process in which new package versions are reviewed and tested before changing the pinned version. ]]>

other

Warning
Location
SKILL.md:35
Finding
Health-Related Search Queries Are Disclosed to a Third-Party Gateway<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 35-38; endpoint also configured at lines 45-54 **Vulnerability Type**: `other: Third-party data disclosure` **Risk Level**: Medium ### Vulnerable Code ```bash curl -s -X POST https://gateway.pipeworx.io/fda/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_drug_events","arguments":{"query":"metformin","limit":3}}}' ``` The same intermediary is configured as the remote MCP destination: ```json { "mcpServers": { "pipeworx-fda": { "command": "npx", "args": ["-y", "mcp-remote@latest", "https://gateway.pipeworx.io/fda/mcp"] } } } ``` ### Technical Analysis The Skill describes access to public FDA data that requires no API key, but it instructs clients to transmit searches to `gateway.pipeworx.io`, a third-party intermediary, rather than directly to an official FDA API. The request body contains user-controlled search arguments. In realistic use, these values may include medication names, adverse reactions, product names, companies, or other terms that reveal health-related interests or confidential research topics. HTTPS protects the request while it is in transit, but the gateway necessarily receives the request content and can technically log, retain, correlate, or process it. The destination is visible in the documentation, so the behavior is not covert exfiltration. However, the Skill does not document the intermediary's retention policy, secondary uses, logging behavior, jurisdiction, or privacy controls. ### Attack Path 1. A user asks the agent to investigate a medication, adverse reaction, drug label, or food recall. 2. The agent places the supplied search terms into JSON-RPC tool arguments. 3. The request is sent over HTTPS to `gateway.pipeworx.io`. 4. The third-party gateway receives the search terms and associated connection metadata. 5. The gateway operator, a compromised gateway, ...[truncated 705 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Prefer querying documented official FDA APIs directly when an intermediary is not technically necessary. - If the gateway is required, clearly disclose before use that search terms are sent to Pipeworx and obtain informed user approval. - Publish or link to the gateway's privacy policy, retention period, logging practices, jurisdiction, subprocessors, and deletion procedures. - Minimize submitted data and prohibit inclusion of patient names, identifiers, credentials, or unrelated sensitive context. - Implement configurable redaction or pseudonymization for user-supplied queries. - Offer a direct-FDA or self-hosted deployment option for privacy-sensitive environments. - Apply appropriate contractual, access-control, encryption, monitoring, and retention safeguards to gateway-side request logs. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (2)

External Transmission

Medium
Category
Data Exfiltration
Content
## Example: adverse events for metformin

```bash
curl -s -X POST https://gateway.pipeworx.io/fda/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_drug_events","arguments":{"query":"metformin","limit":3}}}'
```
Confidence
95% confidence
Finding
The skill is explicitly configured to POST user-supplied query data to an external remote endpoint, which creates a real external transmission path. While the service appears to be the intended backend for accessing FDA data, any sensitive terms entered by a user would be exposed to the third-party gateway and potentially its logs or downstream systems.

Missing User Warnings

Low
Confidence
90% confidence
Finding
The documentation shows example usage that sends user queries to a third-party Pipeworx gateway, but it does not clearly warn users that their inputs are transmitted off-host over the network. This can create an unintended data disclosure risk if users assume the skill operates only on public FDA data locally and submit sensitive prompts, identifiers, or internal research terms.

Static analysis

No suspicious patterns detected.