
Advisory ripulito per CVE-2025-51846 relativo alla gestione WebSocket di CryptPad.
Severità: Alta (CVSS 7.5)
CWE: 400 – Uncontrolled Resource Consumption (Resource Exhaustion),
CWE: CWE-770 – Allocation of Resources Without Limits or Throttling
Stato: Corretto
Confermato vulnerabile: CryptPad 2025.3.1
Intervallo interessato nella bozza CSAF: >=2025.3.1, <2026.2.1
Nota sulla versione corretta: La bozza del coordinatore fa attualmente riferimento alla 2026.2.1. CryptPad ha successivamente indicato che la 2026.2.2 è la versione di correzione effettivamente valida a causa di un problema di versione nella 2026.2.1. Gli operatori dovrebbero confermare la versione corretta finale nell'avviso CISA pubblicato e nelle note di rilascio di CryptPad.
immagine
L'implementazione WebSocket di CryptPad applicava limiti sui singoli frame ma non applicava adeguatamente limiti cumulativi sulla quantità di dati e sul numero di frammenti elaborati per connessione.
Secondo la RFC 6455, un messaggio WebSocket può essere suddiviso in più frame. Nelle versioni interessate, frame validi ripetuti o messaggi frammentati potevano causare un consumo eccessivo di risorse lato server.
Un attaccante remoto non autenticato poteva sfruttare questo comportamento per degradare o negare il servizio agli utenti legittimi. Nei test, ciò ha comportato un elevato utilizzo di CPU e memoria, un'interfaccia CryptPad non reattiva, il mancato caricamento di documenti/sessioni e la terminazione del servizio sotto carico elevato.
immagine
Il problema è causato da una contabilizzazione cumulativa insufficiente delle risorse nel percorso di elaborazione WebSocket. Sebbene i singoli frame possano essere soggetti a controlli dimensionali, il server elabora comunque frame validi o frammenti ripetuti senza un efficace limite cumulativo per connessione.
Nei test di laboratorio, sono stati utilizzati diversi modelli di traffico WebSocket dall'aspetto non malevolo per validare il problema:
Questi test hanno dimostrato che CryptPad continuava a consumare risorse durante l'elaborazione di traffico che individualmente appariva valido. Sotto un carico di laboratorio più intenso, il servizio è diventato non disponibile e i log di sistema hanno mostrato la terminazione del processo a causa dell'esaurimento della memoria.
Gli script completi di stress test non sono pubblicati per evitare di abilitare abusi contro le istanze CryptPad in produzione.
immagine
Questo avviso include intenzionalmente solo una descrizione non armata dell'approccio di riproduzione.
A livello generale, il problema può essere riprodotto in un laboratorio controllato:
Non è incluso alcun exploit pubblico o script di flood.
immagine
Un attaccante può quindi aprire una connessione WebSocket e inviare centinaia o addirittura migliaia di frame (ciascuno entro il limite di dimensione consentito), finché il server non ha bufferizzato ed elaborato un'enorme quantità di dati. Anche se ogni singolo frame appare 'legale', l'effetto cumulativo è che memoria e CPU del server vengono consumate per elaborare ogni frammento.
Un attaccante remoto non autenticato può:
immagine
>=2025.3.1, <2026.2.11e0c06ad8a0c5dab795f85f9730ec2693320c62eimmagine
Gli operatori dovrebbero aggiornare alla versione corretta di CryptPad indicata nell'avviso CISA finale e nelle note di rilascio di CryptPad.
Ulteriori mitigazioni di difesa in profondità includono:
immagine
CryptPad ha riconosciuto la condizione di denial-of-service. Il fornitore ha dichiarato che erano già state implementate contromisure sul lato nginx per l'istanza principale e che ulteriori modifiche venivano aggiunte alla configurazione di esempio e alla logica del server. CryptPad ha inoltre fatto riferimento a un più ampio refactoring del server volto a includere queste contromisure.
CryptPad ha successivamente fornito la PR #2239 come riferimento pubblico per la correzione e ha indicato che la versione di bugfix corretta è la 2026.2.2, a seguito di un problema di versione nella 2026.2.1.
immagine
Questo problema è correttamente classificato come una vulnerabilità di denial-of-service ad alta gravità. L'attacco non richiede autenticazione e può causare la completa indisponibilità del servizio esaurendo le risorse del server attraverso modelli di traffico WebSocket validi.
immagine
I test sono stati eseguiti solo in ambienti controllati. Questo avviso non include script di flood armamentati o strumenti completi di riproduzione.
immagine
John Perifanis
Ricercatore di sicurezza
Contatto: https://www.linkedin.com/in/ioannis-p-9081842b9