Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2023-1430 — Divulgazione responsabile di una vulnerabilità non corretta in FluentCRM di WPManageNinja | Kitploit
Strumenti/GitHubGitHub/karlemilnikka/cve-2023-1430
Autenticazione e AutorizzazioneAnalisi delle VulnerabilitàSicurezza WebPaper e RicercaConfigurazione ErrataApprendimento e Formazione
GitHubkarlemilnikka/cve-2023-1430

CVE-2023-1430

Divulgazione responsabile di una vulnerabilità non corretta in FluentCRM di WPManageNinja

Vedi Repository
132 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Aggiornamento 2023-06-12: Non hai più bisogno dello snippet. WPManageNinja ha corretto la vulnerabilità due ore dopo la divulgazione pubblica (93 giorni dopo la segnalazione).

Aggiornamento 2024-01-27: Il problema correlato con i valori hash eterni è ora completamente risolto.

Divulgazione responsabile della vulnerabilità non corretta CVE-2023-1430 in FluentCRM di WPManageNinja

tl;dr Gli aggressori possono visualizzare e modificare i dettagli dei contatti in FluentCRM. WPManageNinja non ha corretto la vulnerabilità entro la finestra di divulgazione responsabile di 90 giorni. Fornisco uno snippet di mitigazione per prevenire lo sfruttamento della vulnerabilità in attesa di una patch ufficiale.

  • Vulnerabilità: CVE-2023-1430 Uso insufficiente dell'hash come controllo di autorizzazione
  • CVSS: 6.5 (Medio)
  • Software: FluentCRM
  • Versioni interessate: vulnerabilità rilevata in 2.7.40
  • Versione corretta: 2.8.02
  • Sviluppatore: WPManageNinja
  • Ricercatore: Karl Emil Nikka, Nikka Systems (segnalato tramite Wordfence)
  • Pubblicato pubblicamente: 2023-06-12
  • Ultimo aggiornamento: 2023-06-12

Panoramica

Oggi pubblico informazioni su una vulnerabilità che ho trovato nel popolare plugin WordPress FluentCRM di WPManageNinja. La vulnerabilità, CVE-2023-1430, è causata dall'uso insufficiente di un hash dell'indirizzo email come controllo di autorizzazione da parte di FluentCRM. Ho divulgato responsabilmente la vulnerabilità secondo la politica di divulgazione delle vulnerabilità di Google Zero. WPManageNinja non ha fornito una patch entro la finestra di 90 giorni né ha richiesto una proroga.

In questo rapporto, contact si riferisce a un oggetto contatto di FluentCRM, mentre user si riferisce a un oggetto utente WordPress. Un contatto può essere collegato a un utente, ma non è un requisito. I dettagli sullo sfruttamento della vulnerabilità vengono omessi fino a quando non sarà disponibile una patch ufficiale. I professionisti della sicurezza possono contattarmi per il rapporto completo ([email protected]).

Impatto generale e azioni richieste

Sui siti che eseguono FluentCRM, un aggressore può visualizzare e modificare il nome, l'indirizzo email e l'impostazione dell'elenco di un contatto conoscendo l'indirizzo email del contatto. Poiché il nome del contatto è spesso incluso nelle newsletter tramite tag di unione, un aggressore può sostituire il nome del contatto con linguaggio volgare, causando l'invio di newsletter volgari da parte del proprietario del sito. Se l'amministratore del sito ha abilitato lo shortcode di FluentCRM per la gestione delle preferenze e lo ha aggiunto a una pagina web pubblica, un aggressore può visualizzare e modificare tutte le informazioni personali esposte, ovvero titolo, numero di telefono, data di nascita e indirizzo (a seconda della configurazione di FluentCRM).

FluentCRM è installato su più di 30.000 siti. Gli amministratori dei siti FluentCRM possono prevenire lo sfruttamento della vulnerabilità aggiungendo il mio snippet di mitigazione al file functions.php del loro tema figlio.

