În pachetul de birou Apache OpenOffice a fost identificată o vulnerabilitate (CVE-2021-33035), care permite executarea codului la deschiderea unui fișier DBF special conceput. Cercetătorul care a descoperit problema a avertizat cu privire la crearea unui exploit funcțional pentru platforma Windows. Corectarea vulnerabilității este disponibilă momentan doar sub formă de patch în depozitul proiectului, inclus inclus în versiunile test ale OpenOffice 4.1.11. Îmbunătățirile pentru ramura stabilă încă nu sunt disponibile.
Problema este cauzată de faptul că, în timpul alocării memoriei, OpenOffice s-a bazat pe valorile fieldLength și fieldType din antetul fișierelor DBF, fără a verifica dacă tipul efectiv de date din câmpuri corespunde. Pentru a efectua un atac, se poate specifica în valoarea fieldType tipul INTEGER, dar se pot plasa date de dimensiuni mai mari și se poate stabili un fieldLength care nu corespunde dimensiunii datelor de tip INTEGER, ceea ce va duce la scrierea restului datelor din câmp dincolo de bufferul alocat. Ca urmare a unui overflow controlat al bufferului, cercetătorul a reușit să suprascrie pointerul de retur din funcție și, folosind tehnici de programming orientate pe retur (ROP — Return-Oriented Programming), să obțină executarea propriului cod.
Folosind tehnica ROP, atacatorul nu încearcă să plaseze propriul cod în memorie, ci operează cu fragmente ale instrucțiunilor de mașină deja existente în bibliotecile încărcate, care se termină cu instrucțiunea de întoarcere a controlului (de obicei, acestea sunt sfârșiturile funcțiilor din bibliotecă). Funcționarea exploit-ului constă în construirea unei secvențe de apeluri de blocuri similare („gadget-uri”) pentru a obține funcționalitatea dorită. Ca gadget-uri, exploit-ul pentru OpenOffice a folosit cod din biblioteca libxml2, care, spre deosebire de OpenOffice, s-a dovedit a fi compilată fără mecanismele de protecție DEP (Data Execution Prevention) și ASLR (Address Space Layout Randomization).
Dezvoltatorii OpenOffice au fost informați despre problemă pe 4 mai, după care a fost stabilită o dezvăluire publică a vulnerabilității pe 30 august. Deoarece termenul stabilit nu a dus la formarea unei actualizări stabile, cercetătorul a mutat dezvăluirea detaliilor pe 18 septembrie, dar dezvoltatorii OpenOffice nu au reușit să finalizeze lansarea versiunii 4.1.11 până la acea dată. Este notabil că în cadrul aceleași cercetări a fost identificată o vulnerabilitate similară în codul de suport pentru formatul DBF în Microsoft Office Access (CVE-2021–38646), detaliile acesteia fiind dezvăluite mai târziu. Nu s-au găsit probleme în LibreOffice.
Sursa: opennet.ro
