
Security advisory che descrive CVE-2026-50787, una vulnerabilità di consumo incontrollato di risorse nella generazione CAPTCHA di e-SIC Livre, che consente un denial of service remoto tramite parametri sovradimensionati.
Esiste una vulnerabilità di consumo di risorse nel componente di generazione CAPTCHA di e-SIC Livre (esiclivre).
L'endpoint vulnerabile accetta parametri controllati dall'utente che definiscono le dimensioni dell'immagine CAPTCHA, la dimensione del font e il numero di caratteri da renderizzare. Questi valori vengono utilizzati senza un'adeguata verifica dei limiti.
Un attaccante remoto non autenticato può fornire valori eccessivamente grandi, causando un consumo significativo di memoria e CPU durante la creazione dell'immagine e il rendering del testo. Ciò può comportare timeout dell'applicazione, risposte HTTP 5xx, esaurimento dei worker o denial of service.
0a72b4c9ab89244ec3bd3d7fa0b765850cc9afd7 inclusorestrito/inc/captcha.phpL'endpoint accetta i seguenti parametri GET:
l - larghezza immaginea - altezza immaginetf - dimensione fontql - numero di caratteri CAPTCHAQuesti parametri vengono ottenuti direttamente dall'input dell'utente e utilizzati nelle operazioni di elaborazione delle immagini senza adeguati limiti superiori.
Il codice vulnerabile legge i valori direttamente da $_GET:
$largura = $_GET["l"];
$altura = $_GET["a"];
$tamanho_fonte = $_GET["tf"];
$quantidade_letras = $_GET["ql"];
captcha($largura,$altura,$tamanho_fonte,$quantidade_letras);
La larghezza e l'altezza fornite vengono successivamente passate alla funzione GD di creazione dell'immagine:
$imagem = imagecreate($largura,$altura);
Il valore ql controllato dall'utente determina anche il numero di iterazioni eseguite durante il rendering dei caratteri CAPTCHA:
for($i = 1; $i <= $quantidade_letras; $i++){
imagettftext(
$imagem,
$tamanho_fonte,
rand(-25,25),
($tamanho_fonte*$i),
($tamanho_fonte + 10),
$branco,
$fonte,
substr($palavra,($i-1),1)
);
}
Poiché questi valori non sono limitati a intervalli ragionevoli, richieste appositamente formulate possono forzare l'applicazione a eseguire allocazioni eccessive di immagini e operazioni di rendering del testo.
L'endpoint CAPTCHA vulnerabile è accessibile da remoto.
Un attaccante può inviare richieste contenenti valori anormalmente grandi per le dimensioni dell'immagine, la dimensione del font o il numero di caratteri. Il server tenta quindi di elaborare tali valori utilizzando le operazioni GD di PHP.
Ciò può portare a:
Non è richiesta alcuna autenticazione per raggiungere la funzionalità vulnerabile.
Lo sfruttamento riuscito può comportare un Denial of Service (DoS) attraverso un consumo incontrollato di risorse.
L'impatto dipende dalla configurazione PHP, dalle risorse di sistema disponibili, dalla configurazione del server web e dal numero di richieste concorrenti.
La vulnerabilità è causata da una validazione insufficiente e dalla mancanza di limiti superiori sui parametri controllati dall'utente prima che vengano passati alle operazioni GD di elaborazione delle immagini ad alta intensità di risorse.
L'applicazione dovrebbe validare rigorosamente tutti i parametri di generazione CAPTCHA prima di elaborarli.
Le misure raccomandate includono:
Esempi di limiti difensivi potrebbero includere valori massimi ragionevoli per larghezza, altezza, dimensione del font e lunghezza del CAPTCHA in base all'interfaccia prevista dall'applicazione.
Nessuna correzione a monte era disponibile al momento della richiesta e dell'assegnazione della CVE.
Gli utenti che distribuiscono versioni interessate dovrebbero applicare validazioni locali e limiti di risorse fino a quando non sarà disponibile una correzione a monte.
Scoperta e segnalata da Bryan Romero https://github.com/brynax
Questo advisory documenta la vulnerabilità, la sua causa tecnica principale e le mitigazioni raccomandate a scopo difensivo e di rimedio. Omette intenzionalmente strumenti automatizzati di denial of service, metodi di sfruttamento ad alto volume e istruzioni operative che potrebbero facilitare l'abuso.