Sårbarhed, der giver dig mulighed for at erstatte escape-sekvenser i andres terminaler

En sårbarhed (CVE-2024-28085) er blevet identificeret i vægværktøjet, leveret i util-linux-pakken og beregnet til at sende beskeder til terminaler, hvilket tillader et angreb på andre brugeres terminaler gennem manipulation af escape-sekvenser. Problemet skyldes, at vægværktøjet blokerer escape-sekvenser på inputstrømmen, men ikke gør det på kommandolinjeargumenter, hvilket tillader en angriber at undslippe escape-sekvenser på andre brugeres terminaler.

For eksempel, ved at udføre 'wall $(printf "\033[33mHI")' kan du udskrive "HI" i gult. Ved at bruge escape-sekvenser, der giver dig mulighed for at flytte markøren, rydde og erstatte indhold på skærmen, kan du simulere at vise sudo-adgangskodeprompten i en anden brugers terminal. Hvis brugeren ikke bemærker tricket og indtaster sin adgangskode, vil adgangskoden vises i inputhistorikken som en ikke-eksisterende kommando (faktisk vil brugeren indtaste sin adgangskode på kommandolinjen i stedet for en kommando). “\033[3A” // flyt markøren op 3 linjer “\033[K” // slet det forrige output “[sudo] password for a_user:” // vis en dummy sudo request “\033[?25l” / / sæt baggrundsfarve for at skjule input "\033[38;2;48;10;36m"

Når der udsendes en advarsel om, at den indtastede kommando ikke blev fundet, kører mange distributioner /usr/lib/command-not-found handleren, som forsøger at identificere pakken, der indeholder den manglende kommando og give et hint om, hvorvidt den kan installeres . Problemet er, at når kommandoen-ikke-fundet-handleren startes, sendes en ikke-eksisterende kommando til den som en kommandolinjeparameter, som er synlig, når du ser processer på systemet (f.eks. når du forsøger at køre det afinstallerede hjælpeprogram "xsnow", "/usr" vil være synlig på listen over processer /lib/command-not-found - xsnow"). I overensstemmelse hermed kan angriberen overvåge kørende processer (for eksempel ved at analysere forekomsten af ​​"/proc/$pid/cmdline" for det forudsagte PID-nummer) og bestemme den adgangskode, som offeret indtastede på kommandolinjen.

For at brugeren skal indtaste en adgangskode som svar på en fiktiv sudo-prompt, er et trick blevet foreslået, hvis essens er at spore den faktiske lancering af sudo-værktøjet på listen over processer, vente på, at det er fuldført, og udføre et angreb gennem "muren" umiddelbart efter det. Ved at manipulere escape-sekvenser kan en angriber erstatte beskeden efter den faktiske udførelse af sudo med en falsk adgangskodeprompt. Offeret tror måske, at han lavede en fejl, da han indtastede adgangskoden og indtaster adgangskoden en anden gang, hvilket afslører adgangskoden i argumenterne fra "kommando-ikke-fundet"-behandleren.

Et vellykket angreb kræver, at "mesg"-tilstanden indstilles til "y", som er indstillet som standard i Ubuntu, Debian og CentOS/RHEL. Angrebet er blevet demonstreret i Ubuntu 22.04 i dens standardkonfiguration ved hjælp af gnome-terminal. I Debian er angrebet vanskeligt, da "command-not-found"-handleren ikke er aktiveret som standard i distributionen, og i CentOS/RHEL vil angrebet ikke fungere, da vægværktøjet er installeret uden setgid-flaget og gør ikke har adgang til andres terminaler. Når du bruger Windows-terminal, kan angrebet ændres for at ændre indholdet af udklipsholderen.

Sårbarheden har været til stede i util-linux-pakken siden 2013, efter at 2.24-udgivelsen tilføjede muligheden for at angive en besked på vægkommandolinjen, men glemte at rydde op i escape-sekvenserne. En rettelse til sårbarheden er inkluderet i gårsdagens udgivelse af util-linux 2.40. Det er bemærkelsesværdigt, at når man forsøgte at rette op på sårbarheden i udgivelsen af ​​util-linux 2.39, blev en anden lignende sårbarhed identificeret, som tillader substitution af kontrolkarakterer gennem manipulation af lokaliteter.

Kilde: opennet.ru

Tilføj en kommentar