Таблица 1
Сравнение методов поиска уязвимостей
Представление кода
Проверка свойств
Поиск дефектов по шаблону
Исходные тексты Свойства недоступны
Поиск сигнатур по регуляр-
ным выражениям
Абстрактное син-
таксическое дерево
Лексический и синтаксиче-
ский анализ
Лексический и синтаксиче-
ский анализ, поиск сигнатур
по дереву
Абстрактный се-
мантический граф
потока данных
Абстрактная интерпретация
(интервальный анализ, анализ
указателей, анализ зависимо-
стей по данным)
Анализ потока данных,
поиск внутрипроцедурных
сигнатур последовательно-
стей инструкций с учетом
передаваемых значений
определение дефекта с учетом разнообразия синтаксиса исследуемого
языка программирования, что и представляет основную задачу иссле-
дования.
Разработка метамодели выявления безопасности дефектов ко-
да.
Для обеспечения простоты представления метамодели используем
продукционную модель знаний. Это связано с тем, что для отдельного
языка программирования в настоящее время известно не более 100
классов критических дефектов. В качестве системы продукций пред-
ложим систему вида
R
1
=
< s
j
∈
S
;
CP
1
(
s
j
) ;
DA
1
(
s
j
)
→
DB
1
(
s
j
) ;
P
1
(
CL
1
, PR
1
)
>
;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
R
n
=
< s
j
∈
S
;
CP
n
(
s
j
) ;
DA
n
(
s
j
)
→
DB
n
(
s
j
) ;
P
n
(
CL
n
, PR
n
)
> .
Здесь
n
— число продукционных правил в модели, связанных с анали-
зом кода;
R
i
— обозначение
i
-й продукции модели,
i
= 1
, n
;
s
j
∈
S
—
описание класса ситуаций (в данной предметной области речь идет
о проверке способности анализатора обрабатывать пришедшие вход-
ные данные);
S
— множества всех лексем исходных текстов про-
граммного проекта, которые способен обрабатывать данный анализа-
тор (ограничение определяется типом языка программирования, вер-
сией его грамматики, видом поддерживаемых сигнатур для анализа);
j
= 1
, k
— индекс лексемы в векторе лексем
s
, которая находится
в данный момент в обработке статическим анализатором,
k
=
|
s
|
;
s
— вектор лексем узлов абстрактного синтаксического дерева ко-
да, полученного в результате работы препроцессора, лексического и
синтаксического анализа;
CP
(
s
j
)
— условие активации продукции,
функция, возвращающая “1” при наличии заданных в аргументе ти-
повых конструкций кода программного проекта, где наиболее вероят-
но возникновение программного дефекта (заданного типа) или при-
сутствует важное для анализа свойство программы (принадлежность
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2016. № 1 101