LINUX.ORG.RU

Как отучить KeepassX читать /etc/passwd? Вернее, как запретить подгрузку libnss?

 , ,


0

1

Привет. Заметил, что keepassx читает /etc/passwd.

Точнее, не он, а одна so-шка.

/lib64/libc.so.6 динамически грузит libnss_compat.so, /lib64/libnss_files.so, /lib64/libnss_nis.so.

Выхлоп LD_DEBUG=files

32684:     file=libnss_compat.so.2 [0];  dynamically loaded by /lib64/libc.so.6 [0]
[...]
32684:     file=libnss_nis.so.2 [0];  dynamically loaded by /lib64/libc.so.6 [0]

Очень похоже, что одна из libnss* читает /etc/passwd. Во всяком случае, в инете много информации о том, что для работы libnss* нужны права на чтение /etc/passwd.

Зачем вообще понадобилось грузить libnss*?

Как отучить KeepassX их грузить?



Последнее исправление: Klymedy (всего исправлений: 3)

Спасибо, gh0stwizard и CrazyAlex25, но вы показываете, как бороться с последствиями. Это я и сам знаю, так как обнаружил вышеуказанное поведение при настройке Grsecurity.

Меня же интересует борьба с причинами, и я хочу понять, почему так происходит, почему загружается библиотека, которая необходима для сетевой части, отсутствующей в keepassx.

anonymous9
() автор топика
Ответ на: комментарий от anonymous9

почему так происходит

Берешь исходники, грепаешь на наличие nss.h. Либо пиши на stackoverflow, тут врядли кто ответит (серьезно).

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)

подозреваю libnss зачем-то qt подключает.

crowbar
()

И вообще в чем проблема? passwd наверное не просто так с правами для чтения.

crowbar
()

KeepassX, или Qt, или любая другая либа просто хочет преобразовать UID в строковое представление (см. getpwuid()), или что-то вроде этого.

А какие с этим проблемы? В /etc/passwd всё равно никакой секретной информации не содержится.

Deleted
()
Ответ на: комментарий от Deleted

В /etc/passwd всё равно никакой секретной информации не содержится.

4.2

Зависит от настроек. В /etc/shadow хэши паролей не обязаны храниться.

gh0stwizard ★★★★★
()
Ответ на: комментарий от Deleted

1. Там могут быть пассы, если не юзается shadow

2. Список всех учёток не является сам по себе компроментирующей информацией, но может дать злоумышленнику полезные зацепки и конкретизировать вектор атаки.

3. Не вижу разумных причин лезть KeepassX в /etc/passwd, что важно для составления политики безопасности для KeepassX, где запрещено всё, что не разрешено явно.

anonymous9
() автор топика
Ответ на: комментарий от gh0stwizard

Спасибо, сейчас займусь поиском include.

Да, надо бы ещё на один из ресурсов stackoverflow закинуть вопрос, хорошая идея.

anonymous9
() автор топика
Ответ на: комментарий от anonymous9

1. Там могут быть пассы, если не юзается shadow

А какой профит от отказа от shadow? А с учётом того, что ты наоборот настраиваешь параноидальную защиту, то shadow наоборот обязателен.

3. Не вижу разумных причин лезть KeepassX в /etc/passwd, что важно для составления политики безопасности для KeepassX, где запрещено всё, что не разрешено явно.

Что плохого в том, что он хочет узнать имя пользователя по UID? Это может быть зачем угодно. Хоть для показа окошка «Привет, $UserName!». /etc/passwd может пригодится вполне безобидным приложениям (тому же файловому менеджеру, чтобы показать владельца файла). Собственно поэтому пароли и нужно хранить в shadow.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

А какой профит от отказа от shadow?

Нету профита.

А с учётом того, что ты наоборот настраиваешь параноидальную защиту, то shadow наоборот обязателен.

Я составляю политику. Я не знаю настроек целевой системы.

Это может быть зачем угодно.

Хмм... это может быть нужно QtCore, которая дергает функцию libc, чтобы узнать домашний каталог, например... Надо почитать сорцы QtCore.

Спасибо за пинок в нужном направлении.

Если окажется, что без /etc/passwd никак, то так и быть.

anonymous9
() автор топика
Ответ на: комментарий от anonymous9

Странно... QtCore лишь дергает getenv из stdlib, а getenv лишь читает данные адресного пространства процесса, куда они заносятся в момет exec(), т.е., в рантайме нет смысла getenv лезть в /etc/passwd.

anonymous9
() автор топика
Ответ на: комментарий от gh0stwizard

4.2

Зависит от настроек. В /etc/shadow хэши паролей не обязаны храниться.

Согласен. Но те, у кого хранятся хеши паролей в /etc/passwd в 2014-ом году - ССЗБ.

Deleted
()
Ответ на: комментарий от anonymous9

1. Там могут быть пассы, если не юзается shadow

ССЗБ =).

2. $SOMETHING не является сам по себе компроментирующей информацией, но может дать злоумышленнику полезные зацепки и конкретизировать вектор атаки.

Так можно сказать вообще про что угодно. Возможности по улучшению безопасности обычно не имеют предела.

3. Не вижу разумных причин лезть KeepassX в /etc/passwd, что важно для составления политики безопасности для KeepassX, где запрещено всё, что не разрешено явно.

Рассматривай keepassx как кучу разных слабо связанных между собой компонент, одна из которых может хотеть NSS.

И вообще, что тебе мешает поставить бряк на dlopen() и посмотреть стектрейс?

Deleted
()

Вернее, как запретить подгрузку libnss?

Надо собрать все зависимости без libc.

Зачем вообще понадобилось грузить libnss*?

Иксы и qt требует, вестимо. Иксы не живут без сетевой составляющей.

Как отучить KeepassX читать /etc/passwd?

Убрать files из nsswitch.conf и наслаждаться новыми багами.

/etc/passwd

Там ничего секретного нет. Если параноя, то юзернейм поменяй на «user».

shahid ★★★★★
()
Ответ на: комментарий от anonymous9

Там могут быть пассы, если не юзается shadow

какого х*** они там могут быть, если тебя так беспокоит безопасность?

anonymous
()
Ответ на: комментарий от anonymous9

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

anonymous
()
Ответ на: комментарий от anonymous9

Вопрос в том, зачем ему вообще nss?

getpwent на предмет домашнего каталога. Учи матчасть.

no-dashi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.