<?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/tags/pipecat/</link><description>Trending threats, MITRE ATT&amp;CK coverage, and detection metadata — refreshed continuously.</description><generator>Hugo</generator><language>en</language><managingEditor>hello@craftedsignal.io</managingEditor><webMaster>hello@craftedsignal.io</webMaster><lastBuildDate>Tue, 02 Jan 2024 10:00:00 +0000</lastBuildDate><atom:link href="https://feed.craftedsignal.io/tags/pipecat/feed.xml" rel="self" type="application/rss+xml"/><item><title>Pipecat Remote Code Execution via Pickle Deserialization in LivekitFrameSerializer</title><link>https://feed.craftedsignal.io/briefs/2024-01-pipecat-rce/</link><pubDate>Tue, 02 Jan 2024 10:00:00 +0000</pubDate><author>hello@craftedsignal.io</author><guid isPermaLink="true">https://feed.craftedsignal.io/briefs/2024-01-pipecat-rce/</guid><description>A critical vulnerability, CVE-2025-62373, exists in Pipecat's LivekitFrameSerializer where the deserialize() method uses Python's pickle.loads() on WebSocket data without validation, allowing a malicious WebSocket client to execute arbitrary code on the Pipecat server if LivekitFrameSerializer is explicitly enabled.</description><content:encoded><![CDATA[<p>A critical vulnerability (CVE-2025-62373) exists in Pipecat&rsquo;s <code>LivekitFrameSerializer</code>, an optional, non-default, and now deprecated frame serializer class intended for LiveKit integration. The <code>deserialize()</code> method in <code>src/pipecat/serializers/livekit.py</code> uses Python&rsquo;s <code>pickle.loads()</code> on data received from WebSocket clients without validation or sanitization. This allows a malicious WebSocket client to send a crafted pickle payload to execute arbitrary code on the Pipecat server. While <code>LivekitFrameSerializer</code> is not enabled by default and was deprecated in version 0.0.90 in favor of the safer <code>LiveKitTransport</code> method, it remains in the codebase and could be inadvertently used, posing a severe risk if a Pipecat server is configured to use it and is listening on an external interface.</p>
<h2 id="attack-chain">Attack Chain</h2>
<ol>
<li>Attacker identifies a Pipecat server with an exposed WebSocket endpoint (e.g., listening on 0.0.0.0:8765) using the vulnerable <code>LivekitFrameSerializer</code>.</li>
<li>Attacker crafts a malicious Python pickle payload. This payload contains instructions to execute arbitrary code on the server, using techniques like defining a class with a <code>__reduce__</code> method that calls <code>os.system()</code>.</li>
<li>Attacker establishes a WebSocket connection to the Pipecat server.</li>
<li>Attacker sends the crafted pickle payload as a WebSocket message to the server.</li>
<li>The Pipecat server receives the message and passes the data to the <code>LivekitFrameSerializer.deserialize()</code> method.</li>
<li>The <code>deserialize()</code> method calls <code>pickle.loads()</code> on the attacker-controlled data without proper validation.</li>
<li><code>pickle.loads()</code> deserializes the malicious pickle object, triggering the execution of the attacker&rsquo;s code on the server with the privileges of the Pipecat process.</li>
<li>Attacker achieves remote code execution, potentially leading to full compromise of the server, including data exfiltration, malware installation, or pivoting to other systems.</li>
</ol>
<h2 id="impact">Impact</h2>
<p>Successful exploitation of this vulnerability, CVE-2025-62373, allows an attacker to achieve remote code execution on the Pipecat server. If an application uses <code>LivekitFrameSerializer</code> and exposes the Pipecat WebSocket server to untrusted networks, an attacker can completely compromise the server. This could lead to the execution of operating system commands, data modification, malware installation, or pivoting to other systems. The vulnerability is critical because any code execution flaw in a real-time communications server context poses a high risk.</p>
<h2 id="recommendation">Recommendation</h2>
<ul>
<li>Immediately stop using the <code>LivekitFrameSerializer</code> due to its use of unsafe pickle deserialization. Migrate to the recommended <code>LiveKitTransport</code> or other secure methods provided by the Pipecat framework (see Overview).</li>
<li>Update Pipecat to a version &gt;= 0.0.94 to receive the deprecation warning.</li>
<li>If you must support LiveKit integration or binary frame serialization, use safer alternatives like JSON, Protocol Buffers, or MessagePack.</li>
<li>Bind the Pipecat service to localhost (127.0.0.1) whenever possible to prevent external network access as mentioned in the Overview.</li>
<li>Implement authentication and authorization on the WebSocket connection to restrict who can send data to the server, as described in the Mitigation section.</li>
</ul>
]]></content:encoded><category domain="severity">critical</category><category domain="type">advisory</category><category>remote code execution</category><category>deserialization</category><category>pipecat</category></item></channel></rss>