исходных текстов программы, если на данном этапе анализа тип не
определен (например, используется язык программирования с дина-
мической типизацией), то она возвращает пустое множество.
Определим множество
L
лексем, в которых были найдены потен-
циально опасные конструкции (это множество заполняется в процессе
работы продукционной модели) и функцию
AP
(
b, e
)
, добавляющую
элемент
b
в множество
e
.
Далее составим на основе перечисленных множеств правила про-
дукционного вывода для дефектов различного типа.
Примеры реализации эвристического анализа на основе про-
дукционной модели.
Для выявления потенциально опасного фрагмен-
та воспользуемся внутрипроцедурным уровнем представления кода
(абстрактным синтаксическим деревом). Примеры дефектов безопас-
ности кодов приведены в табл. 2.
Таблица 2
Примеры дефектов безопасности кода
Элемент CWE уровня
Признаки наличия
Подверженные
языки и техноло-
гии программи-
рования
верхнего
нижнего
Использование недо-
статочно случайных
величин (Use of
Insufficiently Random
Values), CWE-330
Предсказуемый век-
тор инициализации
ГПСЧ (Predictable
Seed in PRNG),
CWE-337
Использование в
качестве векто-
ра инициализа-
ции констант или
предсказуемых
значений
Не зависит от
языка программи-
рования
Неверное следование
спецификациям вы-
зывающей стороной
(Improper Following
of Specification by
Caller), CWE-573
Нарушение объект-
ной модели: опре-
делен лишь один
Equals или один
Hashcode (Object
Model Violation: Just
One of Equals and
Hashcode Defined),
CWE-581
Переопределение
одного из мето-
дов Equals или
Hashcode без опре-
деления парного
ему метода
Java
Ошибки условий,
возвращаемых зна-
чений, статус кодов
(Error
Conditions,
Return Values, Status
Codes), CWE-389
Оператор возврата в
блоке Finally (Return
Inside Finally Block),
CWE-584
Наличие операто-
ра возврата в бло-
ке Finally
Java
Пример дефекта кода, заключающегося в предсказании случайно-
го числа.
Рассмотрим дефект кода CWE-337, определяемый по клас-
сификации CWE как предсказуемый вектор инициализации ГПСЧ
104 ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2016. № 1