CVE-2025-62373
Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.
NVD · uneditedPipecat is an open-source Python framework for building real-time voice and multimodal conversational agents. Versions 0.0.41 through 0.0.93 have a vulnerability in `LivekitFrameSerializer` – an optional, non-default, undocumented frame serializer class (now deprecated) intended for LiveKit integration. The class's `deserialize()` method uses Python's `pickle.loads()` on data received from WebSocket clients without any validation or sanitization. This means that a malicious WebSocket client can send a crafted pickle payload to execute arbitrary code on the Pipecat server. The vulnerable code resides in `src/pipecat/serializers/livekit.py` (around line 73), where untrusted WebSocket message data is passed directly into `pickle.loads()` for deserialization. If a Pipecat server is configured to use LivekitFrameSerializer and is listening on an external interface (e.g. 0.0.0.0), an attacker on the network (or the internet, if the service is exposed) could achieve remote code execution (RCE) on the server by sending a malicious pickle payload. Version 0.0.94 contains a fix. Users of Pipecat should avoid or replace unsafe deserialization and improve network security configuration. The best mitigation is to stop using the vulnerable LivekitFrameSerializer altogether. Those who require LiveKit functionality should upgrade to the latest Pipecat version and switch to the recommended `LiveKitTransport` or another secure method provided by the framework. Additionally, always follow secure coding practices: never trust client-supplied data, and avoid Python pickle (or similar unsafe deserialization) in network-facing components.
Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.
dbcve analysis · high confidencePipecat versions 0.0.41-0.0.93 contain a critical insecure deserialization vulnerability in the optional LivekitFrameSerializer class. The deserialize() method passes WebSocket client data directly to pickle.loads() without validation, allowing authenticated or adjacent attackers to achieve remote code execution by sending malicious pickle payloads.
Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.
Affected products & versions What the vendor confirmedThe version ranges the vendor confirmed as vulnerable. If your version sits inside a range here, treat yourself as exposed until you have upgraded.
NVD · CPE data>= 0.0.41, < 0.0.94CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.
From the vector- Attack vector
- Network
- Complexity
- Low
- Privileges
- None
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- High
- Integrity
- High
- Availability
- High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.
dbcve checksWork through these to decide whether this CVE applies to you.
-
Check installed Pipecat versionRun `pip show pipecat` or `pip list | grep pipecat` to see the installed version numberAffected if Version is 0.0.41 through 0.0.93 (inclusive)
-
Search for LivekitFrameSerializer usage in codebaseGrep for 'LivekitFrameSerializer' or 'LivekitFrameSerializer()' in your source code, configuration files, and any Python files that import or instantiate this classAffected if This class is imported, instantiated, or referenced anywhere in the codebase
-
Identify pickle deserialization in websocket handlingSearch for `pickle.loads` calls in files related to WebSocket message handling, particularly any files that process incoming frame data from WebSocket clientsAffected if pickle.loads() is called on data received from WebSocket clients without prior validation
-
Check if service is exposed on external interfacesReview network configuration and service bindings to determine if the WebSocket endpoint using LivekitFrameSerializer is listening on external/networked interfaces versus localhost onlyAffected if The WebSocket service is bound to 0.0.0.0 or other external-facing network interfaces
You are affected if Pipecat version is between 0.0.41-0.0.93 AND LivekitFrameSerializer is in use, especially if exposed to external network connections.
Generated from the published advisory. Verify against your own configuration.
Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.
dbcve · scoped0.0.94
Upgrade to Pipecat 0.0.94 or later and immediately cease using LivekitFrameSerializer—migrate to the recommended LiveKitTransport or other secure serialization methods provided by the framework.
0.0.94
- Upgrade Pipecat to version 0.0.94 or later by updating your dependency (e.g., pip install pipecat>=0.0.94)
- Locate and remove any code that instantiates or uses LivekitFrameSerializer in your project
- If your application requires LiveKit functionality, refactor to use the recommended LiveKitTransport class instead of the deprecated serializer
- Restart the Pipecat service and verify that all pipelines function correctly with the new version
- Ensure the service is not listening on 0.0.0.0 if LivekitFrameSerializer is still present in older code paths
Generated from the published advisory — verify against the referenced sources before acting.
- Consultation4.0 h
- Implementation8.0 h
- Testing12.0 h
- Review / QA4.0 h
An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $7,616.
Scan for this in your stack
Free · runs locallyCheck whether your project pulls in CVE-2025-62373 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.
References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.
Primary sourcesPractitioner notes
ContributedPeer-ranked notes from engineers who’ve handled CVE-2025-62373 in production — separate from our analysis above.
The advisory tells you what broke. It rarely tells you what actually worked. If you’ve dealt with this one, that detail is what the next engineer is searching for.
- The version that genuinely resolved it — not the one the vendor claimed
- A config change or rule that shut the vector down
- A gotcha in the upgrade path that cost you an afternoon
No notes yet
Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.
A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.
- Verified mitigations, workarounds, and config changes
- Version or environment caveats, and links to real fixes
- No weaponised exploit code, or anything meant to cause harm
- No spam, self-promotion, credentials, or personal data