CVE-2025-55210

7.5 HIGH

📋 TL;DR

This vulnerability allows authenticated users with REST/GraphQL API access in FreePBX to escalate privileges by forging JWTs using the api-oauth.key private key. Attackers who obtain this key and know an existing JWT ID (jti) can create tokens with arbitrary scopes, bypassing authorization checks. This affects FreePBX installations prior to versions 17.0.5 and 16.0.17.

💻 Affected Systems

Products:
  • FreePBX
Versions: All versions prior to 17.0.5 and 16.0.17
Operating Systems: Any OS running FreePBX
Default Config Vulnerable: ⚠️ Yes
Notes: Requires the api module to be enabled and accessible to authenticated users.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

An attacker gains full administrative access to the FreePBX system, allowing complete control over telephony services, configuration changes, and potential data exfiltration.

🟠

Likely Case

Privileged users or attackers with initial access escalate to administrative privileges, enabling unauthorized configuration changes and access to sensitive telephony data.

🟢

If Mitigated

With proper network segmentation and access controls, impact is limited to the FreePBX instance itself without lateral movement to other systems.

🌐 Internet-Facing: HIGH if FreePBX web interface is exposed to the internet, as authenticated users could exploit this remotely.
🏢 Internal Only: MEDIUM as it requires authenticated access, but internal users with API access could exploit it.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Requires obtaining the api-oauth.key private key and knowing an existing jti value from the database, which typically requires some level of initial access.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 17.0.5 or 16.0.17

Vendor Advisory: https://github.com/FreePBX/security-reporting/security/advisories/GHSA-gvgh-p7wj-76cf

Restart Required: No

Instructions:

1. Backup your FreePBX configuration. 2. Update FreePBX via the web interface (Admin → Module Admin → Check for Updates) or command line (fwconsole ma upgradeall). 3. Verify version is 17.0.5+ or 16.0.17+.

🔧 Temporary Workarounds

Restrict API Access

all

Limit network access to FreePBX API endpoints to trusted IP addresses only.

Configure firewall rules to restrict access to FreePBX web ports (typically 80/443) to authorized networks only.

Rotate API Keys

FreePBX

Generate new api-oauth.key to invalidate potentially compromised tokens.

Navigate to FreePBX Admin → System Admin → API Settings → Generate New Key

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate FreePBX from other critical systems
  • Enforce least privilege access controls and monitor for unusual API activity

🔍 How to Verify

Check if Vulnerable:

Check FreePBX version via web interface (Admin → System Admin → About) or command line: fwconsole ma list | grep framework

Check Version:

fwconsole ma list | grep framework

Verify Fix Applied:

Confirm version is 17.0.5 or higher (for v17) or 16.0.17 or higher (for v16)

📡 Detection & Monitoring

Log Indicators:

  • Unusual API access patterns from non-admin users
  • Multiple failed JWT validation attempts followed by successful privileged access

Network Indicators:

  • Unusual REST/GraphQL API requests with elevated scopes from unexpected sources

SIEM Query:

source="freepbx" AND (event="api_access" AND user_privilege_change="escalation")

🔗 References

📤 Share & Export