Oversikt
Den 15. mars 2024 lanserte GNOME en oppdatering for libvte som fikset en minneforbruksårbarhet, nå kjent som CVE-2024-37535. Denne sårbarheten påvirker mange populære terminalemulatorer som GNOME Terminal, XFCE Terminal og MATE Terminal som bruker libvte versjon 0.76.2 eller eldre. Denne sårbarheten kan utnyttes av en angriper til å drepe Xorg-sesjonen, noe som vil føre til at offeret mister alt av ulagret arbeid.
Bakgrunn
Mange terminalemulatorer, som XFCE Terminal, iTerm2 og Windows Terminal, støtter ANSI escape og Operating System Command (OSC) sekvenser. Disse sekvensene lar brukeren endre på fargene i terminalen, formattere teksten, og gjøre endringer på selve terminal emulatoren. For eksempel kan en enkel ANSI escape sekvens gjør at ordet “GRØNT” vises i grønn farge.
Bruken av OSC sekvenser variere ofte avhengig av terminalemulatoren. For eksempel i terminalemulatoren Kitty kan man overføre filer gjennom TTY protokollen, noe som ikke er mulig på de andre fleste. Men i terminalemulatorer som GNOME Terminal, XFCE Terminal og MATE Terminal, som er basert på den gammle XTerm, kan man ved hjelp av OSC sekvenser justere på størrelsen på selve terminalvinduet, som vist i bildet nedenfor.
Utnyttelse
I OSC sekvensen \e[4;W;Ht, representerer W bredden og H høyden på vinduet. Biblioteket libvte styrer størrelsen på terminalvinduet gjennom disse sekvensene. Bredden og høyden blir lagret som int16, hvor 32767 er det største tallet som støttes.
Siden forespørsler om justering på vindustørrelse via OSC sekvenser ikke blir validert, kan en angriper sende verdier som overskrider grensen for int16. En ondsinnet sekvens som \e[4;65535;65535t vil lede til at minnet blir brukt opp, noe som får vinduserveren Xorg til å krasje med en segmentation fault, som vist i loggen nedenfor
En angriper kan levere denne skadelige sekvensen gjennom en rekke verktøy som parser escape sekvenser, som curl, cat og head. For eksempel kan angriperen
plassere sekvensen på en netside og lokke offeret til å bruke curl for å hente innholdet eller legge sekvensen i en tekstfil som offeret kan lese med cat eller head. I tillegg er det også mulig å bruke ANSI escape injection sårbarheten i WinRAR (CVE-2024-33899) for å levere sekvensen.
Som demonstrert i videoen nedenfor, så kan utnyttelse av denne sårbarheten lede til at brukerens sesjon blir avbrutt som da kan lede til tap av ulagret arbeid.
Spørsmål om it-sikkerhet? Kontakt oss her: