---
id: "CVE-2026-116789"
kind: "vulnerability"
aliases: ["CVE-2026-116789"]
title: "FreeSWITCH: DTLS server role skips certificate check, enabling media interception"
severity: "high"
cvss: 7.4
epss: null
exploited: false
status: "open"
category: "runtime"
products: []
ecosystems: []
tags: ["freeswitch", "runtime", "self-hosted", "sip", "voip", "webrtc"]
not_affected_if: ["fingerprint-verify-enabled", "no-dtls-srtp", "version-1.11.2-or-later"]
published_at: "2026-11-05T20:17:46+00:00"
first_seen_at: "2026-11-05T20:40:46+00:00"
updated_at: "2026-11-05T20:43:12+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-116789", "first_seen_at": "2026-11-05T20:40:46+00:00"}]
exploit_sources: []
---

# FreeSWITCH: DTLS server role skips certificate check, enabling media interception

FreeSWITCH before 1.11.2 does not compare a peer's DTLS certificate against the SDP fingerprint when it acts as the DTLS server. An attacker able to reach the negotiated media port can take over the SRTP keys, decrypt call audio and video, inject media, and displace the real endpoint.

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

## How to check

- Check the installed FreeSWITCH version with `fs_cli -x version` and compare it against the fixed release.
- Look for WebRTC or SIP DTLS-SRTP legs in the FreeSWITCH configuration.
- Check whether `rtp_dtls_client_cert_verify_mode` is set to `fingerprint` in the dialplan or profile settings.

## Fix

- FreeSWITCH: upgrade to `1.11.2` or later, and set `rtp_dtls_client_cert_verify_mode=fingerprint` as the source requires.

## Timeline

- 2026-11-05T20:40:46+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-116789

## Documents

- [advisory] Vendor advisory: github.com https://github.com/signalwire/freeswitch/security/advisories/GHSA-8ghv-ccjr-4cx9
- [fix] Patch: github.com https://github.com/signalwire/freeswitch/commit/ea74c0acb8b85c5fc50158cd592a1b80c4edf6a6
- [fix] Release notes: github.com https://github.com/signalwire/freeswitch/releases/tag/v1.11.2

## From the sources

FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a software implementation that runs on any commodity hardware. Prior to 1.11.2, dtls_state_setup() compared a peer certificate with the SDP a=fingerprint only when FreeSWITCH was the DTLS client, not when it held the DTLS server role. An unauthenticated peer able to reach the negotiated media port could complete the DTLS-SRTP handshake with an unrelated certificate, obtain the leg's SRTP keys, decrypt and inject media, and displace the legitimate endpoint; on ICE-enabled legs the peer also needs the connectivity-check credentials from SDP, which generally requires signaling visibility or a position on its path. WebRTC and SIP DTLS-SRTP legs are affected whenever the peer selects the active role, while FreeSWITCH client-role handshakes already perform fingerprint validation. Version 1.11.2 introduces the remediation, which requires rtp_dtls_client_cert_verify_mode=fingerprint.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
