GNU/Linux >> Znalost Linux >  >> Linux

Zakázání vsyscalls v Linuxu

Zkuste echo 0 > /proc/sys/kernel/vsyscall64

Pokud se pokoušíte ptrace na volání gettimeofday a nezobrazují se, jaký zdroj času systém používá (pmtimer, acpi, tsc, hpet atd.). Zajímalo by mě, jestli bys mě nepobavil tím, že by ses pokusil přinutit svůj časovač k něčemu staršímu, jako je pmtimer. Je možné, že jedna z mnoha optimalizací specifických pro časovač gtod způsobuje, že se vaše volání ptrace vyhýbají, i když je vsyscall nastaveno na nulu.


Existuje nějaký způsob, jak zakázat použití vsyscalls/vDSO pro jeden proces, nebo pokud to není možné, pro celý operační systém?

Ukazuje se, že JE způsob, jak efektivně zakázat propojení vDSO pro jeden proces, aniž by bylo zakázáno v celém systému pomocí ptrace !

Jediné, co musíte udělat, je zastavit trasovaný proces, než se vrátí z execve a odstraňte AT_SYSINFO_EHDR vstup z pomocného vektoru (který přichází přímo za proměnnými prostředí podél oblasti paměti, na kterou ukazuje rsp ). PTRACE_EVENT_EXEC je dobré místo k tomu.

AT_SYSINFO_EHDR je to, co jádro používá k tomu, aby sdělilo systémovému linkeru, kde je vDSO mapováno v adresovém prostoru procesu. Pokud tento záznam není přítomen, ld Zdá se, že se chová, jako by systém nenamapoval vDSO.

Všimněte si, že to nějak neodmapuje vDSO z paměti vašich procesů, pouze jej ignoruje při propojování jiných sdílených knihoven. Škodlivý program s ním bude stále schopen interagovat, pokud si to autor opravdu přál.

Vím, že tato odpověď je trochu opožděná, ale doufám, že tato informace ušetří některé nebohé duši bolesti hlavy


Pro novější systémy echo 0 > /proc/sys/kernel/vsyscall64 nemusí fungovat. V Ubuntu 16.04 lze vDSO deaktivovat v celém systému přidáním parametru jádra vdso=0 v /etc/default/grub pod parametrem:GRUB_CMDLINE_LINUX_DEFAULT .

DŮLEŽITÉ:Parametr GRUB_CMDLINE_LINUX_DEFAULT mohou být přepsány jinými konfiguračními soubory v /etc/default/grub.d/... , takže znovu zkontrolujte, kdy přidat vlastní konfiguraci.


Linux
  1. Jak změnit název hostitele v systému Linux

  2. Alternativa k `memory.size()` v linuxu?

  3. Linuxový systém řazení front

  1. Příklady příkazů „shutdown“ v Linuxu

  2. Příklady příkazů resize2fs v Linuxu

  3. Příklady příkazů localectl v Linuxu

  1. Úvod do souborového systému Linux

  2. Kali Linux systémové požadavky

  3. historie dostupnosti linuxu