
# Documentazione di CVE-2023-31606: vulnerabilità ReDoS nella funzione sanitize_html della gemma Redcloth ## Panoramica CVE-2023-31606 è una vulnerabilità di tipo ReDoS (Regular Expression Denial of Service) identificata nella funzione `sanitize_html` della gemma Redcloth. Questa vulnerabilità consente a un utente malintenzionato di causare un denial of service inviando input appositamente predisposti che sfruttano l'inefficienza delle espressioni regolari utilizzate nella funzione di sanitizzazione. ## Dettagli della vulnerabilità | Campo | Valore | |-------|--------| | **ID CVE** | CVE-2023-31606 | | **Tipo di vulnerabilità** | ReDoS (Regular Expression Denial of Service) | | **Componente interessato** | Funzione `sanitize_html` della gemma Redcloth | | **Punteggio CVSS** | 7.5 (Alto) | | **Vettore di attacco** | Rete | | **Complessità di attacco** | Bassa | | **Impatto sulla disponibilità** | Alto | ## Analisi della causa principale La causa principale di questa vulnerabilità risiede nell'uso di espressioni regolari con backtracking eccessivo all'interno della funzione `sanitize_html`. Quando l'input fornito dall'utente contiene determinate sequenze di caratteri, il motore delle espressioni regolari può entrare in uno stato di backtracking catastrofico, consumando una quantità sproporzionata di risorse CPU e causando un blocco del servizio. ## Punteggio CVSS 7.5 Il punteggio CVSS 7.5 riflette la gravità della vulnerabilità: - **Vettore di attacco (AV:N)** — La vulnerabilità può essere sfruttata da remoto tramite rete. - **Complessità di attacco (AC:L)** — Non sono richieste condizioni particolari per sfruttare la vulnerabilità. - **Nessuna autenticazione richiesta (PR:N)** — L'attaccante non necessita di credenziali. - **Impatto sulla disponibilità (A:H)** — L'impatto principale è sulla disponibilità del servizio, che può essere compromessa completamente. ## Riferimenti OWASP Questa vulnerabilità è classificata secondo le linee guida OWASP: - **OWASP Top 10 — A03:2021 Injection** — Sebbene il ReDoS non sia strettamente un'iniezione, rientra nella categoria più ampia delle vulnerabilità legate a input non sicuri. - **OWASP ReDoS Prevention Cheat Sheet** — Le raccomandazioni per prevenire questo tipo di vulnerabilità includono l'uso di espressioni regolari sicure, l'implementazione di timeout per le operazioni regex e la validazione rigorosa degli input. ## Scopo educativo Questa documentazione è fornita esclusivamente a scopo educativo e di ricerca sulla sicurezza. L'obiettivo è comprendere: 1. Come le espressioni regolari inefficienti possano portare a vulnerabilità ReDoS. 2. L'importanza di testare le espressioni regolari per la complessità temporale. 3. Le best practice per la sanitizzazione sicura dell'input HTML. 4. L'analisi dei punteggi CVSS e la loro interpretazione. ## Mitigazione Per mitigare questa vulnerabilità: - Aggiornare la gemma Redcloth a una versione che corregga il problema. - Implementare timeout per le operazioni di espressioni regolari. - Utilizzare alternative più sicure per la sanitizzazione HTML. - Limitare la lunghezza massima degli input accettati.
È stato scoperto un problema di Denial of Service tramite Espressione Regolare (ReDoS) nella funzione sanitize_html della gemma redcloth >= v4.0.0. Questa vulnerabilità consente agli aggressori di causare un Denial of Service (DoS) fornendo un payload appositamente predisposto.
Secondo OWASP - Il Denial of Service tramite Espressione Regolare (ReDoS) è un attacco Denial of Service che sfrutta il fatto che la maggior parte delle implementazioni di Espressioni Regolari può raggiungere situazioni estreme che le portano a lavorare molto lentamente (in modo esponenziale rispetto alla dimensione dell'input). Un aggressore può quindi indurre un programma che utilizza un'Espressione Regolare a entrare in queste situazioni estreme e bloccarsi per molto tempo. Per maggiori informazioni, fare riferimento a OWASP ReDoS.
sanitize_html di redcloth utilizza la seguente regex per sanificare i tag html. /<(/)([A-Za-z]\w*)([^>]?)(\s?/?)>/
sanitize_html.L'ultimo commit nel repository è stato effettuato il 2019-03-28 e l'ultima versione v4.3.2 è stata rilasciata il 2016-05-24. Il progetto non è più mantenuto.