Lo snippet non corregge la vulnerabilità. Sostituisce il contenuto vulnerabile sulla pagina di FluentCRM per l'annullamento dell'iscrizione (unsubscribe.php) e sulla pagina per la gestione delle preferenze (manage_subscription.php) con un messaggio di errore che chiede al contatto di contattare via email. L'indirizzo email nel messaggio di errore è l'indirizzo email dell'amministratore del sito (può essere modificato dallo snippet). Lo snippet di mitigazione garantisce anche che i visitatori non autenticati non possano visualizzare lo shortcode vulnerabile di FluentCRM per la gestione delle preferenze (fluentcrm_pref). Un visitatore non autenticato vedrà invece un messaggio di errore che lo invita ad accedere. Tutte le stringhe sono traducibili con il file POT fornito.

Azioni richieste

Raccomando ai proprietari dei siti di implementare la mitigazione che fornisco o una mitigazione corrispondente propria. I proprietari dei siti dovrebbero anche verificare l'integrità dei loro dati di contatto FluentCRM e, se possibile, controllare i loro log per potenziali fughe di dati. Controllare i log è particolarmente importante per i seguenti siti:

  • siti in cui il nome registrato di un contatto è un'informazione sensibile
  • siti in cui lo shortcode di FluentCRM per la gestione delle preferenze è o è stato presente su pagine pubbliche per visitatori non autenticati
  • siti in cui la gestione dell'elenco è abilitata e il nome degli elenchi a cui un contatto è iscritto è un'informazione sensibile.

Il responsabile del trattamento dei dati designato del sito gestirà le potenziali fughe di dati personali secondo le leggi e i regolamenti delle giurisdizioni interessate.

Impatto potenziale aggiuntivo

Se FluentCRM è configurato per sincronizzare le impostazioni di un contatto con il suo utente corrispondente, un aggressore può cambiare il nome dell'utente. Fortunatamente, FluentCRM non sincronizza gli indirizzi email dai contatti agli utenti. Se FluentCRM lo facesse, questa vulnerabilità consentirebbe il pieno controllo del sito. Un aggressore avrebbe potuto ottenere accesso privilegiato cambiando l'indirizzo email dell'amministratore del sito e quindi reimpostando la password dell'amministratore.

Tuttavia, altre soluzioni possono sincronizzare tutti i metadati dai contatti agli utenti, ad esempio WP Fusion e l'API di FluentCRM. WP Fusion è probabilmente il plugin di terze parti più popolare per sincronizzare i metadati dei contatti tra un CRM (ad es. FluentCRM) e WordPress. Fortunatamente, la versione corrente di WP Fusion non è collegata alle modifiche dei metadati iniziate dai moduli vulnerabili. Ho informato gli sviluppatori di WP Fusion, e non affronteranno questa limitazione fino a quando WPManageNinja non avrà corretto la vulnerabilità.

L'API di FluentCRM può anche essere utilizzata per aggiornare i dati di contatti e utenti. I proprietari di siti che utilizzano l'API di FluentCRM per aggiornare gli indirizzi email degli utenti devono disabilitare questo aggiornamento quando avviato dalla pagina o dallo shortcode di FluentCRM per la gestione delle preferenze (o aggiungere il mio snippet di mitigazione per garantire che nessuna impostazione possa essere aggiornata dai moduli vulnerabili).

Sfruttamento della vulnerabilità

FluentCRM consente ai contatti di annullare l'iscrizione e gestire le preferenze da pagine web pubbliche. I collegamenti a queste pagine sono inclusi in ogni newsletter. Le modifiche apportate su queste pagine sono autorizzate da hash MD5 degli indirizzi email dei contatti, passati come parametri URL. L'hash MD5 di un indirizzo email non è un segreto e può essere calcolato da chiunque. Un aggressore può sfruttare l'uso errato degli hash per annullare l'iscrizione di contatti specifici o annullare l'iscrizione in massa di contatti con indirizzi email noti.

