Grsecurity рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛
HKSP рдкреНрдпрд╛рдЪрд╣рд░реВ Huawei рдХрд░реНрдордЪрд╛рд░реАрджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, GitHub рдкреНрд░реЛрдлрд╛рдЗрд▓рдорд╛ Huawei рдХреЛ рдЙрд▓реНрд▓реЗрдЦ рд╕рдорд╛рд╡реЗрд╢ рдЫ, рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдирд╛рдордорд╛ Huawei рд╢рдмреНрдж рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН (HKSP - Huawei Kernel Self Protection)ред рдЙрд╣реА рд╕рдордпрдорд╛, Huawei рдкреНрд░рддрд┐рдирд┐рдзрд┐рд╣рд░реВрд▓реЗ рдХрдореНрдкрдиреАрд╕рдБрдЧ HKSP рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдЬрдбрд╛рдирд▓рд╛рдИ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реЗ рд░ рдХреЛрдб рдХрд░реНрдордЪрд╛рд░реАрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╣рд▓рдорд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рд╣реЛ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Huawei рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛрдЗрди рд░ рдХрдореНрдкрдиреАрдХрд╛ рдЙрддреНрдкрд╛рджрдирд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдирдЧрд░рд┐рдПрдХреЛ рдмрддрд╛рдПред рдЕрди
HKSP рд▓реЗ рдХреНрд░реЗрдбрд┐рдЯ рд╕рдВрд░рдЪрдирд╛рдорд╛ рдЕрдлрд╕реЗрдЯрд╣рд░реВрдХреЛ рдЕрдирд┐рдпрдорд┐рддрддрд╛, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рдиреЗрдорд╕реНрдкреЗрд╕ (pid рдиреЗрдорд╕реНрдкреЗрд╕) рдорд╛ рдЖрдХреНрд░рдордгрд╣рд░реВ рд╡рд┐рд░реБрджреНрдз рд╕реБрд░рдХреНрд╖рд╛, mmap рдХреНрд╖реЗрддреНрд░рдмрд╛рдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рд╡рд┐рднрд╛рдЬрди, kfree рдкреНрд░рдХрд╛рд░реНрдпрдорд╛ рдбрдмрд▓ рдХрд▓рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ, рд╕реНрдпреВрдбреЛ рдорд╛рд░реНрдлрдд рдЪреБрд╣рд╛рд╡рдЯ рд░реЛрдХреНрди рдЬрд╕реНрддрд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред -FS /proc (/proc/ {modules, keys, key-users}, /proc/sys/kernel/* and /proc/sys/vm/mmap_min_addr, /proc/kallsyms), рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕ рдареЗрдЧрд╛рдирд╛ рдЕрдирд┐рдпрдорд┐рддрддрд╛, рдЕрддрд┐рд░рд┐рдХреНрдд Ptrace рд╕реБрд░рдХреНрд╖рд╛, рдкрд░рд┐рд╖реНрдХреГрдд smap рд░ smep рд╕реБрд░рдХреНрд╖рд╛, рдХрдЪреНрдЪрд╛ рд╕рдХреЗрдЯрд╣рд░реВ рдорд╛рд░реНрдлрдд рдбрд╛рдЯрд╛ рдкрдард╛рдЙрди рдирд┐рд╖реЗрдз рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛, UDP рд╕рдХреЗрдЯрд╣рд░реВрдорд╛ рдЧрд▓рдд рдареЗрдЧрд╛рдирд╛рд╣рд░реВ рдмреНрд▓рдХ рдЧрд░реНрдиреЗ рд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рдЕрдЦрдгреНрдбрддрд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗред рдпрд╕рд▓реЗ Ksguard рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓ рдкрдирд┐ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рдЬрд╕рдХреЛ рдЙрджреНрджреЗрд╢реНрдп рд╕рд╛рдорд╛рдиреНрдп рд░реВрдЯрдХрд┐рдЯрд╣рд░реВ рдкрд░рд┐рдЪрдп рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рд╣реЛред
рдкреНрдпрд╛рдЪрд╣рд░реВ
Grsecurity рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдкреНрдпрд╛рдЪрдХреЛ рдЕрдзреНрдпрдпрдирд▓реЗ рдХреЛрдбрдорд╛ рдзреЗрд░реИ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд░ рдХрдордЬреЛрд░реАрд╣рд░реВ рдкреНрд░рдХрдЯ рдЧрд░реНрдпреЛ, рд░ рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдХреНрд╖рдорддрд╛рд╣рд░реВ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдкрдорд╛ рдиреНрдпрд╛рдп рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗ рдЦрддрд░рд╛ рдореЛрдбреЗрд▓рдХреЛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдкрдирд┐ рджреЗрдЦрд╛рдпреЛред рд╕реБрд░рдХреНрд╖рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдирдЧрд░реА рдХреЛрдб рд▓реЗрдЦрд┐рдПрдХреЛ рд╣реЛ рднрдиреА рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рджреЗрдЦрд╛рдЙрди, рд╣реНрдпрд╛рдиреНрдбрд▓рд░рдорд╛ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдЬреЛрдЦрд┐рдордХреЛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЗрдПрдХреЛ рдЫред
рдлрд╛рдЗрд▓ /proc/ksguard/state, рдЬреБрди рдЕрдзрд┐рдХрд╛рд░ режренренрен рд╕рдБрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╣реЛ, рд╕рдмреИрд▓рд╛рдИ рд▓реЗрдЦреНрдиреЗ рдкрд╣реБрдБрдЪ рдЫ рднрдиреНрдиреЗ рд╕рдВрдХреЗрдд рдЧрд░реНрджреИред ksg_state_write рдкреНрд░рдХрд╛рд░реНрдп, /proc/ksguard/state рдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдЖрджреЗрд╢рд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдПрдЙрдЯрд╛ tmp[0777] рдмрдлрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ рдЬрд╕рдорд╛ рдбрд╛рдЯрд╛ рдкрд╛рд╕ рдЧрд░рд┐рдПрдХреЛ рдЕрдкрд░реЗрдиреНрдбрдХреЛ рд╕рд╛рдЗрдЬрдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╣реБрдиреНрдЫ, рд▓рдХреНрд╖реНрдп рдмрдлрд░рдХреЛ рдЖрдХрд╛рд░рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рдирд▓рд┐рдИ рд░ рдмрд┐рдирд╛ред рд╕реНрдЯреНрд░рд┐рдЩ рд╕рд╛рдЗрдЬрдХреЛ рд╕рд╛рде рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрджреИред рддреАред рдХрд░реНрдиреЗрд▓ рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рдЕрдВрд╢ рдЕрдзрд┐рд▓реЗрдЦрди рдЧрд░реНрди, рдЖрдХреНрд░рдордгрдХрд░реНрддрд╛рд▓реЗ /proc/ksguard/state рдорд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рдврд╛рдБрдЪрд╛ рдЧрд░рд┐рдПрдХреЛ рд░реЗрдЦрд╛ рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред
рд╕реНрдерд┐рд░ рдЖрдХрд╛рд░_t ksg_state_write(рд╕рдВрд░рдЪрдирд╛ рдлрд╛рдЗрд▓ *рдлрд╛рдЗрд▓, const char __user *buf,
рд╕рд╛рдЗрдЬ_рдЯреА рд▓реЗрди, рд▓реЛрдл_рдЯреА *рдЕрдлрд╕реЗрдЯ)
{
u64 рдореВрд▓реНрдп;
рдЪрд╛рд░ tmp [32];
рд╕рд╛рдЗрдЬ_рдЯреА n = 0;
рдпрджрд┐ (copy_from_user(tmp, buf, len))
рд░рд┐рдЯрд░реНрди -рез;
рдорд╛рди = simple_strtoul(tmp, '\0', 10);
...
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реЛрд╖рдг:
рдЪрд╛рд░ рдмрдл [рекрежрепрем] = {};
int fd = open("/proc/ksguard/state", O_WRONLY);
рдпрджрд┐ (fd >= 0) {
рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН (fd, buf, sizeof(buf));
рдмрдиреНрдж (fd);
}
рд╕реНрд░реЛрдд: opennet.ru