เดฒเดฟเดจเด•เตโ€Œเดธเต เด•เต‡เตผเดฃเดฒเดฟเดฒเต† เดธเตโ€Œเดชเต†เด•เตโ€Œเดฑเตเดฑเตผ เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพ เดคเต€เตผเด•เตเด•เดพเดจเตเดณเตเดณ เด…เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเดฏเดฟ.

Grsecurity เดชเดฆเตเดงเดคเดฟเดฏเตเดŸเต† เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดชเด™เตเด•เดฟเดŸเตเดŸเต เด•เด‚เดชเตˆเดฒเตผ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเตเด•เตพ เด…เดถเตเดฐเดฆเตเดงเดฎเดพเดฏเดฟ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเดคเต เด•เต‹เดกเดฟเดฒเต† เด•เต‡เดŸเตเดชเดพเดŸเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดŽเด™เตเด™เดจเต† เดจเดฏเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เด•เดฅ. เดฎเต†เดฏเต เด…เดตเดธเดพเดจเด‚, เดฒเดฟเดจเด•เตเดธเต เด•เต‡เตผเดฃเดฒเดฟเดจเดพเดฏเดฟ, ptrace เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เดณเดฟเดฒเต‚เดŸเต† เดธเตเดชเต†เด•เตเดฑเตเดฑเตผ เดฆเตเตผเดฌเดฒเดคเดฏเตเดŸเต† เด’เดฐเต เดชเตเดคเดฟเดฏ เดตเต†เด•เตเดฑเตเดฑเตผ เดšเต‚เดทเดฃเดคเตเดคเดฟเดจเต เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเด‚ เดจเดฟเตผเดฆเตเดฆเต‡เดถเดฟเดšเตเดšเต.

เดชเดพเดšเตเดšเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ, เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด•เต‹เดกเตเด‚ เดจเดฟเตผเดตเดšเดจเด™เตเด™เดณเตเด‚ เดฎเดฟเดถเตเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เด•เด‚เดชเตˆเดฒเตผ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเต เดกเดตเดฒเดชเตเดชเตผเดฎเดพเตผ เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเต (เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด’เดฐเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เด’เดฐเต เดฎเต‚เดฒเตเดฏเด‚ เดจเตฝเด•เดฟเด•เตเด•เตŠเดฃเตเดŸเต เด•เต‹เดกเดฟเดจเต เดถเต‡เดทเด‚ เด˜เดŸเดจ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเต):

int เดธเต‚เดšเดฟเด• = n;
เดŽเด™เตเด•เดฟเตฝ (n < HBP_NUM) {index = array_index_nospec(index, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];

เดฒเดฟเดจเดธเต เดธเตเดตเต€เด•เดฐเดฟเดšเตเดšเต เดคเดฟเดฐเตเดคเตเดคเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฎเดพเดธเตเดฑเตเดฑเตผ เดฌเตเดฐเดพเดžเตเดšเดฟเดฒเต‡เด•เตเด•เต, เด…เด•เดฑเตเดฑเดพเตป เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดกเต†เดซเดจเดฟเดทเตป เด’เดฐเต if เดฌเตเดฒเต‹เด•เตเด•เดฟเตฝ เดชเตŠเดคเดฟเดžเตเดžเต เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเต:

เดŽเด™เตเด•เดฟเตฝ (n < HBP_NUM) {int index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];

เดœเต‚เดฒเตˆเดฏเดฟเตฝ, เดซเดฟเด•เตเดธเต 4.4, 4.9, 4.14, 4.19, 5.2 เดธเตเดฑเตเดฑเต‡เดฌเดฟเตพ เด•เต‡เตผเดฃเตฝ เดฌเตเดฐเดพเดžเตเดšเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดชเต‹เตผเดŸเตเดŸเต เดšเต†เดฏเตเดคเต. เดธเตเดฅเดฟเดฐเดค เดชเตเดฒเตผเดคเตเดคเตเดจเตเดจเดตเดฐเตเด‚ เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต เดจเต‡เดฐเดฟเดŸเตเดŸเต, เดฒเดฟเดจเดธเดฟเดจเตเดฑเต† เดฎเดพเดธเตเดฑเตเดฑเตผ เดฌเตเดฐเดพเดžเตเดšเดฟเตฝ เด‡เดคเต เด‡เดคเดฟเดจเด•เด‚ เดถเดฐเดฟเดฏเดพเด•เตเด•เดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดชเด•เดฐเด‚, เด…เดตเตผ เดคเดจเตเดจเต† เด…เดคเต เดชเดพเดšเตเดšเต เดšเต†เดฏเตเดคเต. เดชเตเดฐเดถเตโ€Œเดจเด‚ เดŽเดจเตเดคเต†เดจเตเดจเดพเตฝ, เด…เดตเตผ เด…เดงเดฟเด•เด‚ เดšเดฟเดจเตเดคเดฟเด•เตเด•เดพเดคเต† เดตเต†เดฑเตเดคเต† เดจเต€เด•เตเด•เดฟ เด˜เดŸเดจเดฏเตเดŸเต† เดจเดฟเตผเดตเดšเดจเด‚ เด‰เดฏเตผเดคเตเดคเดฟ, เด…เดคเดฟเดจเดพเตฝ, เด•เต‡เดŸเตเดชเดพเดŸเตเด•เตพเด•เตเด•เต†เดคเดฟเดฐเต† เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเดฐเดฟเดฐเด•เตเดท เดจเตฝเด•เตเดจเตเดจ array_index_nospec-เดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เต‹เตพ, เด˜เดŸเดจเดฏเตเดŸเต† เดจเดฟเตผเดตเดšเดจเดคเตเดคเดฟเตฝ เด‡เดจเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† "เด‡เตปเดกเด•เตเดธเต" เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดชเด•เดฐเด‚ "n" เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต:

int เดธเต‚เดšเดฟเด• = n;
เดŽเด™เตเด•เดฟเตฝ (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
เดธเต‚เดšเดฟเด• = array_index_nospec(เดธเต‚เดšเดฟเด•, HBP_NUM);

เด…เดตเดฒเด‚เดฌเด‚: opennet.ru

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•