
Avis sanitisé pour CVE-2025-51846 affectant la gestion WebSocket de CryptPad.
Gravité : Élevée (CVSS 7.5)
CWE : CWE-400 – Consommation de ressources non contrôlée (Épuisement des ressources),
CWE : CWE-770 – Allocation de ressources sans limites ni limitation de débit
Statut : Corrigé
Confirmé affecté : CryptPad 2025.3.1
Plage affectée dans le brouillon CSAF : >=2025.3.1, <2026.2.1
Note de version corrigée : Le brouillon du coordinateur référence actuellement 2026.2.1. CryptPad a ensuite indiqué que 2026.2.2 est la version de correction réelle en raison d'un problème de version dans 2026.2.1. Les opérateurs doivent confirmer la version corrigée finale dans l'avis CISA publié et les notes de version de CryptPad.
image
L'implémentation WebSocket de CryptPad appliquait des limites sur les trames individuelles mais n'appliquait pas suffisamment de limites cumulatives sur la quantité de données et le nombre de fragments traités par connexion.
Selon la RFC 6455, un message WebSocket peut être divisé en plusieurs trames. Dans les versions affectées, des trames valides répétées ou des messages fragmentés pouvaient entraîner une consommation excessive de ressources côté serveur.
Un attaquant distant non authentifié pouvait exploiter ce comportement pour dégrader ou refuser le service aux utilisateurs légitimes. Lors des tests, cela a entraîné une utilisation élevée du processeur et de la mémoire, une interface CryptPad non réactive, un échec de chargement des documents/sessions et une terminaison du service sous forte charge.
image
Le problème est causé par une comptabilité cumulative insuffisante des ressources dans le chemin de traitement WebSocket. Bien que les trames individuelles puissent être soumises à des vérifications de taille, le serveur traite toujours des trames ou fragments valides répétés sans limite cumulative efficace par connexion.
Lors de tests en laboratoire, plusieurs motifs de trafic WebSocket d'apparence non malveillante ont été utilisés pour valider le problème :
Ces tests ont démontré que CryptPad continuait à consommer des ressources tout en traitant un trafic qui individuellement semblait valide. Sous une charge de laboratoire plus lourde, le service est devenu indisponible et les journaux système ont montré une terminaison de processus due à un épuisement de la mémoire.
Les scripts complets de test de stress ne sont pas publiés pour éviter de permettre des abus contre les instances de production de CryptPad.
image
Cet avis inclut intentionnellement uniquement une description non armée de l'approche de reproduction.
À un niveau élevé, le problème peut être reproduit dans un laboratoire contrôlé en :
Aucun exploit public ou script d'inondation n'est inclus.
image
Un attaquant peut donc ouvrir une connexion WebSocket et envoyer des centaines, voire des milliers de trames (chacune dans la limite de taille autorisée), jusqu'à ce que le serveur ait mis en mémoire tampon et traité une quantité énorme de données. Même si chaque trame en elle-même semble « légale », l'effet cumulatif est que la mémoire et le processeur du serveur sont consommés en traitant chaque fragment.
Un attaquant distant non authentifié peut :
image
>=2025.3.1, <2026.2.11e0c06ad8a0c5dab795f85f9730ec2693320c62eimage
Les opérateurs doivent mettre à niveau vers la version corrigée de CryptPad identifiée dans l'avis final de la CISA et les notes de version de CryptPad.
Les atténuations supplémentaires de défense en profondeur incluent :
image
CryptPad a reconnu la condition de déni de service. Le fournisseur a déclaré que des contre-mesures avaient déjà été mises en œuvre côté nginx pour l'instance phare et que des modifications supplémentaires étaient ajoutées à la configuration d'exemple et à la logique du serveur. CryptPad a également fait référence à une restructuration plus large du serveur visant à inclure ces contre-mesures.
CryptPad a ensuite fourni la PR #2239 comme référence de correction publique et a indiqué que la version de correction de bogue corrigée est 2026.2.2, suite à un problème de version dans 2026.2.1.
image
Ce problème est correctement classé comme une vulnérabilité de déni de service de gravité élevée. L'attaque ne nécessite pas d'authentification et peut provoquer une indisponibilité totale du service en épuisant les ressources du serveur via des schémas de trafic WebSocket valides.
image
Les tests ont été effectués uniquement dans des environnements contrôlés. Cet avis n'inclut pas de scripts d'inondation armés ni d'outillage complet de reproduction.
image
John Perifanis
Chercheur en sécurité
Contact : https://www.linkedin.com/in/ioannis-p-9081842b9