(Predictable Seed in PRNG). Если вектор, используемый в программе
для инициализации ГПСЧ, предсказуем (он формируется на основе
системного времени, идентификатора процесса и других легко про-
гнозируемых параметров), то злоумышленник имеет возможность
с высокой степенью вероятности “угадать” значения, выдаваемые
ГПСЧ. В зависимости от их дальнейшего использования это может
позволить реализовать атаки на сессионные ключи, хеши паролей,
гамма-последовательности шифрования, подмену временных файлов
и др.
Для выявления дефекта можно составить следующий эвристиче-
ский алгоритм:
1) поиск функций установки вектора инициализации ГПСЧ;
2) анализ вектора инициализации на предмет того, используется ли
для его инициализации константа и (или) статистически предсказуе-
мое значение (например, день недели) с учетом того, что они могли
быть определены ранее;
3) если вектор инициализации формируется только из этих видов
данных, то, как правило, в программе присутствует дефект CWE-337.
Продукционная модель дефекта (CWE-337) будет иметь вид
R
337
1
=
< s
j
∈
S
;
s
j
∈
o
asg
(
s
j
−
1
, Y
) ;
(
Y
∩
I
det
6
=
∅
)
→
AP
(
s
j
−
1
, I
det
)
>
R
337
2
=
< s
j
∈
S
;
s
j
∈
M
func
∧
s
j
+1
∈
∈
o
call
(
z
)
∧
z
∈
F
prng
;
f
arg
∩
I
det
6
=
∅
)
→
AP
(
s
j
+1
, L
) ;
P
2
(337
,
6)
.
Рассмотрим первое правило
R
337
1
построенной продукционной мо-
дели. Областью кода программного проекта, где наиболее вероятно
возникновение потенциально опасной конструкции (ПОК), являет-
ся любой оператор (функция), реализующий присваивание операнду
x
одного из значений множества ИО
Y
:
CP
1
(
S, N, M, F, o, D, L
) =
=
CP
1
(
o
) =
N
ij
∈
o
asg
(
x, Y
)
.
Ядро первой продукции рассматриваемой эвристики имеет следу-
ющий содержательный вид: “
если
ИО присваивается значение одного
из элементов множества статически предсказуемых значений,
то
этот
объект имеет статически предсказуемое значение”.
Рассмотрим второе правило
R
337
2
построенной продукционной мо-
дели. Областью кода программного проекта, где наиболее вероятно
возникновение ПОК, является любой оператор (функция), реализую-
щий передачу управления ФО, в рассматриваемом случае — любой
оператор (функция), вызывающий функцию API, которая реализует
инициализацию ГПСЧ.
Ядро второй продукции рассматриваемой эвристики имеет вид:
“
если
функция API, реализующая инициализацию ГПСЧ, имеет пред-
сказуемые аргументы,
то
это потенциально опасная конструкция”.
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2016. № 1 105