Mentre la pagina di annullamento dell'iscrizione si basa esclusivamente sull'hash MD5 per l'autorizzazione, la pagina per la gestione delle preferenze richiede un parametro URL aggiuntivo chiamato ce_id. In questo caso, ce_id si riferisce all'ID del contatto nella tabella fc_subscribers. Questo ID è un intero incrementale. Il valore di ce_id è quindi facilmente trovabile testando tutti i valori possibili (lo spazio di ricerca è il numero di contatti mai registrati sul sito). Gli utenti amministratori probabilmente hanno valori bassi.

Dalla pagina per la gestione delle preferenze, un aggressore può anche esfiltrare il valore secure_hash del contatto. Aggiornando l'indirizzo email del contatto, il valore "secure_hash" del contatto viene memorizzato in un cookie chiamato fc_hash_secure. Con questo cookie, l'aggressore può visualizzare tutte le informazioni di contatto rese disponibili dallo shortcode del modulo delle preferenze di FluentCRM.

Problema minore correlato: valori hash eterni

Il "secure_hash" menzionato in precedenza è un valore su cui FluentCRM (in alcune situazioni) fa affidamento invece o in alternativa all'hash MD5 dell'indirizzo email. Dalla versione 2.8.0 di FluentCRM, la pagina di annullamento dell'iscrizione si basa esclusivamente sul valore secure_hash per l'autorizzazione. La pagina per la gestione delle preferenze accetta sia il nuovo valore secure_hash che il vecchio hash MD5 dell'indirizzo email per l'autorizzazione.

Sebbene il valore secure_hash non possa essere derivato dall'indirizzo email, l'uso di FluentCRM non segue buone pratiche di sicurezza. Il valore secure_hash viene generato una volta per contatto. Non viene mai aggiornato e non scade mai. Ciò è problematico poiché il valore secure_hash è incluso in ogni newsletter. Se un aggressore ottiene l'accesso alla casella di posta di un contatto, l'aggressore può modificare le impostazioni del contatto a tempo indeterminato. Se il contatto interessato è collegato a un utente con privilegi di amministratore e le modifiche dell'indirizzo email vengono sincronizzate da FluentCRM a WordPress, ogni singola newsletter inviata a questo contatto conterrà un token che non scade mai per prendere il controllo del sito.

Ho segnalato questo problema correlato a WPManageNinja il 2023-03-15. Due mesi dopo (2023-05-15), WPManageNinja ha risposto che i loro consulenti di sicurezza non consideravano il valore secure_hash statico un problema. I consulenti di sicurezza di WPManageNinja hanno detto che era "ok usare questo tipo di token generati una tantum per identificare il contatto" e che era "simile ai token API dei servizi SaaS che non vengono consegnati ad altri contatti ma solo inviati al contatto effettivo che possiede l'indirizzo email".

WPManageNinja sono stati aperti e mi hanno detto di fargli sapere se pensavo ancora che fosse un problema di sicurezza, cosa che ho fatto. Ho spiegato perché i valori secure_hash non potevano essere paragonati ai token API. (I token API possono essere assicurati di essere inviati solo su connessioni TLS e l'accesso ai token API può essere limitato. Non è il caso dei valori in chiaro nelle email. Ancora più importante, i token API possono essere revocati mentre non c'è modo per un contatto di revocare un valore secure_hash.)

Più tardi quel giorno, WPManageNinja mi ha ringraziato e ha detto che avrebbero preso in considerazione la combinazione dell'ID del record email con l'hash. Questo risolverà il problema se implementato insieme alla revoca automatica di vecchi (scadenza basata sul tempo) o precedenti (scadenza basata sul contatore) valori secure_hash. Questa funzionalità non è ancora stata implementata, ma non considero l'uso di valori hash statici come parte di questo CVE.

