Каким образом никакой дамп ядра не, создают, когда приложение SUID установило?

Завися, который ps управляйте, чтобы Вы использовали, я использую

ps -auxw
16
24.06.2011, 02:00
3 ответа

Память setuid программы могла бы (быть вероятным, даже) содержат конфиденциальные данные. Таким образом, дамп ядра должен был бы быть читаемым корнем только.

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

Linux отключает дампы ядра для setxid программ. Чтобы включить им, необходимо сделать, по крайней мере, следующее (я не проверил, что это достаточно):

  • Включите setuid дампы ядра в целом путем установки fs.suid_dumpable sysctl к 2, например, с echo 2 >/proc/sys/fs/suid_dumpable. (Примечание: 2, не 1; 1 означает, что “я отлаживаю систему в целом и хочу удалить всю безопасность”.)
  • Звонить prctl(PR_SET_DUMPABLE, 1) из программы.
21
27.01.2020, 19:48
  • 1
    , Вы - теперь мой персональный герой! –  DipSwitch 24.06.2011, 01:51
  • 2
    @DipSwitch, это не что документация для fs.suid_dumpable говорит. Можно ли попытаться установить fs.suid_dumpable без вызова pctrl в программе? Возможно, я неправильно понимаю документацию, и Вы действительно получаете ядро, но принадлежавший корню в этом случае. А-ч –  Gilles 'SO- stop being evil' 24.06.2011, 02:19
  • 3
    гадит мое плохое... файл принадлежит корню, но %u (uid) в core_pattern дурачил меня на первый взгляд. –  DipSwitch 24.06.2011, 02:33
  • 4
    Это решение также, кажется, относится к программам, запущенным под "sudo-s", по крайней мере, для ядра 2.6.27. –  Seth Noble 03.11.2015, 18:25

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

От Вашего примера выше, кажется, что Вы можете получить дамп ядра при выполнении как корень или если Вы удаляете расширение полномочий.

В то время как могло бы быть удобно (для разработчиков только, мне кажется) иметь легкий доступ к coredump из setuid программы, это - дыра в системе безопасности и должно быть оставлено на месте.

7
27.01.2020, 19:48
  • 1
    я боялся Вы, где, собираясь говорить что-то как этот сэр :( –  DipSwitch 24.06.2011, 01:47

Я решил, что я также поделюсь своим вариантом использования, пока не забуду его. Это может быть полезно и для будущего меня, так как я решал ту же проблему несколько месяцев назад, и мне потребовалось слишком много времени, чтобы выяснить это еще раз. ОК. на самом деле это не дамп ядра, а трассировка стека, которая тоже полезна.

Проблема: Понятия не имею, что там происходит:

sudo id
Segmentation fault

Решение: Перенести бит suid из sudo в valgrind работает нормально:

chmod +s /usr/bin/valgrind
chmod -s /usr/bin/sudo
valgrind /usr/bin/sudo id

Если установлен debuginfo, хорошая обратная трассировка выписан.

0
27.01.2020, 19:48

Теги

Похожие вопросы