In het kantoorpakket Apache OpenOffice is een kwetsbaarheid ontdekt (CVE-2021-33035) die kan leiden tot de uitvoering van code bij het openen van een speciaal opgemaakt DBF-bestand. De onderzoeker die het probleem heeft ontdekt, waarschuwde voor de creatie van een werkende exploit voor het Windows-platform. Een oplossing voor de kwetsbaarheid is voorlopig alleen beschikbaar in de vorm van een patch in de projectrepository, die deel uitmaakt van de testversies van OpenOffice 4.1.11. Updates voor de stabiele tak zijn nog niet beschikbaar.
Het probleem wordt veroorzaakt doordat OpenOffice bij het toewijzen van geheugen vertrouwt op de waarden van fieldLength en fieldType in de header van DBF-bestanden, zonder te controleren of deze overeenkomen met het feitelijke datatype in de velden. Voor een aanval kan men in de waarde van fieldType het type INTEGER opgeven, maar gegevens van een grotere omvang plaatsen en een waarde voor fieldLength opgeven die niet overeenkomt met de grootte van de gegevens van het type INTEGER, wat ertoe leidt dat de rest van de gegevens uit het veld buiten de toegewezen buffer wordt geschreven. Als gevolg van een gecontroleerde bufferoverloop slaagde de onderzoeker erin om de return pointer van de functie te overschrijven en met technieken voor Return-Oriented Programming (ROP) zijn eigen code uit te voeren.
Bij het gebruik van de ROP-techniek probeert de aanvaller zijn eigen code niet in het geheugen te plaatsen, maar werkt hij met al bestaande stukken machine-instructies in de geladen bibliotheken die eindigen met een return-instructie (meestal het einde van bibliotheekfuncties). De werking van de exploit komt neer op het opbouwen van een keten van aanroepen van dergelijke blokken ('gadgets') om de gewenste functionaliteit te verkrijgen. In de exploit voor OpenOffice werd gebruikgemaakt van code uit de in OpenOffice gebruikte library libxml2, die, in tegenstelling tot OpenOffice zelf, zonder de beschermingsmechanismen DEP (Data Execution Prevention) en ASLR (Address Space Layout Randomization) was samengesteld.
De ontwikkelaars van OpenOffice zijn op 4 mei op de hoogte gebracht van het probleem, waarna de publieke onthulling van de kwetsbaarheid op 30 augustus was gepland. Doordat voor de geplande datum de stabiele tak niet was gevormd, heeft de onderzoeker de onthulling van details verplaatst naar 18 september, maar de ontwikkelaars van OpenOffice zijn er niet in geslaagd om de release 4.1.11 voor die datum te vormgeven. Opmerkelijk is dat tijdens hetzelfde onderzoek een vergelijkbare kwetsbaarheid in de code voor de ondersteuning van het DBF-formaat in Microsoft Office Access (CVE-2021ā38646) is ontdekt, waarvan de details later worden onthuld. In LibreOffice zijn geen problemen gevonden.
Bron: opennet.ru
