Der Speicher eines Setuid-Programms könnte (wahrscheinlich sogar) vertrauliche Daten enthalten. Der Core Dump müsste also nur für Root lesbar sein.
Wenn der Core-Dump im Besitz von root ist, sehe ich keine offensichtliche Sicherheitslücke, obwohl der Kernel darauf achten müsste, keine vorhandene Datei zu überschreiben.
Linux deaktiviert Core-Dumps für setxid-Programme. Um sie zu aktivieren, müssen Sie mindestens Folgendes tun (ich habe nicht überprüft, ob dies ausreichend ist):
- Aktivieren Sie Setuid Core Dumps im Allgemeinen, indem Sie den
fs.suid_dumpable
setzen sysctl auf 2, z.B. mitecho 2 >/proc/sys/fs/suid_dumpable
. (Anmerkung:2, nicht 1; 1 bedeutet „Ich debugge das System als Ganzes und möchte die gesamte Sicherheit entfernen“.) - Rufen Sie
prctl(PR_SET_DUMPABLE, 1)
an aus dem Programm.
Der Core-Dump enthält eine Kopie von allem, was zum Zeitpunkt des Fehlers im Speicher war. Wenn das Programm suid ausführt, 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 dann den Kern ausgibt, können Sie diese privilegierten Informationen lesen.
Aus Ihrem obigen Beispiel geht hervor, dass Sie in der Lage sind, einen Core-Dump zu erhalten, wenn Sie als Root ausgeführt werden oder wenn Sie die Rechteausweitung entfernen.
Es mag zwar praktisch sein (meiner Meinung nach nur für Entwickler), einfachen Zugriff auf einen Coredump von einem Setuid-Programm aus zu haben, aber es ist eine Sicherheitslücke und sollte bestehen bleiben.