The OpenNET Project / Index page

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

Уязвимость в системе инициализации finit, позволяющая войти в систему без пароля

01.05.2025 10:31

В системе инициализации finit выявлена уязвимость (CVE-2025-29906), позволяющая войти в систему под любым пользователем без проверки пароля. Эксплуатация уязвимости осуществляется через манипуляцию с приглашением входа (login) и требует наличия доступа к консоли. Уязвимость проявляется начиная с версии 3.0 (октябрь 2017 года) и устранена в выпуске finit 4.11. Следом уже сформирован выпуск 4.12 в котором устранено переполнение буфера в плагине urandom, которое не отмечено как уязвимость.

Уязвимость затрагивает реализацию программы getty, выводящей приглашение входа в терминале и запускающей процесс /bin/login для аутентификации пользователя. Уязвимость вызвана отсутствием разделения аргументов командой строки при запуске /bin/login, что позволяло указать опцию "-f" в имени пользователя, отключающую проверку пароля (например, можно ввести "-f root" вместо "root"). Проблема решена через добавление аргумента "--" перед полем с именем пользователя:


   - execl(_PATH_LOGIN, _PATH_LOGIN, "-p", name, NULL);
   + execl(_PATH_LOGIN, _PATH_LOGIN, "-p", "--", name, NULL);

В качестве обходного пути для блокирования уязвимости рекомендуется использовать в finit внешнюю реализацию процесса getty, например, аgetty. В дистрибутивах Debian 12, Ubuntu, Parrot, Raspbian и Trisquel пакеты с finit пока остаются без исправления уязвимости.

