Actively exploited Security news
FreeSWITCH: one SIP MESSAGE is enough to run commands on your VoIP server
Run a PBX, contact centre or VoIP service built on FreeSWITCH? Check your version now. Attackers are already exploiting CVE-2026-116779, according to both the vendor and CISA, and the fix is in 1.11.3.
Key points
- In FreeSWITCH 1.11.2 and earlier, an attacker can use a SIP MESSAGE request to run any FreeSWITCH API command – including ones that execute operating system commands with the privileges of the FreeSWITCH process.
- The default configuration is vulnerable: SIP chat is on for both the internal and external profiles. Any account on the server is enough, and old stock configurations don't even need that.
- SignalWire has seen the flaw exploited in the wild, and CISA added it to its Known Exploited Vulnerabilities (KEV) catalog on 9 November 2026. CVSS 3.1 score: 9.8 (critical).
- Upgrade to FreeSWITCH 1.11.3. Until you can, set enable-chat to false on every profile that doesn't need chat.
Vulnerabilities: CVE-2026-116779
What happened
FreeSWITCH is an open-source telephony platform. Organisations use it to build their own PBXs, contact centres, conferencing systems and voice applications, and telecoms providers run it too. It's maintained by SignalWire.
On 28 October 2026 SignalWire published advisory GHSA-mg63-h38w-8p9p for a critical flaw now tracked as CVE-2026-116779. An attacker can send an ordinary SIP MESSAGE request (a text message within the SIP protocol) and get FreeSWITCH to run any API command they choose. Some of those commands execute operating system commands, so the attacker can take over the server with the privileges of the FreeSWITCH process, read its configuration and credentials, and control calls.
The advisory states that exploitation has been observed in the wild. CISA added the flaw to its Known Exploited Vulnerabilities catalog on 9 November 2026 and gave US federal agencies only until 12 November 2026 to deal with it – an unusually short deadline that signals urgency.
How serious is it?
| Item | Value |
|---|---|
| CVSS 3.1 score | 9.8 (critical), scored by the vendor |
| Weakness | CWE-77 and CWE-78 – command injection; CWE-749 – exposed dangerous method |
| Exploitation | active (vendor, CISA) |
| Automatable | yes (CISA's SSVC assessment) |
| Known ransomware use | unknown, according to CISA |
A compromised PBX is more than a phone problem. An attacker can run commands on it, read stored SIP account and trunk credentials, and place calls at your expense – for example to premium-rate international numbers. The server can also be a stepping stone into the rest of your network.
Technical details
The bug sits in mod_sofia, the FreeSWITCH SIP module, in sofia_presence_handle_sip_i_message(), the handler for inbound MESSAGE requests. It splits the user part of the To header on + and treats the left-hand side as the name of the "chat protocol" that should deliver the message.
That selector wasn't restricted. Meanwhile mod_dptools registers an api chat protocol that hands the message body to switch_api_execute() – in other words, it runs a FreeSWITCH API command. The vendor puts the root cause down to FreeSWITCH not separating message-delivery protocols from command-execution ones. There's a second route through mod_lua, which the stock configuration loads: it allows inline Lua with the full standard library.
The conditions, according to the vendor:
- Default settings are enough. Chat is on by default, and the stock
conf/vanillaconfiguration enables it on both the internal and external SIP profiles. - ACLs don't help. The inbound ACL doesn't apply to MESSAGE requests, so tightening it won't stop the attack.
- One account is enough. Where MESSAGE authentication is enforced, any account on the profile will do – even one that can only register a phone.
- Sometimes no account at all. Installations that still carry
conf/vanilla/directory/default/default.xmlinclude adefaultuser with no password. That user authenticates unlessallow-empty-passwordis set tofalse.
We don't publish exploitation details or sample payloads.
Who is affected
According to the vendor and NVD, every FreeSWITCH version up to and including 1.11.2 is vulnerable. Version 1.11.3 contains the fix.
That covers businesses, public bodies, hospitals and anyone else running their own PBX or contact centre on FreeSWITCH, VoIP providers, and vendors who ship FreeSWITCH inside their own products. If someone else runs your phone system, ask them whether it's built on FreeSWITCH and which version they use. Ordinary phone users don't need to do anything; this is a job for whoever administers the server.
How to tell if you were compromised
The vendor hasn't published specific indicators of compromise such as IP addresses or sample payloads. It recommends watching for:
- Rejected messages in the log. After upgrading to 1.11.3, FreeSWITCH answers any MESSAGE that selects the
apiprotocol with a 403 and logs the source and the requested command. Those entries mean someone tried the attack. - Suspicious MESSAGE requests in SIP traces. Inbound MESSAGE requests whose To user contains a
+withapion the left. - Users without passwords. Directory users with no
passwordora1-hash, especiallydefault. - Unexpected API activity. Module loads, call originations or
systemcalls with no matching legitimate admin session.
We'd also suggest reviewing call detail records (CDRs) for unusual international or premium-rate calls, processes running as the FreeSWITCH user, and recent configuration changes. Paste exported log lines into our IOC extractor to pull out source IP addresses – it runs entirely in your browser. If you can't rule out a compromise, treat the server as compromised: rebuild it from a clean install and rotate every credential it held, including your carrier trunk credentials.
What to do
- Check the version on every FreeSWITCH server (
fs_cli -x version). - Upgrade to FreeSWITCH 1.11.3 or later. The fix adds a per-profile
enable-chat-api-protosetting that stays off unless you explicitly turn it on. Leave it off. - If you can't upgrade straight away, set
enable-chattofalseon every SIP profile that doesn't need inbound chat. That stops the message before the protocol selector is parsed, but it also disables all inbound MESSAGE chat on that profile. Reload the profile after the change. - Remove users without passwords (the stock
defaultuser and the Skinny example fromconf/vanilla) and keepallow-empty-passwordset tofalse. According to the vendor this doesn't fix the flaw on its own; it only limits the attack to authenticated accounts. - Don't rely on partial measures. Neither
auth-messageson its own nordisable_system_api_commands=truestops the attack, the vendor says. - Limit SIP exposure to your carrier's and remote sites' addresses wherever you can. Our subnet calculator helps you get CIDR ranges right for firewall rules. This is general good practice, not vendor guidance.
- Run the compromise checks above, especially on internet-facing servers.
- Report incidents to your national CERT – in the UK the NCSC, in the US CISA.
Timeline
FAQ
Our FreeSWITCH server is internal only. Are we safe?
Not entirely. The attack only needs one account on the server, which could sit on a compromised desk phone or an employee's softphone. The vendor also points out that the inbound ACL doesn't cover MESSAGE requests. Patch internal systems too.
Is turning on auth-messages enough?
No. According to the vendor, that still leaves the attack open to any authenticated account, even one with no privileges beyond registration. MESSAGE authentication has been on by default since 1.10.7, and the flaw still works.
Does disable_system_api_commands help?
Only partly. It removes the system command, but an attacker can still call every other API command, such as loading modules or originating calls. The vendor says plainly that it doesn't close the path.
How do I check which FreeSWITCH version we run?
Run fs_cli -x version on the server. Version 1.11.3 and later contain the fix. If FreeSWITCH comes bundled in another product or a hosted service, ask your supplier which version it uses.
Sources
Spotted a mistake? Let us know and we will correct it openly.