Об одном способе обнаружения эксплуатации уязвимостей и его параметрах
Ю. В. Косолапов Институт математики, механики и компьютерных наук им. И. И. Воровича, Южный федеральный университет
Аннотация:
При успешной эксплуатации уязвимости, приводящей к запуску вредоносного кода, обычно запускаемый код вызывает некоторую системную функцию. В качестве способа обнаружения эксплуатации уязвимости программы
$P$ предлагается алгоритм на основе проверки на нетипичность расстояния между вызовом с номером
$i$ и вызовом с номером
$i-j$, где
$j\in \{1,\ldots ,T\}$,
$T\in \mathbb{N}$. Под расстоянием понимается разность виртуальных адресов вызова этих функций, а типичность определяется путем проверки принадлежности вычисленного расстояния профилю расстояний, построенному ранее для защищаемой программы
$P$. Кроме параметра
$T$ алгоритм обнаружения использует параметр
$W(\in \mathbb{N})$ — количество профилей, по которым проверяется типичность вызова. При этом для
$j\in \{1,\ldots,W\}$ профиль с номером
$j$ строится по парам вызовов, разность индексов вызовов которых в легитимной последовательности равна
$j$. Чем больше
$T$ и
$W$, тем меньше вероятность ложного обнаружения нелегитимного исполнения кода, однако с ростом этих параметров растет и время проверки типичности. В ходе экспериментального исследования выяснено, что достаточные значения параметров
$(W,T)$ зависят от набора отслеживаемых функций. Поэтому для каждого набора отслеживаемых функций (и каждой защищаемой программы
$P$) эти параметры алгоритма должны находиться отдельно. Установлено, что при
$W>1$ существенно снижается вероятность ложного обнаружения.
Ключевые слова:
уязвимости программного обеспечения, расстояние между вызовами функций, защита программ. Поступила в редакцию: 20.08.2020
DOI:
10.14357/08696527210405