рд░реЕрд╢ рдлрд┐рдХреНрд╕рдореБрд│реЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓рдордзреАрд▓ рд╕реНрдкреЗрдХреНрдЯрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪреЗ рдЕрдкреВрд░реНрдг рдирд┐рд░рд╛рдХрд░рдг рдЭрд╛рд▓реЗ

Grsecurity рдкреНрд░рдХрд▓реНрдкрд╛рдЪреЗ рд╡рд┐рдХрд╕рдХ рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓реЗ рдПрдХ рд╕рд╛рд╡рдзрдЧрд┐рд░реАрдЪреА рдХрдерд╛ рдЬреА рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрддрд╛рд╡рдгреАрдВрдЪреЗ рдирд┐рд╖реНрдХрд╛рд│рдЬреАрдкрдгреЗ рдирд┐рд░реНрдореВрд▓рди рдХреЗрд▓реНрдпрд╛рдиреЗ рдХреЛрдбрдордзреАрд▓ рдЕрд╕реБрд░рдХреНрд╖рд╛ рдХрд╢рд╛ рд╣реЛрдК рд╢рдХрддрд╛рдд рд╣реЗ рджрд░реНрд╢рд╡рд┐рддреЗ. рдореЗ рдорд╣рд┐рдиреНрдпрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдирд▓рд╕рд╛рдареА, ptrace рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓рджреНрд╡рд╛рд░реЗ рд╕реНрдкреЗрдХреНрдЯрд░ рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдЪреНрдпрд╛ рд╢реЛрд╖рдгрд╛рдЪреНрдпрд╛ рдирд╡реАрди рд╡реЗрдХреНрдЯрд░рд╕рд╛рдареА рдПрдХ рдирд┐рд░рд╛рдХрд░рдг рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ.

рдкреЕрдЪрдЪреНрдпрд╛ рдЪрд╛рдЪрдгреАрдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд, рд╡рд┐рдХрд╕рдХрд╛рдВрдЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдЖрд▓реЗ рдХреА рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рдХрдВрдкрд╛рдпрд▓рд░ рдХреЛрдб рдЖрдгрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдорд┐рд╕рд│рдгреНрдпрд╛рдмрджреНрджрд▓ рдЪреЗрддрд╛рд╡рдгреА рджрд░реНрд╢рд╡рд┐рддреЛ (рд╕рдВрд░рдЪрдирд╛ рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рд▓рд╛ рдореВрд▓реНрдп рдирд┐рдпреБрдХреНрдд рдХрд░реВрди рдХреЛрдб рдирдВрддрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗрд▓реА рдЧреЗрд▓реА рд╣реЛрддреА):

int index = n;
рдЬрд░ (n < HBP_NUM) { рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ = array_index_nospec(index, HBP_NUM); рд░рдЪрдирд╛ perf_event *bp = рдереНрд░реЗрдб->ptrace_bps[рдЗрдВрдбреЗрдХреНрд╕];

рд▓рд┐рдирд╕рдиреЗ рд╕реНрд╡реАрдХрд╛рд░рд▓реЗ рджреБрд░реБрд╕реНрддреА рддреБрдордЪреНрдпрд╛ рдореБрдЦреНрдп рд╢рд╛рдЦреЗрдд, рдЪреНрдпрд╛рдкрд╛рд╕реВрди рд╕реБрдЯрдХрд╛ рдорд┐рд│рд╡рдгреЗ рдЗрдл рдмреНрд▓реЙрдХрдордзреНрдпреЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧреБрдВрдбрд╛рд│реВрди рдЪреЗрддрд╛рд╡рдгреАрдкрд╛рд╕реВрди:

рдЬрд░ (n < HBP_NUM) { int index = array_index_nospec(n, HBP_NUM); рд░рдЪрдирд╛ perf_event *bp = рдереНрд░реЗрдб->ptrace_bps[рдЗрдВрдбреЗрдХреНрд╕];

рдЬреБрд▓реИрдордзреНрдпреЗ, рдлрд┐рдХреНрд╕ 4.4, 4.9, 4.14, 4.19 рдЖрдгрд┐ 5.2 рд╕реНрдерд┐рд░ рдХрд░реНрдирд▓ рд╢рд╛рдЦрд╛рдВрдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдкреЛрд░реНрдЯ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ. рд╕реНрдерд┐рд░ рджреЗрдЦрднрд╛рд▓ рдХрд░рдгрд╛рд░реНтАНрдпрд╛рдВрдирд╛ рджреЗрдЦреАрд▓ рдЪреЗрддрд╛рд╡рдгреА рдЖрд▓реА рдЖрдгрд┐ рд▓рд┐рдирд╕рдЪреНрдпрд╛ рдореБрдЦреНрдп рд╢рд╛рдЦреЗрдд рддреЗ рдЖрдзреАрдЪ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рд╣реЗ рддрдкрд╛рд╕рдгреНрдпрд╛рдРрд╡рдЬреА рддреНрдпрд╛рдВрдиреА рддреЗ рд╕реНрд╡рддрдГрдЪ рдкреЕрдЪ рдХреЗрд▓реЗ. рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рддреЗ, рдЬрд╛рд╕реНрдд рд╡рд┐рдЪрд╛рд░ рди рдХрд░рддрд╛, рдлрдХреНрдд рд╣рд▓рд╡рд┐рд▓реЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдбреЗрдлрд┐рдиреЗрд╢рди рдЕрдк рдХрд░рд╛, рдЬреЗрдгреЗрдХрд░реВрди array_index_nospec рд▓рд╛ рдХреЙрд▓, рдЬреЗ рдереЗрдЯ рдЕрд╕реБрд░рдХреНрд╖рд┐рддрддреЗрдкрд╛рд╕реВрди рд╕рдВрд░рдХреНрд╖рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ, рдпрд╛рдкреБрдвреЗ рд╕рдВрд░рдЪрдиреЗрдЪреНрдпрд╛ рд╡реНрдпрд╛рдЦреНрдпреЗрдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА рдЖрдгрд┐ "рдЗрдВрдбреЗрдХреНрд╕" рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдРрд╡рдЬреА, "n" рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдиреЗрд╣рдореА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рдд рдЕрд╕реЗ:

int index = n;
рдЬрд░ (n < HBP_NUM ){ рд░рдЪрдирд╛ perf_event *bp = рдереНрд░реЗрдб->ptrace_bps[рдЗрдВрдбреЗрдХреНрд╕];
index = array_index_nospec(index, HBP_NUM);

рд╕реНрддреНрд░реЛрдд: opennet.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