---
id: "CVE-2026-109442"
kind: "vulnerability"
aliases: ["CVE-2026-109442"]
title: "piflow DeepAgents chat: unauthenticated endpoints run shell commands, expose secrets"
severity: "critical"
cvss: 9.8
epss: null
exploited: false
status: "open"
category: "ai-tooling"
products: [{"name": "piflow", "fixed": [], "affected": ">= 2.0.0, <= 2.0.1", "ecosystem": "vendor"}]
ecosystems: ["vendor"]
tags: ["ai-agents", "ai-tooling", "deepagents", "piflow", "rce", "self-hosted", "unauthenticated"]
not_affected_if: ["endpoints-behind-auth-proxy", "versions-outside-2.0.0-2.0.1"]
published_at: "2026-10-20T01:17:10+00:00"
first_seen_at: "2026-10-23T21:57:19+00:00"
updated_at: "2026-10-23T22:41:52+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-109442", "first_seen_at": "2026-10-23T21:57:19+00:00"}, {"source": "analyst", "url": null, "first_seen_at": "2026-10-23T22:28:40+00:00"}, {"source": "analyst", "url": null, "first_seen_at": "2026-10-23T22:41:52+00:00"}]
---

# piflow DeepAgents chat: unauthenticated endpoints run shell commands, expose secrets

piflow 2.0.0 through 2.0.1 has POST /chat and POST /chat/stream endpoints with no authentication, and the DeepAgents agent behind them can call an exec_shell tool. An attacker who sends a prompt can make the agent run arbitrary shell commands and read environment variables such as LLM API keys and database credentials.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- vendor:piflow affected >= 2.0.0, <= 2.0.1 fixed ?

## How to check

Check the deployed tag/commit: v2.0.0 (f3b421c) and v2.0.1 (ad8d010) are affected. Then test: curl -i -X POST http://<host>:<port>/chat -H 'Content-Type: application/json' -d '{"message":"hi"}'. Any answer without credentials means exposed. Also check /chat/stream and /workspace/upload, and whether the service is published beyond localhost (it binds 0.0.0.0 by default).

## Fix

No patched release as of 2026-10-23 (v2.0.1 is the latest). Mitigate: take the server off untrusted networks or put an authenticating reverse proxy in front of /chat, /chat/stream and /workspace/upload; remove exec_shell from the agent's tools (agents/factory.py) or gate it with interrupt_on; stop passing the full os.environ to the child; bind to 127.0.0.1; restrict CORS. Rotate LLM API keys and DB credentials if the service was reachable.

## Timeline

- 2026-10-23T21:57:19+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-109442
- 2026-10-23T22:28:40+00:00 analyst — Lasso (finder) and VulnCheck advisories read; no fixed piflow release exists (v2.0.1 is latest on GitHub releases, no vendor advisory). Endpoints are on by default: /chat and /chat/stream are registered unconditionally, no auth, bind 0.0.0.0, CORS *. No known exploitation (Lasso, EUVD: not KEV, EPSS 0.69%); only a request shape is described, not a public PoC.
- 2026-10-23T22:41:52+00:00 analyst — Rechecked: latest piflow release is still v2.0.1 (2026-07-31); no fix. No new documents. Re-applied fix and how-to-check, which the later triage pass had blanked.

## Documents

- [advisory] Lasso: CVE-2026-109442 piflow unauthenticated RCE via chat agent https://www.lasso.security/vulnerability-database/cve-2026-109442
- [advisory] VulnCheck advisory: piflow 2.0.0-2.0.1 https://www.vulncheck.com/advisories/piflow-2.0.0-through-2.0.1-unauthenticated-rce-via-chat-agent-exec-shell
- [describes] piflow releases (latest v2.0.1) https://github.com/cas-bigdatalab/piflow/releases

## From the sources

piflow 2.0.0 through 2.0.1 contains a remote code execution vulnerability in its DeepAgents chat agent, whose POST /chat and POST /chat/stream endpoints lack authentication. Attackers can instruct the agent to call the exec_shell tool, which runs arbitrary commands via subprocess.run without human approval or an allow-list, exposing environment secrets such as LLM API keys and database credentials.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