Cистема инициализации Finit (Fast init) развивается в качестве простой альтернативы SysV init и systemd и получила распространение на встраиваемых системах. Проект основан на технологиях системы инициализации fastinit, используемой в Linux-прошивке нетбуков EeePC и примечательной очень быстрым процессом загрузки. Finit поддерживает уровни выполнения (runlevel) в стиле SysV init, автоматический перезапуск сервиса в случае сбоя, выполнение одноразовых обработчиков, запуск сервисов с учётом зависимостей и произвольных условий, прикрепление дополнительных обработчиков для запуска до или после выполнения сервиса, расширение функциональности через плагины, настройку ограничений через Cgroups v2.

  1. Главная ссылка к новости (https://github.com/troglobit/f...)
  2. OpenNews: Доступна система инициализации Finit 4.0
  3. OpenNews: Уязвимость в патчах Red Hat к загрузчику GRUB2, позволяющая обойти проверку пароля
  4. OpenNews: Обход шифрования диска в Linux через непрерывное нажатие клавиши Enter
  5. OpenNews: Уязвимость в systemd, потенциально позволяющая повысить свои привилегии
  6. OpenNews: Уязвимость в systemd-coredump, позволяющая определить содержимое памяти suid-программ
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63171-finit
Ключевые слова: finit
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (34) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:40, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +48 +/
    Узнал о системе инициализации из новости.
     
     
  • 2.5, Аноним (5), 11:01, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Уязвимость проявляется начиная с версии 3.0 (октябрь 2017 года) и устранена в выпуске finit 4.11.

    Нужно больше систем инициализации.

     
     
  • 3.20, Аноним (20), 13:57, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Уже есть upstart.
     
     
  • 4.55, Аноним (55), 06:11, 04/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    он ещё есть?
     
     
  • 5.58, Аноним (58), 23:13, 06/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    В хромоси, ЕМНИП.
     

  • 1.2, Аноним (2), 10:42, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Это всё из-за того, что авторы этого finit решили изобретать велик, вместо того, чтобы пользоваться продуктом Лёни!
     
     
  • 2.6, МИСАКА (?), 11:11, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Без шуток, так и есть
    У челов 8 лет была критическая дыра
     
  • 2.7, АнонимЯ (?), 11:12, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это к тому, до чего людей довели.
     
  • 2.15, Аноним (15), 12:16, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    В продкхте Лёни багов нет - not a bug!
     
  • 2.31, Котик Биба (?), 18:31, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Без шуток, жду от Лёньки kerneld, разработкой которого не будет рулить главный програаммистский гитлер.
     
     
  • 3.37, Ося Бендер (?), 20:20, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну так будет рулить Балмер, фюрер из микрософта. Не на много лучше.
     
     
  • 4.57, 1 (??), 09:32, 05/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Экий ты старый ... Небось ещё "developers, developers, developers" помнишь :-D
    Там уже индусы рулят.
     
  • 3.56, EULA (?), 06:05, 05/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Уже есть:
    Microsoft Windows 11
     

  • 1.3, Аноним (3), 10:42, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    finita la comedia
     
  • 1.8, Аноним (8), 11:26, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    А откуда автору было знать об этом косяке функции execl?
    Вот читает человек документацию. Вот он передаёт список аргументов. Каждый аргумент отдельным параметром. Но почему-то аргументы парсятся и разбиваются про пробелу. Передал 3 аргумента, а пришло 4.
    https://ru.manpages.org/execl/3
    Если это деление по пробелу происходит не в самой функции execl а где-то дальше, то эта функция должна была как-то экранировать аргументы, в кавычки там оборачивать или ещё как.
    Это уже не первая такая уязвимость из-за такого поведения execl.
     
     
  • 2.9, Аноним (9), 11:45, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    execl не должна разбивать аргументы по пробелу, вы придумываете. Это больше похоже косяк самой команды login, которая разбила уже переданный ей argv дополнительно по пробелам.

    В любом случае, экранирование через "--" должно быть дефолтным поведением, поскольку всем нравится поведение getopt когда можно флаги склеивать друг за другом и флаги, принимающие аргументы, можно прописать в одной строчке с самим флагом (слитно или экранировав пробел от шелла, чтобы сам пробел передать как байт аргумента).

     
     
  • 3.17, Аноним (17), 13:09, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это больше похоже косяк самой команды login

    shadow-utils/login проверяет, чтобы "-f" был отдельным аргуметом. То есть не позволит передать "-f user" или "-fuser" как один агрумент.

    # login "-f user"
    Usage: login [-p] [name]
           login [-p] [-h host] [-f name]

    # login "-fuser"
    Usage: login [-p] [name]
           login [-p] [-h host] [-f name]

    Интересно какая реализация login используется в уязвимой системе

     
     
  • 4.21, Аноним (17), 14:19, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    https://github.com/shadow-maint/shadow/blob/master/src/login.c#L270

    if (argv[arg][0] == '-' && strlen (argv[arg]) > 2) {
    usage ();
    }

     
     
  • 5.49, Аноним (9), 12:05, 02/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ниже в секции getopt флаг '-f' обрабатывается без аргумента, просто булин 0 или 1. В мэйне этот флаг используется для обхода проверки пароля. Хоть и странно выглядит, пока ещё не понятно, как туда попадает юзер.
     
  • 3.27, Аноним (17), 16:40, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Это больше похоже косяк самой команды login

    Косяк есть "busybox login". Принимает -fuser и "-f user"

     
     
  • 4.38, fidoman (ok), 20:43, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    что собственно сочетается с "получила распространение на встраиваемых системах"
     
  • 4.59, ABATAPA (ok), 08:33, 08/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    busybox  1.36.1-r2 не принимает.
     

  • 1.11, penetrator (?), 11:52, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    феерично, какой скор? 10 из 10?
     
     
  • 2.26, User (??), 16:34, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Жалкие эпигоны! Груб со своим press enter 28 times делал это еще когда...
    Вот сколько там было - столько и тут.
     
  • 2.42, Аноним (42), 21:53, 01/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну это даже как бы и не дыра, а такой секретный набор клавиш как в старых играх. Набрал секретный логин и вошёл. Для дебагинга пригодится или если пароль забыл
     

  • 1.25, Аноним (-), 14:51, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто знает какие дистры используют сабж по умолчанию. Прям заинтригован я.
     
  • 1.29, Аноним (29), 17:56, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    АПИ передачи аргументов тот ещё костыль, так и хочется стрельнуть себе в ногу.
     
  • 1.32, Аноним (32), 18:32, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    "-f root" красивое
     

  • 1.35, Аноним (35), 19:46, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Уязвимость в системе инициализации finit,
    > позволяющая войти в систему без пароля

    Финита, мля, комедия. Кто вообще додумался так инит обозвать? Это вообще - OS shutdown manager с таким названием.

     
  • 1.40, Аноним (42), 21:49, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В принципе любопытно, что это же круто что эту сложную и не очевидную дыру нашли и проченили. Когда дыры находят и чинят это как раз хорошо
     
  • 1.44, ИмяХ (ok), 22:28, 01/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >>Уязвимость проявляется начиная с версии 3.0 (октябрь 2017 года)

    Бекдор успешно проработал более 7 лет

     
     
  • 2.48, Аноним (-), 06:12, 02/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В каком дистрибутиве finit установлен по умолчанию? Вот-вот ни в каком. Так что бэкдору не где работать.
     

  • 1.53, Аноним (53), 15:25, 03/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Так, а где баг-то? Это фича.
    Быстрая инициализация должна позволять быстро войти, а не тратить время на выводы этих всяких паролей.
     

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



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

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