È stata scoperta una vulnerabilità nel pacchetto per ufficio Apache OpenOffice (CVE-2021-33035) che consente l'esecuzione di codice aprendo un file DBF appositamente formattato. Il ricercatore che ha individuato il problema ha avvisato sulla creazione di un exploit funzionante per la piattaforma Windows. Attualmente, la correzione della vulnerabilità è disponibile solo sotto forma di patch nel repository del progetto, che è entrato a far parte delle versioni di test di OpenOffice 4.1.11. Gli aggiornamenti per il ramo stabile non sono ancora stati rilasciati.
Il problema è causato dal fatto che, durante l'allocazione della memoria, OpenOffice si basava sui valori di fieldLength e fieldType nell'intestazione dei file DBF, senza controllare la corrispondenza con il tipo di dati effettivo nei campi. Per eseguire un attacco, è possibile specificare un tipo INTEGER nel valore di fieldType, ma inserire dati di dimensioni maggiori e un valore di fieldLength che non corrisponde alla dimensione dei dati di tipo INTEGER, il che porterà a scrivere la parte finale dei dati oltre il buffer allocato. Di conseguenza, a causa di un overflow del buffer controllato, il ricercatore è riuscito a sovrascrivere il puntatore di ritorno dalla funzione e, utilizzando tecniche di Return-Oriented Programming (ROP), è riuscito a eseguire il proprio codice.
Utilizzando la tecnica ROP, l'attaccante non cerca di inserire il proprio codice nella memoria, ma opera con frammenti di istruzioni di macchine già esistenti nelle librerie caricate, che terminano con un'istruzione di ritorno dal controllo (di solito, si tratta delle conclusioni delle funzioni di libro). Il funzionamento dell'exploit consiste nella costruzione di una catena di chiamate a tali blocchi ("gadgets") per ottenere la funzionalità desiderata. Per quanto riguarda gli gadgets nell'exploit per OpenOffice, è stato utilizzato codice dalla libreria libxml2 impiegata in OpenOffice, la quale, a differenza di OpenOffice stesso, è risultata compilata senza meccanismi di protezione DEP (Data Execution Prevention) e ASLR (Address Space Layout Randomization).
Gli sviluppatori di OpenOffice sono stati informati del problema il 4 maggio, dopo di che la divulgazione pubblica dei dettagli sulla vulnerabilità è stata programmata per il 30 agosto. Poiché entro la scadenza prevista non era stata ancora formulata un'aggiornamento della versione stabile, il ricercatore ha spostato la divulgazione delle informazioni al 18 settembre, ma gli sviluppatori di OpenOffice non erano riusciti a rilasciare la versione 4.1.11 entro quella data. È interessante notare che durante la stessa ricerca è stata identificata una vulnerabilità simile nel codice di supporto del formato DBF in Microsoft Office Access (CVE-2021–38646), i cui dettagli saranno divulgati in seguito. Non sono stati trovati problemi in LibreOffice.
Fonte: opennet.ru
