Skip to content
PERMISSION/PROTOCOL
Back to incident tracker

2026-10-15

HighPrimary

LangAlpha Web Prompt Injection Can Trigger Shell Execution Without Approval

Lasso demonstrated web-injected instructions driving LangAlpha Bash execution in a local harness. No live sandbox breach or secret theft was demonstrated.

LangAlphaTool execution / MCPControlled indirect prompt-injection demonstrationLocal source-faithful harness for LangAlpha; the CVE lists versions through 2026.09.07 as affected.

What happened

The model emitted a Bash tool call for id after processing an injected web page, and the real tool executed it without an approval interrupt in the local harness.

Why it matters

No production impact was demonstrated. The verified effect was benign shell execution in a controlled local harness; the report describes vault-secret exposure and outbound exfiltration as possible consequences.

Missing authorization check

Independent action-specific authorization before dispatching Bash or ExecuteCode, rather than treating retrieved content or research intent as authority.

Would PP block it?

A gate outside the model could require a valid receipt bound to the caller, workspace, tool, exact command and expiry before the shell sink runs. It would not remove the injected instructions or repair sandbox isolation, and the report does not establish that PP was deployed.

Incident analysis

Timeline and technical read

Timeline

  1. 2026-10-15

    CVE CNA record identifies this as the public disclosure date.

  2. 2026-10-20

    CVE-2026-109440 is published, referencing Lasso's report and affected agent code.

Technical breakdown

  • LangAlpha binds Bash and ExecuteCode alongside tools that retrieve untrusted web content.
  • The reported harness used the real LangChain agent and LangGraph tool path, unmodified SkillsMiddleware, real Bash tool, and plan-mode interrupt configuration.
  • claude-sonnet-4-5 selected Bash with command id after reading the injected page; Bash ran without interruption while SubmitPlan interrupted.
  • A mocked Daytona runtime used a local subprocess. The demonstration did not contact the live SaaS or execute inside a live customer sandbox.

Authorization boundary

Where the authorization boundary should have been

This incident is categorized as Tool execution / MCP. The relevant Permission Protocol gate is Tool-Call Gate. The read is conditional: the block only applies where the real action boundary is routed through a gate.

If enforced at
Independently enforced Bash and code-execution dispatch boundary before process execution
Still needs
PP does not repair sandbox isolation, remove vault secrets from shell reach, or provide egress containment. Secret theft and live sandbox exploitation were not demonstrated; ExecuteCode exposure and unattended execution are described by the source rather than verified by the id canary.
Receipt required for
Executing the exact Bash command or Python payload in the designated workspace

An independently enforced Tool-Call Gate could hold shell execution pending authorization for the exact command; that integration was not tested in this demonstration.

Start small

Put the relevant gate at this action boundary.

This incident maps to Tool-Call Gate. Start with the boundary that controls the actual action, then require a signed receipt before execution.

Replay this incident with a signer in the loop