Huawei рдХрд░реНрдордЪрд╛рд░реАрджреНрд╡рд╛рд░рд╛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдкреНрдпрд╛рдЪрд╣рд░реВрдорд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ

Grsecurity рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдШреБрдореНрдпреЛ рдкреНрдпрд╛рдЪ рд╕реЗрдЯ рдорд╛ рдПрдХ рддреБрдЪреНрдЫ рд╢реЛрд╖рдг рдЬреЛрдЦрд┐рдо рдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐ рдорд╛ рдзреНрдпрд╛рди HKSP (Huawei рдХрд░реНрдиреЗрд▓ рд╕реЗрд▓реНрдл рдкреНрд░реЛрдЯреЗрдХреНрд╢рди), рдХреЗрд╣рд┐ рджрд┐рди рдЕрдШрд┐ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиред рдЕрд╡рд╕реНрдерд╛рд▓реЗ рд╕рдореНрдЭрд╛рдЙрдБрдЫ рд╕реИрдорд╕рдВрдЧ рд╕рдВрдЧ рдорд╛рдорд▓рд╛, рдЬрд╕рдорд╛ рдкреНрд░рдгрд╛рд▓реА рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕рд▓реЗ рдирдпрд╛рдБ рдЬреЛрдЦрд┐рдордХреЛ рдЙрджрдп рднрдпреЛ рд░ рдпрдиреНрддреНрд░рд╣рд░реВрд▓рд╛рдИ рд╕рдореНрдЭреМрддрд╛ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдпреЛред

HKSP рдкреНрдпрд╛рдЪрд╣рд░реВ Huawei рдХрд░реНрдордЪрд╛рд░реАрджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, GitHub рдкреНрд░реЛрдлрд╛рдЗрд▓рдорд╛ Huawei рдХреЛ рдЙрд▓реНрд▓реЗрдЦ рд╕рдорд╛рд╡реЗрд╢ рдЫ, рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдирд╛рдордорд╛ Huawei рд╢рдмреНрдж рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН (HKSP - Huawei Kernel Self Protection)ред рдЙрд╣реА рд╕рдордпрдорд╛, Huawei рдкреНрд░рддрд┐рдирд┐рдзрд┐рд╣рд░реВрд▓реЗ рдХрдореНрдкрдиреАрд╕рдБрдЧ HKSP рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рдЬрдбрд╛рдирд▓рд╛рдИ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реЗ рд░ рдХреЛрдб рдХрд░реНрдордЪрд╛рд░реАрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╣рд▓рдорд╛ рд╡рд┐рдХрд╕рд┐рдд рдЧрд░рд┐рдПрдХреЛ рд╣реЛ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Huawei рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛрдЗрди рд░ рдХрдореНрдкрдиреАрдХрд╛ рдЙрддреНрдкрд╛рджрдирд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдирдЧрд░рд┐рдПрдХреЛ рдмрддрд╛рдПред рдЕрди GitHub рдкреГрд╖реНрда HKSP рдкреВрд░реНрд╡рд╡реНрдпрд╛рдкреА рд░реВрдкрдорд╛ рдЦреЛрдЬ рдкрдЫрд┐ рдХрдордЬреЛрд░реАрд╣рд░реВ рдкрдирд┐ рдердкрд┐рдПрдХреЛ рдерд┐рдпреЛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рдореЗрд░реЛ рдЦрд╛рд▓реА рд╕рдордпрдорд╛ рд╡рд┐рдХрд╕рд┐рдд рднрдЗрд░рд╣реЗрдХреЛ рдЫред

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 рдХрд░реНрдиреЗрд▓ рдореЛрдбреНрдпреБрд▓ рдкрдирд┐ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ, рдЬрд╕рдХреЛ рдЙрджреНрджреЗрд╢реНрдп рд╕рд╛рдорд╛рдиреНрдп рд░реВрдЯрдХрд┐рдЯрд╣рд░реВ рдкрд░рд┐рдЪрдп рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕рд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рд╣реЛред

рдкреНрдпрд╛рдЪрд╣рд░реВ рдмреЛрд▓рд╛рдЗрдпреЛ рдЧреНрд░реЗрдЧ рдХреНрд░реЛрд╣-рд╣рд╛рд░реНрдЯрдореНрдпрд╛рди, рдЬреЛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдХреЛ рд╕реНрдерд┐рд░ рд╢рд╛рдЦрд╛ рдХрд╛рдпрдо рд░рд╛рдЦреНрди рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫрдиреН, рдЪрд╛рд╕реЛрдХреЛ рд╡рд┐рд╖рдп рдерд┐рдпреЛ, рд░ рд▓реЗрдЦрдХрд▓рд╛рдИ рдореБрдЦреНрдп рдХрд░реНрдиреЗрд▓рдорд╛ рд╕рдореАрдХреНрд╖рд╛ рд░ рдкрджреЛрдиреНрдирддрд┐рд▓рд╛рдИ рд╕рд░рд▓ рдмрдирд╛рдЙрдирдХрд╛ рд▓рд╛рдЧрд┐ рдореЛрдиреЛрд▓рд┐рдерд┐рдХ рдкреНрдпрд╛рдЪрд▓рд╛рдИ рднрд╛рдЧрд╣рд░реВрдорд╛ рддреЛрдбреНрди рдЖрдЧреНрд░рд╣ рдЧрд░реЗред рдХреЗрд╕ рдХреБрдХ, рдЯрд╛рдЙрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд╛ рдкрджреЛрдиреНрдирддрд┐ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдорд╛ рд╕рдХреНрд░рд┐рдп рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рд╡рд┐рдзрд┐ рдкрдирд┐ рд╕рдХрд░рд╛рддреНрдордХ рдкреНрдпрд╛рдЪрд╣рд░реВрдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдпреЛ рд░, рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдордзреНрдпреЗ, x86 рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд░ рдзреЗрд░реИ рдореЛрдбрд╣рд░реВрдХреЛ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдкреНрд░рдХреГрддрд┐рдорд╛ рдмрдиреНрдзрдирдорд╛ рдзреНрдпрд╛рди рдЦрд┐рдЪреНрдпреЛ, рдЬрд╕рд▓реЗ рд╕рдорд╕реНрдпрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдорд╛рддреНрд░ рд▓рдЧрд╛рдЙрдБрджрдЫ, рддрд░ рдпрд╕рд▓рд╛рдИ рд░реЛрдХреНрди рдкреНрд░рдпрд╛рд╕ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди