CVE-2023-28638 in Snappier
Riassunto
di VulDB • 14/06/2026
Snappier è un'implementazione C# ad alte prestazioni dell'algoritmo di compressione Snappy. Questa vulnerabilità da overflow del buffer può interessare qualsiasi utente di Snappier 1.1.0. In questa versione, gran parte del codice è stata riscritta per utilizzare riferimenti a byte invece di puntatori a buffer fissati (pinned buffers). Questo cambiamento migliora generalmente le prestazioni e riduce il carico sul garbage collector. Tuttavia, quando il garbage collector esegue la compattazione e riorganizza la memoria, deve aggiornare tutti i riferimenti a byte sullo stack affinché facciano riferimento alla nuova posizione. Il garbage collector di .NET può aggiornare questi riferimenti a byte solo se puntano ancora all'interno del buffer o fino a un punto pari al primo byte oltre la fine del buffer. Se puntano al di fuori di quest'area, il buffer stesso potrebbe essere spostato mentre il riferimento a byte rimane invariato. Ci sono diversi punti nel codice della versione 1.1.0 in cui i riferimenti a byte puntano brevemente al di fuori delle aree valide dei buffer; tali posizioni si trovano nelle sezioni del codice utilizzate per verificare l'intervallo (range) del buffer. Sebbene questi riferimenti non validi non vengano mai dereferenziati direttamente, se una compattazione del GC dovesse verificarsi durante la breve finestra temporale in cui sono presenti sullo stack, potrebbe invalidare il controllo dell'intervallo del buffer e consentire ad altre operazioni di causare un overflow dello stesso. Questo scenario dovrebbe essere molto difficile da innescare intenzionalmente da parte di un attaccante. Sarebbe necessario un attacco ripetitivo su larga scala con la speranza che una compattazione del GC si verifichi nel momento esatto durante una delle richieste. Tuttavia, uno dei controlli dell'intervallo affetto da questo problema è basato sui dati di input presenti nel buffer di decompressione; ciò significa che dati di input malformati potrebbero essere utilizzati per aumentare le probabilità di successo. Si noti che qualsiasi overflow del buffer risultante probabilmente causerà l'accesso a memoria protetta, il quale provocherà un'eccezione e la terminazione del processo. Pertanto, il risultato più probabile di un attacco è una negazione del servizio (DoS). Questo problema è stato risolto nella versione 1.1.1. Si consiglia agli utenti di effettuare l'aggiornamento. Gli utenti che non possono aggiornare possono fissare i buffer in una posizione stabile prima di utilizzarli per la compressione o decompressione, al fine di mitigare alcuni, ma non tutti, questi casi. Almeno un buffer temporaneo di decompressione è interno alla libreria e non viene mai fissato (pinned).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.