The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в libinput, приводящая к выполнению кода при подключении вредоносного устройства

20.04.2022 13:37

В библиотеке libinput 1.20.1, предоставляющей унифицированный стек ввода, позволяющий использовать одни и те же средства обработки событий от устройств ввода в окружениях на базе Wayland и X.Org, устранена уязвимость (CVE-2022-1215), позволяющая организовать выполнение своего кода при подключении к системе специально модифицированного/эмулируемого устройства ввода. Проблема проявляется в окружениях на базе X.Org и Wayland, и может быть эксплуатирована как при локальном подключении устройств, так и при манипуляциях с устройствами с интерфейсом Bluetooth. В случае выполнения X-сервера с правами root уязвимость позволяет добиться выполнения кода с повышенными привилегиями.

Проблема вызвана ошибкой форматирования строки в коде, отвечающем за вывод в лог информации о подключении устройства. В частности, функция evdev_log_msg при помощи вызова snprintf изменяла исходную строку форматирования записи для лога, в которую в качестве префикса добавлялось имя устройства. Далее изменённая строка передавалась в функцию log_msg_va, которая в свою очередь использовала функцию printf. Таким образом, в первом аргументе printf, к которому применяется разбор символов форматирования, оказывались непроверенные внешние данные и атакующий мог инициировать повреждение стека, организовав возвращение устройством имени, содержащем символы форматирования строки (например, "Evil %s").

  1. Главная ссылка к новости (https://www.mail-archive.com/x...)
  2. OpenNews: Уязвимости в X.Org Server
  3. OpenNews: Доступен X.Org Server 21.1
  4. OpenNews: Обновление X.Org Server 1.20.11 с устранением уязвимости
  5. OpenNews: Релиз Libinput 1.0, унифицированного стека для работы с устройствами ввода
  6. OpenNews: Релиз Libinput 1.4 с реализацией всех запланированных функций
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/57053-libinput
Ключевые слова: libinput, xorg
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (50) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Анонн (?), 14:00, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Какая прелесть. Прям классика. Даже комментировать нечего.
     
     
  • 2.5, Аноним (5), 14:10, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +9 +/
    > Какая прелесть

    Бро, держи краба!

     
     
  • 3.11, Аноним (11), 15:45, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Я бы сказал cRustoceanа.
     
     
  • 4.46, Аноним (46), 01:51, 22/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хрустомания в соседней новости.
     
  • 2.14, Аноним (14), 16:20, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +7 +/
    сенсация века. аноним уходит с опеннета, потому что нечего больше комментировать. все комментарии уже написаны. а некоторые и не один раз. а некоторые и не 100. знай, подставляй в случайном порядке, а всё это можно сделать и без анонима.
     
  • 2.40, uis (ok), 13:06, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    -fstack-protector
     
     
  • 3.41, Анонн (?), 13:23, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Это конечно хорошо, но оно "лечит" только последствия, а не первопричину.
    И по какой-то странной причине его не включают по умолчанию.
     
     
  • 4.47, Аноним (46), 01:52, 22/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Приличные дистры уже много лет как включают вообще-то.
     
     
  • 5.50, Michael Shigorin (ok), 21:24, 22/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вспомнилось: http://lists.altlinux.org/pipermail/devel/2010-June/182660.html
     
  • 4.54, uis (ok), 09:07, 27/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Настоящие решения:
    1) printf("%s", strintg)
    2) fwrite(string, strlen(string), 1, stdout)
     

  • 1.4, Аноним (5), 14:10, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > в окружениях на базе Wayland ... выполнение своего кода при подключении ... специально модифицированного/эмулируемого устройства ввода

    Какая прелесть! А что ещё припасено в шкафу у этой команды вайленда? Для иксовых программ эта либа не нужна.

     
     
  • 2.6, Аноним (6), 14:20, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Для иксовых программ эта либа не нужна

    нужна

     
     
  • 3.7, Аноним (5), 14:30, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    У меня иксы есть, а какой-то libinput - отродясь не было и нет.
     
     
  • 4.8, Аноним (8), 15:12, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    С тех пор, как kbd/mouse депрекейтнули, вариантов не много. Evdev дрянь.
     
     
  • 5.13, Аноним (13), 15:54, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    kbd/mouse тоже от чего-то подобного не застрахованы.
     
     
  • 6.25, nvidiaamd (?), 21:08, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Но до сих пор работают и там этого нет. А почему? А потому что ваши вяленые ручки туда не добрались, и это хорошо.
     
  • 6.30, Аноним (8), 00:13, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > kbd/mouse тоже от чего-то подобного не застрахованы.

    Они меньше и проще, им не нужно уметь всё на свете и они прекрасно справляются со всеми своими обязанностями. Скорее всего, там нет такой ерунды с идентификаторами (которые могут быть вообще любой дичью). Но, не модно, да.

     
     
  • 7.42, Аноним (42), 13:45, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да, XKBD так хорош, что у нас до сих пор работа горячих клавиш зависит от текущей раскладки клавиатуры и от порядка в котором эти самые раскладки указаны в конфиге
     
     
  • 8.43, Аноним (8), 21:55, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Так это к каждой отдельной программе вопросы ... текст свёрнут, показать
     
  • 5.32, Аноним (32), 01:51, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Evdev дрянь

    Поясни.

     
     
  • 6.44, Аноним (8), 22:05, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Что пояснить? Ему 20+ лет, а баги до сих пор лезут, едва ли не больше чем с libinput, который сравнительно неплох (баги тоже бывают правда, не хотят исправлять наверно).
     
     
  • 7.45, Аноним (45), 22:52, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Я в генте использую evdev, багов не замечал. Какие конкретно баги у тебя были?
     
     
  • 8.48, Аноним (8), 10:31, 22/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Глюки мышки и что-то с хоткеями Ещё с геймпадом из-за этого evdev постоянно сра... текст свёрнут, показать
     
  • 4.33, Аноним (6), 04:00, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    у меня иксы есть, а какой-то libinput - всегда есть. при его удалении сносится пол системы, включая, например, qt5/qt6 (давай, как баран, зацепись за пример с qt и только на эту часть отвечай)
     
     
  • 5.34, Аноним (6), 04:01, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • –1 +/
    отвечать про qt желательно в духе "не нужно, кокoко, qt плохой"
     
     
  • 6.52, Аноним (5), 03:09, 25/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    тебе надо поменьше самому с собой разговаривать.
     

  • 1.9, test (??), 15:19, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    У меня xorg под юзером
     
     
  • 2.38, crypt (ok), 11:38, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    это только в OpenBSD по-моему.
     
     
  • 3.51, whoami (??), 05:46, 24/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Отрицательно. Arch Linux, после логина ввожу startx (имеется предварительно сконфигуреный .xinitrc), все замечательно.
     
  • 3.55, Аноним (55), 12:02, 28/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    GDM стартует Xorg под пользователем, по-умолчанию.
     

  • 1.10, ip1982 (ok), 15:25, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    При подключении вредоносного человека к клавиатуре :)
     
  • 1.12, Аноним (11), 15:50, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Справедливости ради - при подключении вредоносного устройства ввода можно эмулировать этот самый ввод и через ввод команд сделать что нужно. Для исполнения sh-скрипта, ищущего на компе SSH-ключи и криптовалюные кошельки права рута не требуются.

    Кто хочет защититься - тот использует https://packages.ubuntu.com/jammy/usbauth .

     
     
  • 2.15, Анонн (?), 17:01, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    М... так там написано, что уязвимость и по блютус тоже работает. Как тут usbauth поможет?
     
     
  • 3.23, Аноним (23), 20:36, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Очевидно, не подключать через блютуз.
     
     
  • 4.35, Аноним (5), 07:11, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    и комп из розетки выдернуть.
     
  • 2.17, Аноним (17), 17:10, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > при подключении вредоносного устройства ввода можно эмулировать этот самый ввод и через ввод команд сделать что нужно

    Даже готовые продукты были на рынке прд это дело, с виду флешка, а в ней кроме накопителя минимальный обвес для стимуляции ввода. Закидываешь скрипт.txt, подключаешь и готово. Я так пару десятков биосов как-то раз настраивал, когда Dell облажался и прислал ненастроенные серваки.

    Но так-то при наличии физического доступа к машине можно много чего сделать. А при физическом доступе к владельцу и подавно. Пальцы в дверь и через минуту хруста все пароли расхэшируются сами собой как по волшебству.

     
     
  • 3.21, Аноним (11), 19:51, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Я так пару десятков биосов как-то раз настраивал, когда Dell облажался и прислал ненастроенные серваки.

    Наверное легче было вручную настроить, чем скрипт отладить?

     
     
  • 4.27, systemdnoname (?), 21:55, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    когда у тебя сотни физических серверов - не легче. ВСегда делаю скрипты на что-то больше 0. рекомендую.
     
  • 3.31, Аноним (31), 00:32, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > обвес для стимуляции ввода

    Током било и в таком духе?

     
  • 3.56, Аноним (55), 12:05, 28/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Можно usbguard'ом порезать устройства ввода выдающие себя за накопители.
     

  • 1.16, Анонн (?), 17:07, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А вообще забавно.
    "Уязвимости в swhkd", которой пользуются полторы калеки из суси попала в "Главные новости"
    А эта "Уязвимость в libinput" которая есть ну дофига где, в "мини-новости".

    Неужели безопасность всех пользователей libinput не достойна "Главной новости"?))

     
     
  • 2.18, Аноним (18), 17:56, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ну так разжечь то надо. Там руст-хруст, а, следовательно, 100500 комментариев. А тут священная сишечка, да еще и няшный ксорг. Идеологически нельзя допускать даже мысли что первое не так важно как второе.
     
     
  • 3.20, Аноним (20), 19:28, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Суть в том что мегазащищенные хруст с гейландом ничем не лучше сишечки и иксов. Даже хуже, потому как первые не декларируются как "более лучшая замена" вторых, по факту таковыми не являющиеся.
     

  • 1.28, Аноним (28), 22:04, 20/04/2022 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Не поленитесь, сходите посмотреть на "исправление". Это ржака:

    > Return a copy of str with all % converted to %% to make the string

    * acceptable as printf format.

    Костыли для языка-инвалида из 70-х.

     
     
  • 2.29, Аноним (29), 22:49, 20/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Мда... Это просто facepalm какой-то...

    Для ленивых вот коммит https://gitlab.freedesktop.org/libinput/libinput/-/commit/2a8b8fde90d63d48ce09 функция str_sanitize

     
     
  • 3.36, Аноним (36), 10:53, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    https://gitlab.freedesktop.org/libinput/libinput/-/commit/2a8b8fde90d63d48ce09

    FF запятую в адрес суёт.

     
     
  • 4.37, Аноним (37), 11:25, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    > FF запятую в адрес суёт.

    curl тоже, не говоря о links, и даже chromium

     
  • 2.39, uis (ok), 12:57, 21/04/2022 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Костыли для языка-инвалида из 70-х.

    Скорее просто костыли инвалида.
    Во всех мануалах им пишут "не суй непроверенные данные в формат", а они суют и суют.
    Настоящие решения:
    1) printf("%s", strintg)
    2) fwrite(string, strlen(string), 1, stdout)

     
     
  • 3.49, Аноним (-), 16:00, 22/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Настоящее решение собрать все данные в структуру, которую затем вывести одним printf'ом. То есть сначала собрать, а потом вывести, а не по мере получения данных дописывать строку.
     
     
  • 4.53, uis (ok), 09:04, 27/04/2022 [^] [^^] [^^^] [ответить]  
  • +/
    Сголасен, так лучше. Я это как пример приводил, а то ходят тут непорикаянные джависты^W растоманы
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру