Ich richte meine Umgebung so ein, dass ein Core-Dump von allem erstellt wird, was abstürzt. Wenn ich jedoch ein Programm mit SUID auf einem anderen Benutzer als dem ausführenden Benutzer ausführe, wird kein Core-Dump erstellt. Irgendeine Idee, warum das so sein könnte? Ich konnte es nirgendwo im Web finden, ich denke, es ist eine Art Sicherheitsfunktion, aber ich möchte, dass es deaktiviert wird ...
Problem:
$ 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)
Bearbeiten: Damit es so sicher wie möglich funktioniert, habe ich jetzt das folgende Skript zum Einrichten der Umgebung:
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
Jetzt müssen Sie nur noch ACL zu / var / coredumps hinzufügen, damit Benutzer nur Dateien hinzufügen und diese nie wieder ändern oder lesen können. Der einzige Nachteil ist, dass ich immer noch ein Problem mit chroot-Anwendungen habe, die so bind mount
etwas benötigen .
fs.suid_dumpable
. Kannst du das einstellen probierenfs.suid_dumpable
ohnepctrl
das Programm aufzurufen ? Vielleicht verstehe ich die Dokumentation falsch und Sie bekommen in diesem Fall einen Core, der aber im Besitz von root ist.Der Core-Dump enthält eine Kopie von allem, was sich zum Zeitpunkt des Fehlers im Speicher befand. Wenn das Programm suid ausgeführt wird, bedeutet dies, dass es Zugriff auf etwas benötigt, auf das Sie als Benutzer keinen Zugriff haben. Wenn das Programm diese Informationen erhält und den Core-Speicherauszug erstellt, können Sie diese privilegierten Informationen lesen.
Aus Ihrem obigen Beispiel geht hervor, dass Sie einen Core-Dump erhalten können, wenn Sie als Root ausgeführt werden oder wenn Sie die Rechteerweiterung entfernen.
Während es praktisch sein kann (nur für Entwickler), von einem Setuid-Programm aus einfachen Zugriff auf einen Coredump zu haben, ist es eine Sicherheitslücke und sollte an Ort und Stelle belassen werden.
quelle
Ich habe beschlossen, dass ich meinen Anwendungsfall auch freigeben werde, bis ich ihn vergesse. Es könnte auch für mich von Nutzen sein, da ich vor Monaten das gleiche Problem gelöst habe und es zu lange gedauert hat, es noch einmal herauszufinden. In Ordnung. Es ist nicht wirklich ein Core-Dump, sondern ein Stack-Trace, der ebenfalls nützlich ist.
Problem: Keine Ahnung was da los ist:
Lösung: Bewegen Sie das suid-Bit von
sudo
nachvalgrind
funktioniert einwandfrei :Wenn debuginfo installiert ist, wird nice backtrace geschrieben.
quelle
valgrind
was immer sie wollen. Tun Sie das nicht , es ist ein großes Sicherheitsrisiko.