Cronologia

  • 2023-03-11 Ho segnalato la vulnerabilità a WPManageNinja. A questo punto, avevo trovato la vulnerabilità solo sulla pagina di annullamento dell'iscrizione.
  • 2023-03-13 WPManageNinja ha riconosciuto di aver ricevuto la mia segnalazione.
  • 2023-03-14 Gli sviluppatori di WPManageNinja hanno negato di utilizzare hash MD5 di indirizzi email per l'autorizzazione, affermando di utilizzare token wp_generate_uuid4.
  • 2023-03-14 Ho spiegato e dimostrato che facevano affidamento su hash MD5 di indirizzi email.
  • 2023-03-15 A causa della risposta iniziale di WPManageNinja, ho approfondito e ho trovato la stessa vulnerabilità sulla pagina per la gestione delle preferenze. Ho segnalato le mie scoperte a WPManageNinja e ho spiegato perché rendeva la vulnerabilità più grave. Ho anche inviato una segnalazione a Wordfence e richiesto un CVE.
  • 2023-03-16 WPManageNinja ha riconosciuto di aver ricevuto la mia segnalazione aggiornata.
  • 2023-03-16 Wordfence ha confermato la vulnerabilità e le ha assegnato CVE-2023-1430.
  • 2023-04-10 Ho inviato un promemoria di 30 giorni a WPManageNinja.
  • 2023-04-14 WPManageNinja ha rilasciato FluentCRM 2.8.0 senza menzionare patch di sicurezza (solo "miglioramenti e correzioni di bug").
  • 2023-04-22 Ho informato WPManageNinja che l'aggiornamento 2.8.0 aveva corretto la vulnerabilità solo sulla pagina di annullamento dell'iscrizione e che persisteva sulla pagina per la gestione delle preferenze.
  • 2023-04-24 WPManageNinja ha riconosciuto di aver ricevuto la mia segnalazione aggiornata.
  • 2023-05-14 Ho inviato un promemoria di 60 giorni a WPManageNinja.
  • 2023-05-15 WPManageNinja ha detto che mi avrebbero inviato una versione beta corretta la settimana successiva (cosa che non hanno mai fatto).
  • 2023-06-01 Ho chiesto a WPManageNinja se dovessi avvisare lo sviluppatore di WP Fusion prima della divulgazione pubblica. WPManageNinja mi ha detto che non era necessario perché avrebbero rilasciato un aggiornamento la settimana successiva (cosa che non hanno fatto).
  • 2023-06-08 Ho detto a WPManageNinja che avrei posticipato la divulgazione pubblica al 2023-06-12 poiché la data di divulgazione pubblica originale era vicina al fine settimana.
  • 2023-06-09 Ho informato WPManageNinja che avevano raggiunto i 90 giorni e che il prossimo passo responsabile sarebbe stato pubblicare informazioni sulla vulnerabilità in modo che tutti potessero implementare mitigazioni in attesa. Ho anche chiesto agli sviluppatori di WP Fusion di non affrontare la limitazione di sincronizzazione fino a quando WPManageNinja non avesse corretto la vulnerabilità.
  • 2023-06-09 Wordfence ha pubblicato i dettagli iniziali sulla vulnerabilità, affermando erroneamente che la vulnerabilità era stata corretta. Ciò è stato dovuto a un equivoco tra me e Wordfence.
  • 2023-06-12 Ho pubblicato questo rapporto con i dettagli dello sfruttamento omessi.

Nikka Systems Academy (Project Opal) NON è interessata

Nel primo trimestre 2023, abbiamo iniziato la migrazione dal nostro precedente strumento di newsletter (Sendy) a FluentCRM. Ho trovato la vulnerabilità durante l'integrazione di FluentCRM con Nikka Systems Academy (Project Opal). Poiché abbiamo sostituito il sistema di gestione delle iscrizioni di FluentCRM con il nostro plugin personalizzato, i moduli vulnerabili di FluentCRM non hanno mai interessato il nostro sito o i dati dei nostri clienti.

