Pažeidžiamumas, leidžiantis pakeisti pabėgimo sekas kitų žmonių terminaluose

Pažeidžiamumas (CVE-2024-28085) buvo nustatytas sienos programinėje įrangoje, tiekiamoje util-linux pakete ir skirtoje žinutėms siųsti į terminalus, kuri leidžia atakuoti kitų vartotojų terminalus manipuliuojant pabėgimo sekomis. Problema kyla dėl to, kad sienos programa blokuoja pabėgimo sekas įvesties sraute, bet to nedaro komandinės eilutės argumentuose, todėl užpuolikas gali pabėgti nuo pabėgimo sekų kitų vartotojų terminaluose.

Pavyzdžiui, paleisdami 'wall $(printf "\033[33mHI")' galite spausdinti "HI" geltona spalva. Naudodami pabėgimo sekas, leidžiančias perkelti žymeklį, išvalyti ir pakeisti turinį ekrane, galite imituoti sudo slaptažodžio raginimo rodymą kito vartotojo terminale. Jei vartotojas nepastebės gudrybės ir įves savo slaptažodį, slaptažodis įvesties istorijoje atsiras kaip neegzistuojanti komanda (iš tikrųjų vartotojas savo slaptažodį įves komandų eilutėje, o ne komandos). "\033[3A" // perkelkite žymeklį 3 eilutėmis aukštyn "\033[K" // ištrinkite ankstesnį išvestį "[sudo] slaptažodis a_user:" // parodykite netikrą sudo užklausą "\033[?25l" / / nustatyti fono spalvą, kad paslėptumėte įvestį „\033[38;2;48;10;36m“

Kai pateikiamas įspėjimas, kad įvesta komanda nerasta, daugelis paskirstymų paleidžia /usr/lib/command-not-found tvarkyklę, kuri bando identifikuoti paketą, kuriame yra trūkstama komanda, ir pateikia užuominą, ar ją galima įdiegti. . Problema ta, kad paleidus komandų nerasta tvarkyklę, jai kaip komandų eilutės parametras perduodama neegzistuojanti komanda, kuri matoma peržiūrint sistemos procesus (pvz., bandant paleisti pašalintą programą „xsnow“, „/usr“ bus matomi procesų sąraše /lib/command-not-found - xsnow"). Atitinkamai, užpuolikas gali stebėti vykdomus procesus (pavyzdžiui, analizuodamas „/proc/$pid/cmdline“ numatytam PID numeriui) ir nustatyti aukos komandinėje eilutėje įvestą slaptažodį.

Kad vartotojas galėtų įvesti slaptažodį atsakydamas į fiktyvų sudo raginimą, buvo pasiūlytas triukas, kurio esmė yra stebėti faktinį sudo programos paleidimą procesų sąraše, palaukti, kol jis bus baigtas ir iš karto po to įvykdyti puolimą per „sieną“. Manipuliuodamas pabėgimo sekomis, užpuolikas po faktinio sudo vykdymo pranešimą gali pakeisti netikru slaptažodžio pakartotinio įvedimo raginimu. Nukentėjusysis gali manyti, kad suklydo įvesdamas slaptažodį ir įvesdamas slaptažodį antrą kartą, atskleisdamas slaptažodį tvarkytojo „komanda nerasta“ argumentuose.

Sėkmingai atakai reikia nustatyti „meg“ režimą į „y“, kuris yra nustatytas pagal numatytuosius nustatymus „Ubuntu“, „Debian“ ir „CentOS/RHEL“. Ataka buvo parodyta Ubuntu 22.04 pagal numatytąją konfigūraciją naudojant gnome terminalą. Debian'e ataka yra sudėtinga, nes paskirstyme pagal numatytuosius nustatymus neįjungta „komandos nerasta“ tvarkyklė, o „CentOS/RHEL“ ataka neveiks, nes sienos programa įdiegta be „setgid“ vėliavėlės ir neturi prieigos prie kitų žmonių terminalų. Naudojant Windows terminalą, ataką galima modifikuoti, kad būtų pakeistas mainų srities turinys.

Pažeidžiamumas util-linux pakete buvo nuo 2013 m., kai 2.24 leidimas pridėjo galimybę nurodyti pranešimą sienos komandų eilutėje, bet pamiršo išvalyti pabėgimo sekas. Pažeidžiamumo pataisymas įtrauktas į vakarykštę util-linux 2.40 versiją. Pažymėtina, kad bandant ištaisyti util-linux 2.39 leidimo pažeidžiamumą, buvo nustatytas kitas panašus pažeidžiamumas, leidžiantis pakeisti valdymo simbolius manipuliuojant lokalėmis.

Šaltinis: opennet.ru

Добавить комментарий