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

(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