CVE-2025-68156 in exprinformazioni

Riassunto

di VulDB • 16/08/2026

Expr è un linguaggio di espressione e un motore per la valutazione delle espressioni in Go. Prima della versione 1.17.7, diverse funzioni integrate (builtin) di Expr, tra cui `flatten`, `min`, `max`, `mean` e `median`, eseguono una traversata ricorsiva su strutture dati fornite dall'utente senza imporre un limite massimo alla profondità di ricorsione. Se l'ambiente di valutazione contiene strutture dati profondamente annidate o cicliche, queste funzioni possono andare in ricorsione indefinita fino a superare il limite dello stack del runtime Go. Ciò provoca un panic da overflow dello stack (stack overflow), causando il crash dell'applicazione host. La possibilità di sfruttamento dipende dalla capacità di un attaccante di influenzare o iniettare strutture dati cicliche o patologicamente profonde nell'ambiente di valutazione; tale comportamento rappresenta comunque un rischio di denial-of-service (DoS) e compromette la robustezza complessiva della libreria. Invece di restituire un errore di valutazione recuperabile, il processo può terminare in modo imprevisto. Nelle versioni interessate, la valutazione di espressioni che invocano determinate funzioni integrate su strutture dati non attendibili o insufficientemente validate può portare a un crash a livello di processo dovuto all'esaurimento dello stack (stack exhaustion). Questo problema è particolarmente rilevante negli scenari in cui Expr viene utilizzato per valutare espressioni contro ambienti forniti esternamente o costruiti dinamicamente; riferimenti ciclici (diretti o indiretti) possono essere introdotti in array, mappe o struct; e non esistono salvaguardie a livello di applicazione che impediscano l'elaborazione di dati di input profondamente annidati. Nei casi d'uso tipici con dati controllati e aciclici, il problema potrebbe non manifestarsi. Tuttavia, quando presente, il panic risultante può essere utilizzato per far crashare in modo affidabile l'applicazione, costituendo un denial of service. Il problema è stato risolto nelle versioni v1.17.7 di Expr. La patch introduce un limite massimo alla profondità di ricorsione per le funzioni integrate interessate. Quando tale limite viene superato, la valutazione termina in modo elegante e restituisce un errore descrittivo invece di generare un panic. Inoltre, la profondità massima può essere personalizzata dagli utenti tramite `builtin.MaxDepth`, consentendo alle applicazioni con strutture legittimamente profonde di aumentare il limite in modo controllato. Si consiglia vivemente agli utenti di eseguire l'aggiornamento alla versione patchata, che include sia il guardrail per la ricorsione (recursion guard) sia una copertura dei test completa per prevenire regressioni. Per gli utenti che non possono effettuare immediatamente l'upgrade, sono raccomandate alcune mitigazioni: assicurarsi che gli ambienti di valutazione non contengano riferimenti ciclici; convalidare o sanificare le strutture dati fornite esternamente prima di passarle a Expr; e/o avvolgere la valutazione delle espressioni con un meccanismo di recupero dai panic (panic recovery) per prevenire il crash completo del processo (come misura difensiva ultima). Queste soluzioni alternative riducono il rischio ma non eliminano completamente l'issue senza la patch.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Responsabile

GitHub M

Prenotare

16/12/2025

Divulgazione

16/12/2025

Moderazione

accettato

CPE

pronto

EPSS

0.00428

KEV

no

Attività

molto basso

Fonti

Do you need the next level of professionalism?

Upgrade your account now!