Raccomandazioni per WPManageNinja

FluentCRM è un ottimo plugin, ma la gestione della divulgazione della vulnerabilità da parte di WPManageNinja lascia molto a desiderare. L'elenco seguente è il mio suggerimento su come WPManageNinja potrebbe migliorare la situazione.

  • Dovrebbero consultare un revisore esterno per verificare l'attuale codebase. La vulnerabilità CVE-2023-1430 è un esempio da manuale di come non usare gli hash. Insieme alla negazione iniziale di WPManageNinja di utilizzare persino hash MD5 di indirizzi email per l'autorizzazione, questo mi dice che probabilmente è il momento per una revisione esterna del codebase.
  • Dovrebbero pubblicare un file security.txt (RFC 9116) in modo che i ricercatori di sicurezza possano contattare direttamente i loro sviluppatori. Hanno perso importanti giorni di mitigazione poiché ho dovuto segnalare la vulnerabilità tramite il loro dipartimento di assistenza clienti, che inizialmente ha respinto erroneamente la segnalazione di vulnerabilità.
  • Dovrebbero stabilire una procedura migliore per correggere le vulnerabilità in modo tempestivo. Una vulnerabilità facilmente correggibile come questa dovrebbe essere risolta entro 30 giorni. Non avere una patch pronta entro la finestra di divulgazione responsabile di 90 giorni è inaccettabile.
  • Dovrebbero sempre divulgare le vulnerabilità affrontate e i miglioramenti di sicurezza implementati nei loro changelog in modo che i loro clienti sappiano quanto siano importanti gli aggiornamenti.

Detto questo, ho ancora fiducia in WPManageNinja. Ci sono bug in tutti i software, e una singola segnalazione di vulnerabilità gestita male non è un motivo per smettere di usare i loro plugin.

Aggiornamento 2023-06-12: Il fatto che abbiano ancora tentato di nascondere la vulnerabilità nel loro changelog mi preoccupa genuinamente. (Ora hanno aggiunto il CVE.)

Changelog

  • 2023-06-12 Pubblicazione iniziale.
  • 2023-06-12 Aggiornato con informazioni sulla disponibilità della patch e dettagli sullo sfruttamento precedentemente omessi.
  • 2023-06-12 Aggiunto alla cronologia: WPManageNinja aggiunge informazioni sul CVE al changelog del plugin.
  • 2023-06-12 Correzione errori di ortografia. CVSS aumentato a 6.5 da Wordfence.
  • 2024-01-27 Aggiunte informazioni su come FluentCRM 2.8.40 e 2.8.41 hanno risolto il problema minore correlato con i valori hash eterni.
Scarica lo strumento
  • 2023-06-12 WPManageNinja ha corretto la vulnerabilità due ore dopo la divulgazione pubblica (93 giorni dopo la segnalazione) senza menzionare nulla sulla vulnerabilità nel loro changelog (solo "Usa Secure Hash invece di MD5 per la pagina delle preferenze di iscrizione").
  • 2023-06-12 Ho aggiornato questo rapporto con informazioni sulla patch e i dettagli precedentemente omessi.
  • 2023-06-12 WPManageNinja ha aggiunto informazioni sul CVE al changelog del plugin.
  • 2024-01-17 WPManageNinja mi ha contattato per avere il mio parere sulla loro soluzione al problema dei valori hash eterni.
  • 2024-01-27 WPManageNinja ha rilasciato FluentCRM 2.8.40, risolvendo il problema dei valori hash eterni con i miei miglioramenti suggerimenti implementati.
  • 2024-01-27 WPManageNinja ha rilasciato FluentCRM 2.8.41, assicurando che il vecchio hash di autenticazione di un contatto venga invalidato quando l'utente WordPress collegato cambia password.
  • 2024-01-27 Ho considerato risolto il problema minore correlato con i valori hash eterni.