<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Pipecat - CraftedSignal Threat Feed</title><link>https://feed.craftedsignal.io/vendors/pipecat/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata. Fed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Thu, 18 Jun 2026 15:22:33 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/vendors/pipecat/feed.xml" rel="self" type="application/rss+xml"/><item><title>Pipecat Telephony Runner Unauthenticated Call-Control Abuse</title><link>https://feed.craftedsignal.io/briefs/2026-06-pipecat-unauth-call-control/</link><pubDate>Thu, 18 Jun 2026 15:22:33 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2026-06-pipecat-unauth-call-control/</guid><description>An unauthenticated remote attacker can leverage a missing authorization vulnerability (CWE-862) in the Pipecat development runner's `/ws` WebSocket endpoint to supply a crafted `callSid` in a handshake message, compelling the server to use its configured Twilio, Telnyx, or Plivo credentials to issue authenticated API requests that terminate active calls, resulting in denial of service and credential abuse.</description><content:encoded><![CDATA[<p>A missing authorization vulnerability (CWE-862) affects the <code>pipecat</code> development runner, specifically its telephony WebSocket <code>/ws</code> endpoint. An unauthenticated remote attacker who can reach an exposed <code>pipecat</code> runner can connect to this endpoint, which accepts connections without any authentication. By sending a crafted Twilio WebSocket handshake message containing an attacker-supplied <code>callSid</code> (e.g., <code>CAATTACKER1337INJECTED00000000001</code>), the attacker can trick the server. The runner will then issue an authenticated Twilio REST API hang-up request against that <code>callSid</code> using the server operator's own <code>TWILIO_ACCOUNT_SID</code> and <code>TWILIO_AUTH_TOKEN</code> credentials. Similar vulnerabilities exist for Telnyx and Plivo. Although designed for development and defaulting to <code>localhost</code>, <code>pipecat</code> runners are often exposed publicly via proxies for telephony provider callbacks, creating a critical attack surface for call disruption and credential abuse.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>An unauthenticated remote attacker identifies an exposed <code>pipecat</code> development runner with an accessible <code>/ws</code> WebSocket endpoint, typically fronted by a public proxy.</li>
<li>The attacker establishes an unauthenticated WebSocket connection to the <code>/ws</code> endpoint on the <code>pipecat</code> runner.</li>
<li>The attacker sends a crafted Twilio WebSocket &quot;start&quot; handshake message, embedding an attacker-controlled <code>callSid</code> (e.g., <code>CAATTACKER1337INJECTED00000000001</code>) into the JSON payload.</li>
<li>The <code>pipecat</code> runner, lacking authentication checks, accepts the connection and extracts the attacker-supplied <code>callSid</code> from the handshake message without validation.</li>
<li>When the <code>pipecat</code> pipeline terminates (e.g., via an <code>EndFrame</code> or <code>CancelFrame</code>), its <code>TwilioFrameSerializer</code> (which defaults <code>auto_hang_up</code> to <code>True</code>) automatically triggers the <code>_hang_up_call()</code> function.</li>
<li>The <code>_hang_up_call()</code> function constructs a Twilio REST API URL, incorporating the attacker-supplied <code>callSid</code> into the endpoint (e.g., <code>api.twilio.com/.../Calls/{attacker_call_sid}.json</code>).</li>
<li>The <code>pipecat</code> runner then uses its own configured <code>TWILIO_ACCOUNT_SID</code> and <code>TWILIO_AUTH_TOKEN</code> (from environment variables) to send an authenticated POST request to the constructed Twilio API URL.</li>
<li>This POST request forcibly terminates the call associated with the attacker-supplied <code>callSid</code>, leading to denial of service or abuse of the operator's telephony account.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>This vulnerability, categorized as Missing Authorization (CWE-862), allows an unauthenticated network attacker to remotely interact with an exposed <code>pipecat</code> development runner. If the runner is configured with live Twilio, Telnyx, or Plivo credentials, the attacker can forcibly terminate active calls by injecting a known or guessed <code>callSid</code> into the WebSocket handshake. This leads to denial of service for ongoing communications and enables the attacker to abuse the organization's telephony provider credentials for unauthorized call-control actions. Organizations relying on <code>pipecat</code> for telephony integrations that have inadvertently exposed development instances to the public internet are at risk of significant operational disruption and potential compromise of their telephony accounts.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li><strong>Review <code>pipecat</code> runner deployments</strong>: Ensure <code>pipecat</code> development runners are strictly bound to <code>localhost</code> or internal, trusted network interfaces, and are not accessible from untrusted networks, as highlighted in the <code>Overview</code>.</li>
<li><strong>Network Monitoring and Blocking</strong>: Monitor outbound connections from <code>pipecat</code> runner hosts to telephony API endpoints such as <code>api.twilio.com</code>, <code>api.telnyx.com</code>, and <code>api.plivo.com</code> (listed in IOCs), and implement network filtering or segmentation to restrict such traffic unless explicitly required and carefully configured.</li>
<li><strong>Detection Engineering</strong>: Deploy the Sigma rule &quot;Pipecat Telephony Runner Outbound Call Control Request&quot; from this brief to your SIEM and tune it to identify anomalous outbound call termination requests originating from pipecat processes.</li>
</ul>
]]></content:encoded><category domain="severity">medium</category><category domain="type">advisory</category><category>api-security</category><category>websocket</category><category>telephony</category><category>cwe-862</category><category>python</category></item></channel></rss>