In de libcue-bibliotheek, die wordt gebruikt voor het parseren van metadata met informatie over de volgorde en duur van audiotracks, is een kwetsbaarheid (CVE-2023-43641) ontdekt die het mogelijk maakt om code uit te voeren bij het verwerken van speciaal opgemaakte cue-bestanden. De bibliotheek wordt gebruikt in sommige multimedia-spelers en audiobewerkingsprogramma's, waaronder Audacious, en kan worden gebruikt om het systeem te compromitteren wanneer niet-gecontroleerde gegevens worden geopend.
Bovendien wordt de libcue-bibliotheek gebruikt in de zoekmachine tracker-miners, die wordt toegepast in de gebruikersomgeving GNOME. Aangezien tracker-miners automatisch nieuwe multimedia-bestanden in de thuisdirectory indexeert, is het voor een aanval op systemen met GNOME en het uitvoeren van de code van de aanvaller voldoende dat de gebruiker gewoon een speciaal opgemaakt bestand in de map ~/Downloads, ~/Music of ~/Videos plaatst, zonder dat dit geopend hoeft te worden (in sommige gevallen is het al genoeg om op een link in de browser te klikken).
De onderzoekers die de kwetsbaarheid hebben ontdekt, hebben een werkende exploit voorbereid en aangetoond dat exploitatie mogelijk is op omgevingen gebaseerd op Ubuntu 23.04 en Fedora 38. De exploit-code zal later worden gepubliceerd om gebruikers de tijd te geven om de patch die de kwetsbaarheid oplost, te installeren. De exploit werkt stabiel, maar vereist aanpassing voor elke distributie.
De kwetsbaarheid wordt veroorzaakt door een integer overflow in de parser-code van de INDEX-parameter en doet zich voor wanneer in deze parameter te grote numerieke waarden worden opgegeven die niet passen in het type ‘int’. Voor het omzetten van een string naar een getal wordt de functie atoi gebruikt; bijvoorbeeld, wanneer het getal 4294567296 wordt opgegeven, wordt het omgezet in -400000. De kwetsbaarheid ontstaat door het ontbreken van een controle op de waarde die wordt ontvangen om te verifiëren dat deze niet negatief kan zijn. Uiteindelijk voert de code na de atoi-conversie de bewerking ‘track->index[i] = ind’ uit, waarbij ‘i’ een negatief getal kan krijgen om een geheugengebied buiten de buffer te overschrijven met de waarde ‘ind’, die ook uit het verwerkte bestand wordt geladen.
In de meeste distributies met GNOME wordt de tracker-miners component standaard geactiveerd en als strikte afhankelijkheid van de bestandsbeheerder Nautilus (GNOME Files) geladen. Om tracker-miners voor de huidige gebruiker uit te schakelen, kunnen de volgende commando's worden gebruikt: systemctl —user mask tracker-store.service tracker-miner-fs.service tracker-miner-rss.service tracker-extract.service tracker-miner-apps.service tracker-writeback.service tracker reset —hard
Bron: opennet.ru
