GNU/Linux >> Znalost Linux >  >> Linux

Jak to, že se nevytvoří výpis jádra, když má aplikace nastaveno SUID?

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ř. s echo 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ě.


Linux
  1. Jak změnit výchozí program „čtení“?

  2. Linux / UNIX :Jak najít soubory, které mají nastaveno SUID/SGID

  3. Jak omezit proces na jedno jádro CPU v Linuxu?

  1. Jak nastavit/vytvořit proměnné prostředí a prostředí v Linuxu

  2. Linux – Suid nemá žádný vliv na adresáře s Linuxem?

  3. Jak nastavit parametry, když Pipe Bash Script to Bash?

  1. Jak to, že každý program nebo služba má svůj vlastní účet v /etc/passwd?

  2. Jak vytvořit soubory Linux Proc v programu C pomocí LKM

  3. Jak vytvářet vlákna v Linuxu (pomocí ukázkového programu C)