Почему при создании приложения SUID не создается дамп ядра?

Я настраиваю свою среду для создания основного дампа всего, что сбой, однако, когда я запускаю программу с SUID, установленную другим пользователем, чем исполняющий пользователь, он не создает дамп ядра. Любая идея, почему это может быть? Я не мог найти его нигде в Интернете, я думаю, что это своего рода функция безопасности, но я бы хотел, чтобы она была отключена …

Проблема:

$ cd /tmp $ cat /etc/security/limits.conf | grep core * - core unlimited root - core unlimited $ ls -l ohai -rwsr-sr-x 1 root root 578988 2011-06-23 23:29 ohai $ ./ohai ... Floating point exception $ sudo -i # ./ohai ... Floating point exception (core dumped) # chmod -s ohai # exit $ ./ohai ... Floating point exception (core dumped) 

Изменить: чтобы он работал как можно более безопасным, теперь у меня есть следующий скрипт для настройки среды:

 mkdir -p /var/coredumps/ chown root:adm /var/coredumps/ chmod 772 /var/coredumps/ echo "kernel.core_pattern = /var/coredumps/core.%u.%e.%p" >> /etc/sysctrl.conf echo "fs.suid_dumpable = 2" >> /etc/sysctl.conf echo -e "*\t-\tcore\tunlimited" >> /etc/security/limits.conf echo -e "root\t-\tcore\tunlimited" >> /etc/security/limits.conf 

Теперь все, что осталось сделать, это добавить ACL в / var / coredumps, чтобы пользователи могли добавлять файлы и не изменять и не читать их снова. Единственным уменьшением является то, что у меня все еще будет проблема с chroot'ed приложениями, которые нуждаются в bind mount или что-то в этом роде.

  • Скрытие зашифрованной папки в общей системе без доступа root (unshare -m)
  • Как проверить подлинность `getty` на linux?
  • Может ли кто-нибудь привести пример, почему я хотел бы вызвать панику ядра с помощью auditd?
  • Как обрабатывать агрессивные HTTP-запросы с одного и того же IP-адреса?
  • Как ограничить некоторые команды для администратора в Linux (CentOS)
  • Не удается подключиться к ssh-серверу
  • «WannaCry» в системах Linux: как вы себя защищаете?
  • Истинный HTTPS? Как?
  • 3 Solutions collect form web for “Почему при создании приложения SUID не создается дамп ядра?”

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

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

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

    • Включите стандартные дампы setuid, установив fs.suid_dumpable sysctl на 2, например, с помощью echo 2 >/proc/sys/fs/suid_dumpable . (Примечание: 2, а не 1; 1 означает «Я отлаживаю систему в целом и хочу удалить всю безопасность».)
    • Вызвать prctl(PR_SET_DUMPABLE, 1) из программы.

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

    Из приведенного выше примера видно, что вы можете получить дамп ядра при работе от имени root или если вы удалите эскалацию привилегий.

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

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

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

     sudo id Segmentation fault 

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

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

    Если debuginfo установлен, выдается хороший backtrace.

    Interesting Posts

    Ошибка FreeBSD: spdylay build

    Как совместить содержимое двух файлов с одинаковым значением в столбце?

    Как настроить `sudo yum install …` инструкции по установке пакетов под `$ HOME / .hostdir` без привилегий суперпользователя?

    Выбор формата файла / home между NTFS и Ext4, Понимание торговых выходов в производительности и обмен данными с WinXP в режиме двойной загрузки

    Печать Линия соответствия и n-я строка из согласованной строки

    Как использовать команду setarch uname в сценарии оболочки

    Найти файлы старше x времени в определенном каталоге с игнорированием подкаталогов

    Принтер на малине (архитектура ARMv7)

    Создание keytab для пользователя Active Directory?

    «Ключи GPG, перечисленные для репозитория« atomicrocketturtle.com », уже установлены, но они неверны для этого пакета».

    cron – готовая к производству альтернатива

    управление питанием жестких дисков с USB-накопителем

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

    Получение 3G-модема, подключенного автоматически на встроенном Debian 8

    Почему бы не символическая ссылка на символическую ссылку?

    Linux и Unix - лучшая ОС в мире.