เจ‡เฉฑเจ• เจ—เจฒเจค-เจตเจฟเจšเจพเจฐเฉ‡ เจชเฉˆเจš เจฆเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจตเจฟเฉฑเจš เจธเจชเฉˆเจ•เจŸเจฐ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจฒเจˆ เจ‡เฉฑเจ• เจ…เจงเฉ‚เจฐเจพ เจซเจฟเจ•เจธ เจนเฉ‹ เจ—เจฟเจ†

Grsecurity เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจธเจพเจ‚เจเจพ เจ•เฉ€เจคเจพ เจ‡เฉฑเจ• เจธเจพเจตเจงเจพเจจเฉ€ เจตเจพเจฒเฉ€ เจ•เจนเจพเจฃเฉ€ เจ‡เจน เจฆเจฐเจธเจพเจ‰เจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจšเฉ‡เจคเจพเจตเจจเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฌเจฟเจจเจพเจ‚ เจธเฉ‹เจšเฉ‡ เจธเจฎเจเฉ‡ เจ–เจคเจฎ เจ•เจฐเจจ เจจเจพเจฒ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ•เจฎเจœเจผเฉ‹เจฐเฉ€เจ†เจ‚ เจ† เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค เจฎเจˆ เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจชเจŸเจฐเฉ‡เจธ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจฆเฉเจ†เจฐเจพ เจธเจชเฉˆเจ•เจŸเจฐ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจฆเฉ‡ เจธเจผเฉ‹เจธเจผเจฃ เจฆเฉ‡ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจตเฉˆเจ•เจŸเจฐ เจฒเจˆ เจฒเฉ€เจจเจ•เจธ เจ•เจฐเจจเจฒ เจฒเจˆ เจ‡เฉฑเจ• เจซเจฟเจ•เจธ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค

เจชเฉˆเจš เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‡ เจฆเฉ‡เจ–เจฟเจ† เจ•เจฟ เจจเจฟเจฐเจฎเจพเจฃ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฎเจฟเจธเจผเจฐเจฃ เจ•เฉ‹เจก เจ…เจคเฉ‡ เจชเจฐเจฟเจญเจพเจธเจผเจพเจตเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจšเฉ‡เจคเจพเจตเจจเฉ€ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจฆเจพ เจนเฉˆ (เจธเฉฐเจฐเจšเจจเจพ เจจเฉ‚เฉฐ เจ•เฉ‹เจก เจฆเฉ‡ เจฌเจพเจ…เจฆ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจ‡เฉฑเจ• เจฎเฉŒเจœเฉ‚เจฆเจพ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฎเฉเฉฑเจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ):

int index = n;
เจœเฉ‡เจ•เจฐ (n < HBP_NUM) { เจธเฉ‚เจšเจ•เจพเจ‚เจ• = เจเจฐเฉ‡_เจ‡เฉฐเจกเฉˆเจ•เจธ_เจจเฉ‹เจธเจชเฉ‡เจ• (เจ‡เฉฐเจกเฉˆเจ•เจธ, HBP_NUM); struct perf_event *bp = เจฅเจฐเจฟเฉฑเจก->ptrace_bps[เจ‡เฉฐเจกเฉˆเจ•เจธ];

เจฒเฉ€เจจเจธ เจจเฉ‡ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐ เจฒเจฟเจ† เจธเฉเจงเจพเจฐ เจคเฉเจนเจพเจกเฉ€ เจฎเจพเจธเจŸเจฐ เจธเจผเจพเจ–เจพ เจจเฉ‚เฉฐ, เจ›เฉเจŸเจ•เจพเจฐเจพ เจชเจพ เจฒเจฟเจ† เจนเฉˆ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจชเจฐเจฟเจญเจพเจธเจผเจพ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• if เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš เจญเฉ‡เจœ เจ•เฉ‡ เจšเฉ‡เจคเจพเจตเจจเฉ€ เจคเฉ‹เจ‚:

เจœเฉ‡เจ•เจฐ (n < HBP_NUM) { int index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = เจฅเจฐเจฟเฉฑเจก->ptrace_bps[เจ‡เฉฐเจกเฉˆเจ•เจธ];

เจœเฉเจฒเจพเจˆ เจตเจฟเฉฑเจš, เจซเจฟเจ•เจธ เจจเฉ‚เฉฐ เจธเจฅเจฟเจฐ เจ•เจฐเจจเจฒ เจธเจผเจพเจ–เจพเจตเจพเจ‚ 4.4, 4.9, 4.14, 4.19 เจ…เจคเฉ‡ 5.2 เจตเจฟเฉฑเจš เจตเฉ€ เจชเฉ‹เจฐเจŸ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค เจธเจฅเจฟเจฐ เจธเจผเจพเจ–เจพเจตเจพเจ‚ เจฆเฉ‡ เจฐเฉฑเจ–เจฟเจ…เจ•เจพเจ‚ เจจเฉ‚เฉฐ เจตเฉ€ เจšเฉ‡เจคเจพเจตเจจเฉ€ เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจจเจพ เจชเจฟเจ† เจ…เจคเฉ‡, เจ‡เจน เจฆเฉ‡เจ–เจฃ เจฆเฉ€ เจฌเจœเจพเจ เจ•เจฟ เจ‡เจน เจฒเฉ€เจจเจธ เจฆเฉ€ เจฎเจพเจธเจŸเจฐ เจฌเฉเจฐเจพเจ‚เจš เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจซเจฟเจ•เจธ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจœเจพเจ‚ เจจเจนเฉ€เจ‚, เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ เฉ€เจ• เจ•เฉ€เจคเจพเฅค เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เจธ เจฌเจพเจฐเฉ‡ เจธเฉ‹เจšเฉ‡ เจฌเจฟเจจเจพเจ‚, เจ‰เจน เจธเจฟเจฐเจซเจผ เจšเจฒเฉ‡ เจ—เจ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจจเจพ, เจคเจพเจ‚ เจ•เจฟ เจเจฐเฉ‡_เจ‡เฉฐเจกเฉˆเจ•เจธ_เจจเฉ‹เจธเจชเฉ‡เจ• เจจเฉ‚เฉฐ เจ•เจพเจฒ, เจœเฉ‹ เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจฎเจœเจผเฉ‹เจฐเฉ€ เจฆเฉ‡ เจตเจฟเจฐเฉเฉฑเจง เจธเฉเจฐเฉฑเจ–เจฟเจ† เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเฉ€ เจนเฉˆ, เจนเฉเจฃ เจขเจพเจ‚เจšเฉ‡ เจจเฉ‚เฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจตเจฐเจคเฉ€ เจจเจนเฉ€เจ‚ เจœเจพเจ‚เจฆเฉ€, เจ…เจคเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ "เจ‡เฉฐเจกเฉˆเจ•เจธ" เจฆเฉ€ เจฌเจœเจพเจ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ "n" เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ:

int index = n;
เจœเฉ‡เจ•เจฐ (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[เจ‡เฉฐเจกเฉˆเจ•เจธ];
เจธเฉ‚เจšเจ•เจพเจ‚เจ• = เจเจฐเฉ‡_เจ‡เฉฐเจกเฉˆเจ•เจธ_เจจเฉ‹เจธเจชเฉ‡เจ•(เจ‡เฉฐเจกเฉˆเจ•เจธ, HBP_NUM);

เจธเจฐเฉ‹เจค: opennet.ru

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