Bug 53501 - Черный экран с курсором мыши
Summary: Черный экран с курсором мыши
Status: REOPENED
Alias: None
Product: Sisyphus
Classification: Development
Component: pam_pkcs11 (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: manowar@altlinux.org
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-03-18 08:30 MSK by Starodumoff Ilya
Modified: 2025-04-03 23:11 MSK (History)
5 users (show)

See Also:


Attachments
inxi -F (2.58 KB, text/plain)
2025-03-18 09:59 MSK, Starodumoff Ilya
no flags Details
$ pamtester kde-smartcard test authenticate (6.88 KB, text/plain)
2025-04-03 18:43 MSK, Vladislav Glinkin
no flags Details
Окно блокировки (272.48 KB, image/png)
2025-04-03 18:43 MSK, Vladislav Glinkin
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Starodumoff Ilya 2025-03-18 08:30:11 MSK
Блокировка экрана работает один раз. На второй в wayland сессии видим черный экран с курсором, а в x11 сессии - остается неактивный рабочий стол и курсор. Разблокировать невозможно. Блокировка экрана нормально работала до последнего обновления в p11. nvidia (570), если что.
Comment 1 obidinog@basealt.ru 2025-03-18 09:52:45 MSK
Уточните, пожалуйста, характеристики вашего компьютера. Приложите вывод 
# inxi -F
Comment 2 Sergey V Turchin 2025-03-18 09:58:45 MSK
Какая версия пакета kscreenlocker ?
Comment 3 Starodumoff Ilya 2025-03-18 09:59:19 MSK
Created attachment 18007 [details]
inxi -F
Comment 4 Starodumoff Ilya 2025-03-18 09:59:52 MSK
(Ответ для Sergey V Turchin на комментарий #2)
> Какая версия пакета kscreenlocker ?

# rpm -q kscreenlocker
kscreenlocker-6.3.2-alt1.x86_64
Comment 5 Sergey V Turchin 2025-03-18 10:11:56 MSK
Процесс kscreenlocker не завершает работу после разблокировки, поэтому новый не может запуститься и ждёт на чёрном экране.

Это связано с обновлением пакета pam_pkcs11.
Хотя, в Sisyphus было починено в kscreenlocker-6.2.5-alt2 в файле /etc/pam.d/kde-smartcard добавлением опций wait_for_card card_only.

У вас случайно не используется pam_pkcs11?
Comment 6 Starodumoff Ilya 2025-03-18 10:14:46 MSK
(Ответ для Sergey V Turchin на комментарий #5)
> Процесс kscreenlocker не завершает работу после разблокировки, поэтому новый
> не может запуститься и ждёт на чёрном экране.
> 
> Это связано с обновлением пакета pam_pkcs11.
> Хотя, в Sisyphus было починено в kscreenlocker-6.2.5-alt2 в файле
> /etc/pam.d/kde-smartcard добавлением опций wait_for_card card_only.
> 
> У вас случайно не используется pam_pkcs11?

Содержимое /etc/pam.d/kde-smartcard:
#%PAM-1.0
auth            [success=done ignore=ignore default=die]        pam_pkcs11.so wait_for_card card_only
auth            substack        system-auth-common

account         include         system-auth-common

password        include         system-auth-common

session         include         system-auth-common

smartcard не использую
Comment 7 Starodumoff Ilya 2025-03-18 10:17:06 MSK
(Ответ для Sergey V Turchin на комментарий #5)
> Процесс kscreenlocker не завершает работу после разблокировки, поэтому новый
> не может запуститься и ждёт на чёрном экране.

Так и есть. Если после разблокировки убить /usr/libexec/kscreenlocker_greet, блокируется/разблокируется нормально.
Comment 8 obidinog@basealt.ru 2025-03-18 10:41:22 MSK
Платформа:
alt-kworkstation p11 x86_64

Пакеты:
kscreenlocker-6.3.2-alt1.x86_64
nvidia_glx_570.124.04-570.124.04-alt273.x86_64
kernel-image-6.12-6.12.17-alt1.x86_64

Стенды:
MSI MAG H670  NVIDIA GeForce GT 1030 [NVIDIA GP108] 
Gigabyte B760 DS3H RTL  NVIDIA GeForce RTX 4060 Ti [NVIDIA AD106] 

Wayland сессия не запускается из-за бага https://bugzilla.altlinux.org/52744

Проверял в X11, ошибок с неактивным рабочим столом не обнаружено, 5 из 5 раз блокировка/разблокировка проходит успешно
Comment 9 manowar@altlinux.org 2025-03-18 16:42:04 MSK
(Ответ для Starodumoff Ilya на комментарий #7)
> (Ответ для Sergey V Turchin на комментарий #5)
> > Процесс kscreenlocker не завершает работу после разблокировки, поэтому новый
> > не может запуститься и ждёт на чёрном экране.
> 
> Так и есть. Если после разблокировки убить /usr/libexec/kscreenlocker_greet,
> блокируется/разблокируется нормально.

А что происходит, если в /etc/security/pam_pkcs11/pam_pkcs11.conf, в список screen_savers добавить kde-smartcard ? Поведение меняется?
Comment 10 Starodumoff Ilya 2025-03-18 17:04:27 MSK
(Ответ для manowar@altlinux.org на комментарий #9)
> (Ответ для Starodumoff Ilya на комментарий #7)
> > (Ответ для Sergey V Turchin на комментарий #5)
> > > Процесс kscreenlocker не завершает работу после разблокировки, поэтому новый
> > > не может запуститься и ждёт на чёрном экране.
> > 
> > Так и есть. Если после разблокировки убить /usr/libexec/kscreenlocker_greet,
> > блокируется/разблокируется нормально.
> 
> А что происходит, если в /etc/security/pam_pkcs11/pam_pkcs11.conf, в список
> screen_savers добавить kde-smartcard ? Поведение меняется?

Хм...
Сначала хотел написать, что то же самое поведение. Я еще несколько часов назад поправил pam_pkcs11.conf как в https://bugzilla.altlinux.org/show_bug.cgi?id=53128#c8
Еще раз проверил, на всякий случай. Оказалось, опечатался и вместо зяпятой после xcreensaver поставил "m" :)
Проверил - теперь работает. Несколько раз блокировал/разблокировал и в wayland и в x11 сессиях.
Comment 11 manowar@altlinux.org 2025-03-19 01:17:00 MSK
Получается, что виснет внутри pam_pkcs11.so. Ну а как ему не виснуть, если он ожидает вставки смарт-карты? Получается следующая история: с той конфигурацией, с которой у вас сейчас работает, чёрный экран будет у того пользователя, который действительно захочет использовать смарт-карту. То есть, это не решение проблемы, а её обход для тех, кому pam_pkcs11.so не нужен в принципе.
Comment 12 Sergey V Turchin 2025-03-19 09:14:08 MSK
Вроде ж работает, если внести "kde-smartcard" в список screen_savers в pam_pkcs11.conf?
Кстати, ни один элемент из списка в данный момент там не соответствует KDE6.
Comment 13 Starodumoff Ilya 2025-03-19 09:40:09 MSK
Проверил - необязательно выставлять card_only и wait_for_card в true. Достаточно kde-smartcard в списке screen_savers.
Comment 14 Белая Алёна 2025-03-21 13:15:17 MSK
(Ответ для manowar@altlinux.org на комментарий #11)
> Получается, что виснет внутри pam_pkcs11.so. Ну а как ему не виснуть, если
> он ожидает вставки смарт-карты? Получается следующая история: с той
> конфигурацией, с которой у вас сейчас работает, чёрный экран будет у того
> пользователя, который действительно захочет использовать смарт-карту. То
> есть, это не решение проблемы, а её обход для тех, кому pam_pkcs11.so не
> нужен в принципе.

Так и есть, это обход проблемы за счет того, что ограничивается количество сценариев, когда появляется ошибка в pam_pkcs11 и это "ломает" блокировку, но если будет сценарий, в котором ошибка в pam_pkcs11 появится - проявится и проблема блокировщика. 
Так например, мы все еще можем получить эту ошибку, если пользователь вошел по токену, изменил используемый модуль в pam_pkcs11.conf (параметр use_pkcs11_module), перезапустил pcscd.service и дважды заблокировал экран. 
Маловероятный сценарий, который, однако, показывает, что проблема все еще есть. 

Обход работает, если в /etc/pam.d/kde-smartcard установлены параметры wait_for_card и card_only и вместе с этим kde-smartcard указан в скринсейверах в pam_pkcs11.conf. Если установлено что-то одно - ошибка продолжит проявляться. 
Работает, как мне кажется, за счет того, что отключает переход к модулю pam_pkcs11, если пользователь вошел с помощью пароля. Видимо, как раз отключение PAM_IGNORE (для исправления уязвимого поведения) привело к появлению проблемы блокировки. 
Обход ограничивает достаточно большое количество сценариев, подробнее проверки расписала в https://bugzilla.altlinux.org/show_bug.cgi?id=53128#c27

Т.к. корень проблемы все еще присутствует, переоткрываю ошибку. Если данного обхода проблемы достаточно, и исправлять некорректную реакцию блокировщика на возникновение ошибки в pam_pkcs11 не планируется, прошу сказать об этом или перевести в wontfix.
Comment 15 Белая Алёна 2025-03-21 13:18:37 MSK
Перевожу на Sisyphus, т.к. в pam_pkcs11.conf по умолчанию пока не указан kde-smartcard в скринсейверах, и проблема воспроизводится, даже если просто вставить токен и дважды заблокировать экран.
Comment 16 manowar@altlinux.org 2025-03-21 14:07:59 MSK
Алёна, спасибо за такое обширное тестирование! Однако, есть несколько комментариев.

> Видимо, как раз отключение PAM_IGNORE (для исправления уязвимого поведения) привело к появлению проблемы блокировки.

Да, смысл обхода в том, что заставляем pam_pkcs11.so возвращать PAM_IGNORE.
Думаю, понятно, что если мы по тем или иным причинам хотим задействовать pam_pkcs11.so, то PAM_IGNORE нам никак не подходит. Иными словами, данный обход равноценен простому отключению pam_pkcs11.so.

> Обход работает, если в /etc/pam.d/kde-smartcard установлены параметры wait_for_card и card_only и вместе с этим kde-smartcard указан в скринсейверах в pam_pkcs11.conf.

Однако тут есть один момент: список скринсейверов обрабатывается только, если
в окружении пользовательского сеанса установлена переменная PKC11_LOGIN_TOKEN_NAME. Для KDE это нужно проверить. Проверить следующим образом:

1. зайти в систему по токену;
2. открыть терминал и ввести команду

env | grep PKC11_LOGIN_TOKEN_NAME

Переменная должна иметь не пустое значение (обычно там имя токена).

Если окажется, что данная переменная не выставлена или пустая, то значит добавлять kde-smartcard в screen_savers нельзя. Если его туда добавить, то всегда будет возвращаться PAM_IGNORE. И разблокировать экран, используя токен, будет невозможно.

Если же PKC11_LOGIN_TOKEN_NAME в сеансе KDE присутствует (при входе в систему по токену), то в этом случае нужно проверить, есть проблема с чёрным экраном. Насколько я понял, этой проблемы нет, если pam_pkcs11.so возвращает PAM_SUCCESS (так ли это?). Значит, нужно тем или иным способом добиться того, чтобы он возвращал ошибку (к примеру, поломать токен, ну не физически, конечно).
Comment 17 Белая Алёна 2025-03-21 14:33:23 MSK
>2. открыть терминал и ввести команду
Для рутокена:
# env | grep PKC11_LOGIN_TOKEN_NAME
PKC11_LOGIN_TOKEN_NAME=Rutoken

Но на данный момент разблокировать токен, используя экран, нельзя, все время висит надпись "или используйте смарткарту", блокировщик на подключение токена никак не реагирует. 

>Если же PKC11_LOGIN_TOKEN_NAME в сеансе KDE присутствует (при входе в систему по токену), то в этом случае нужно проверить, есть проблема с чёрным экраном. Насколько я понял, этой проблемы нет, если pam_pkcs11.so возвращает PAM_SUCCESS (так ли это?). Значит, нужно тем или иным способом добиться того, чтобы он возвращал ошибку (к примеру, поломать токен, ну не физически, конечно).

Выше указала сценарий, когда "ломают" конфиг pam_pkcs11, тогда проблема с черным экраном возвращается. 
>Так например, мы все еще можем получить эту ошибку, если пользователь вошел по токену, изменил используемый модуль в pam_pkcs11.conf (параметр use_pkcs11_module), перезапустил pcscd.service и дважды заблокировал экран. 

С токеном попробовала сценарий с битым сертификатом, разблокировщик не выдал черного экрана, токен не воспринимает. Удалила ключи с токена - аналогично.
Пробовала вставить другой токен, разблокировщик опять не выдал черного экрана и токен не воспринял. 

Возможно, что несмотря на имя в переменной, kde-smartcard все равно возвращает PAM_IGNORE.
Comment 18 Sergey V Turchin 2025-03-21 15:25:44 MSK
(Ответ для Белая Алёна на комментарий #17)
> блокировщик на подключение токена никак не реагирует. 
При этом поле ввода пароля отображено?
Comment 19 manowar@altlinux.org 2025-03-21 15:38:55 MSK
(Ответ для Белая Алёна на комментарий #17)
> Возможно, что несмотря на имя в переменной, kde-smartcard все равно
> возвращает PAM_IGNORE.
Это можно проверить используя pamtester:

# pamtester kde-smartcard testuser authenticate

Дополнительно стоит в pam_pkcs11.conf включить debug.
Comment 20 Vladislav Glinkin 2025-04-03 18:42:34 MSK
(Ответ для manowar@altlinux.org на комментарий #19)
> Это можно проверить используя pamtester:
> 
> # pamtester kde-smartcard testuser authenticate
> 
> Дополнительно стоит в pam_pkcs11.conf включить debug.
Прикладываю вывод $ pamtester kde-smartcard test authenticate с включённым debug

(Ответ для zerg@altlinux.org на комментарий #18)
> При этом поле ввода пароля отображено?
Да
Comment 21 Vladislav Glinkin 2025-04-03 18:43:18 MSK
Created attachment 18147 [details]
$ pamtester kde-smartcard test authenticate
Comment 22 Vladislav Glinkin 2025-04-03 18:43:37 MSK
Created attachment 18148 [details]
Окно блокировки
Comment 23 manowar@altlinux.org 2025-04-03 23:11:00 MSK
Из лога pamtester видно, что возвращается PAM_SUCCESS. А что мы хотели этим проверить? :)