แƒ’แƒแƒ›แƒแƒœแƒแƒงแƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒแƒ› แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒ Linux-แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒจแƒ˜ Spectre แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒแƒ แƒแƒกแƒ แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ

Grsecurity แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒ›แƒ‘แƒแƒ•แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒ•แƒ˜แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฃแƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒ แƒแƒฆแƒ›แƒแƒคแƒฎแƒ•แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ˜แƒฌแƒ•แƒ˜แƒแƒก แƒ™แƒแƒ“แƒ˜แƒก แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒ. แƒ›แƒแƒ˜แƒกแƒ˜แƒก แƒ‘แƒแƒšแƒแƒก, Linux-แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒจแƒ”แƒกแƒ—แƒแƒ•แƒแƒ–แƒ”แƒก แƒจแƒ”แƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ Spectre แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ”แƒฅแƒกแƒžแƒšแƒฃแƒแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒแƒฎแƒแƒš แƒ•แƒ”แƒฅแƒขแƒแƒ แƒ–แƒ” ptrace แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ˜แƒ—.

แƒžแƒแƒขแƒฉแƒ˜แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒจแƒ˜, แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ›แƒ แƒจแƒ”แƒœแƒ˜แƒจแƒœแƒ”แƒก, แƒ แƒแƒ› แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒกแƒแƒก, แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜ แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒแƒก แƒ™แƒแƒ“แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ แƒ”แƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ (แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒ’แƒแƒœแƒ˜แƒกแƒแƒ–แƒฆแƒ•แƒ แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒญแƒ”แƒ‘แƒ˜แƒ—):

int แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ = n;
if (n < HBP_NUM) { index = array_index_nospec (แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];

แƒšแƒ˜แƒœแƒฃแƒกแƒ›แƒ แƒ›แƒ˜แƒ˜แƒฆแƒ แƒ™แƒแƒ แƒ”แƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒกแƒแƒ›แƒแƒ’แƒ˜แƒกแƒขแƒ แƒ แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜, แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒ›แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒ แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก if แƒ‘แƒšแƒแƒ™แƒจแƒ˜ แƒจแƒ”แƒคแƒฃแƒ—แƒ•แƒ˜แƒ—:

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-แƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒแƒชแƒ•แƒแƒก, แƒแƒฆแƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒจแƒ˜ แƒ“แƒ "index" แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ "n" แƒชแƒ•แƒšแƒแƒ“แƒ˜:

int แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ = n;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜ = array_index_nospec (แƒ˜แƒœแƒ“แƒ”แƒฅแƒกแƒ˜, HBP_NUM);

แƒฌแƒงแƒแƒ แƒ: opennet.ru

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