Paměť setuid programu může (pravděpodobně dokonce bude) obsahovat důvěrná data. Takže výpis jádra by musel být čitelný pouze pro uživatele root.
Pokud je výpis jádra vlastněn rootem, nevidím zjevnou bezpečnostní díru, i když by si jádro muselo dávat pozor, aby nepřepsalo existující soubor.
Linux deaktivuje výpisy jádra pro programy setxid. Chcete-li je povolit, musíte provést alespoň následující (nekontroloval jsem, zda je to dostatečné):
- Obecně povolte výpisy jádra setuid nastavením
fs.suid_dumpable
sysctl na 2, např. secho 2 >/proc/sys/fs/suid_dumpable
. (Poznámka:2, nikoli 1; 1 znamená „Ladim systém jako celek a chci odstranit veškeré zabezpečení“.) - Zavolejte na číslo
prctl(PR_SET_DUMPABLE, 1)
z programu.
Výpis jádra obsahuje kopii všeho, co bylo v paměti v době poruchy. Pokud program běží suid, znamená to, že potřebuje přístup k něčemu, k čemu vy jako uživatel nemáte přístup. Pokud program získá tyto informace a poté vypíše jádro, budete moci tyto privilegované informace přečíst.
Z vašeho příkladu výše se zdá, že můžete získat výpis jádra, když běžíte jako root nebo když odeberete eskalace oprávnění.
I když může být užitečné (pouze pro vývojáře) mít snadný přístup k Coredumpu z programu setuid, je to bezpečnostní díra a měla by být ponechána na místě.