Previous Page  4 / 14 Next Page
Information
Show Menu
Previous Page 4 / 14 Next Page
Page Background

Таблица 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