87

Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на
Page 2: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Прикладная теория Application Security

Владимир Кочетков/Positive Technologies/Application Inspector/Team Lead

Образовательная программа «Практическая безопасность»

Page 3: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Agenda

Что?

Теоретический минимум, необходимый для осознанной разработки или анализа защищенности кода

Зачем?

Перестать следовать культу карго

3

Page 4: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Главный вопрос Жизни, Вселенной и всего остального…

4

Page 5: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

…что такое "уязвимость"?

5

Page 6: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?

«Недостаток (слабость) программного (программно-технического) обеспечения средства или информационной системы в целом, который (которая) может быть использована для реализации угроз безопасности информации» - ГОСТ Р 56546-2015

6

Page 7: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?

«Недостаток (слабость) программного (программно-технического) обеспечения средства или информационной системы в целом, который (которая) может быть использована для реализации угроз безопасности информации» - ГОСТ Р 56546-2015

«В чем сила, брат?» (с)

7

Page 8: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?

«Недостаток (слабость) программного (программно-технического) обеспечения средства или информационной системы в целом, который (которая) может быть использована для реализации угроз безопасности информации» - ГОСТ Р 56546-2015

«В чем сила, брат?» (с)

«Набор входных данных, приводящий машину Тьюринга в запрещенную конфигурацию» - Computer Science

8

Page 9: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?

«Недостаток (слабость) программного (программно-технического) обеспечения средства или информационной системы в целом, который (которая) может быть использована для реализации угроз безопасности информации» - ГОСТ Р 56546-2015

«В чем сила, брат?» (с)

«Набор входных данных, приводящий машину Тьюринга в запрещенную конфигурацию» - Computer Science

9

Page 10: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Существующие определения не дают ни малейшего представления о технической сущности уязвимости

10

Page 11: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Правильный вопрос: в чем разница между защищенным и уязвимым кодом?

11

Page 12: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?var cmd = new SqlCommand("SELECT Value FROM Discounts WHERE CouponCode LIKE '" + Request["CouponCode"] + "'");

var connection = new SqlConnection(connectionString);

connection.Open();

cmd.Connection = connection;

var couponValue = cmd.ExecuteScalar();

...

12

Page 13: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?var cmd = new SqlCommand("SELECT Value FROM Discounts WHERE CouponCode LIKE '" + Request["CouponCode"] + "'");

var connection = new SqlConnection(connectionString);

connection.Open();

cmd.Connection = connection;

var couponValue = cmd.ExecuteScalar();

...

Атакующий имеет возможность нарушить целостность выходного потока данных (кода SQL-запроса), манипулируя потоком входных данных (параметром HTTP-запроса), приходящим в операцию выполнения SQL-кода.

13

Page 14: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?var cmd = new SqlCommand("SELECT Value FROM Discounts WHERE CouponCode LIKE @CouponCode");

cmd.Parameters.AddWithValue("@CouponCode ", Request["CouponCode"]);

var connection = new SqlConnection(connectionString);

connection.Open();

cmd.Connection = connection;

var couponValue = cmd.ExecuteScalar();

...

14

Page 15: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?var cmd = new SqlCommand("SELECT Value FROM Discounts WHERE CouponCode = @CouponCode");

cmd.Parameters.AddWithValue("@CouponCode ", Request["CouponCode"]);

var connection = new SqlConnection(connectionString);

connection.Open();

cmd.Connection = connection;

var couponValue = cmd.ExecuteScalar();

...

Атакующий имеет возможность нарушить целостность выходного потока данных (параметра SQL-запроса), манипулируя потоком входных данных (параметром HTTP-запроса), приходящим в операцию выполнения SQL-кода, что может привести к нарушению правил предметной области приложения.

15

Page 16: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?1)

[Authorize(Roles = "All")]

public ActionResult SomeAction()

{

...

return View();

}

2)

[Authorize(Roles = "Baz, Qux")]

public ActionResult SomeAction()

{

...

return View();

}

16

Page 17: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что такое "уязвимость"?1)

[Authorize(Roles = "All")]

public ActionResult SomeAction()

{

...

return View();

}

2)

[Authorize(Roles = "Baz, Qux")]

public ActionResult SomeAction()

{

...

return View();

}

Невозможно оценить защищенность кода, не владея всеми предметными областями приложения (в данном случае, политики контроля доступа).

17

Page 18: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Критерии уязвимостиопределяются множеством предметных областей приложения

18

Page 19: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Примеры предметных областей

Вторичные:

― защищенность;

― отказоустойчивость;

― опыт взаимодействия,

― производительность.

Основные:

― интернет-торговля;

― онлайн-банкинг;

― бухучет;

― … (тысячи их).

Каждое приложение реализует модели как основной предметной области, так и множество моделей вторичных предметных областей

Page 20: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Application Security – вторичная предметная область

20

Page 21: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Предметная область Application Security

21

Page 22: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Сущность

– абстракция реального объекта в некотором контексте, обладающая следующими характеристиками:

• свойство – значимый атрибут абстрагируемого сущностью объекта или одноместное отношение;

• состояние– множество текущих значений всех свойств сущности;

• инвариант– множество допустимых состояний сущности.

Отношение – утверждение, определяющее взаимосвязь изменения состояний сущностей.

22

Page 23: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Предметная область –множество сущностей, их инварианты и отношения

23

Page 24: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Пример: логистика

Сущность: точки на карте города

• свойство: координаты – пара значений «широта-долгота»;

• инвариант: координаты принадлежат перекресткам города или строениям.

Сущность: маршрут

• свойство: путь - упорядоченное множество точек на карте города;

• инвариант: путь непрерывен и проходит по улицам города в соответствии с ПДД;

• отношение: оптимальность – длина пути минимальна для одних и тех же начальной и конечной точек.

Сущности: точка загрузки, точка доставки

• свойство: точка на карте города

24

Page 25: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Задача коммивояжёра

В терминах предметной области логистики:

построить оптимальный маршрут из точки загрузки, проходящий через все точки доставки по одному разу и возвращающийся в точку загрузки.

25

Page 26: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Задача коммивояжёра

В терминах предметной области логистики:

построить оптимальный маршрут из точки загрузки, проходящий через все точки доставки по одному разу и возвращающийся в точку загрузки.

В терминах предметной области теории графов:

Найти гамильтонов цикл минимального веса в полном (дополненном ребрами бесконечной длины) взвешенном графе.

26

Page 27: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Предметная область ApplicationSecurity

27

Page 28: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

«Трясина Тьюринга» - не только об эзотерических языках

28

Page 29: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

"Modeling Computer Insecurity" (Sophie Engle, Sean Whalen and Matt Bishop):

Провести полный анализ защищенности программы можно, только выполнив ее на всех возможных наборах входных данных.

Разработка защищенного кода менее трудоемкий процесс, чем анализ защищенности уже существующего кода.

Вычислимость проблемы защищенности

Статическая оценка защищенности программы является неразрешимой проблемой.

Определение защищенности текущего состояния программы,очевидно, разрешимо

Page 30: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Применимость теоремы Райса к реальным системам – такая же теоретизация, как и идея описывать приложение в виде конечного автомата

30

Page 31: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Приложение стоит рассматривать, как поток управления, обрабатывающий множество потоков данных

31

Page 32: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

32

Page 33: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

33

Page 34: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

34

Page 35: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

35

Page 36: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

36

Page 37: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

37

Page 38: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

38

Page 39: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

39

Page 40: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

40

Page 41: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

41

Page 42: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

42

Page 43: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

43

Page 44: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

44

Page 45: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

45

Page 46: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управленияvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

46

Page 47: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки управления всегда являются производными от потоков данных

47

Page 48: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

48

Page 49: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

49

Page 50: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

50

Page 51: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

51

Page 52: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

52

Page 53: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

53

Page 54: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

54

Page 55: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

55

Page 56: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

56

Page 57: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

57

Page 58: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Потоки данныхvar name = Request.Params["name"];

var key1 = Request.Params["key1"];

var parm = Request.Params["parm"];

var data = string.IsNullOrEmpty(parm) ? new char[0]: Convert.FromBase64String(parm);

string str1;

if (name + "in" == "admin")

{

if (key1 == "validkey")

{

str1 = Encoding.UTF8.GetString(data);

}

else

{

str1 = "Wrong key!";

}

Response.Write(str1);

}

58

str1 ∈ {Encoding.UTF8.GetString(Convert.FromBse64String(Request.Params["parm"])),"Wrong Key!"}

Page 59: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Множества значений всех потоков данных в конкретной точке потока выполненияопределяют состояниеприложения

59

Page 60: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Граф переходов между состояниями приложенияопределяет все возможные потоки вычисления

60

Page 61: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Граф потоков вычисленияявляется семантически-эквивалентной моделью приложения

61

Page 62: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Предметная область ApplicationSecurity

62

Page 63: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Театр начинается с вешалки, а уязвимость – с недостатка

63

Page 64: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Недостаток

- неэффективная реализация моделей предметных областей приложения и контролей инвариантов их сущностей

Примеры контролей Application Security:

• предварительная обработка потоков данных;

• подтверждение аутентичности потоков вычисления;

• проверка прав доступа к потокам данных;

• обеспечение соответствия потока вычисления модели функциональной предметной области;

• …

64

Page 65: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Угроза

- обусловленная недостатком возможность нарушить состояние защищенности потока вычисления, лишив его одного из свойств:

• конфиденциальности;

• целостности;

• доступности;

• авторизованности;

• аутентичности;

• аппелируемости;

• подотчетности;

• достоверности;

• <нужное вписать>

65

Page 66: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Конфиденциальность

Состояние потока вычисления, при котором доступ к нему осуществлен только сущностями, имеющими на это право.

A

E

B

66

Page 67: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Целостность

Состояние потока вычисления, при котором изменения в нем осуществлены только сущностями, имеющими на это право.

A

E

B

C

67

Page 68: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Доступность

Состояние потока вычисления, при котором доступ к нему могут осуществить все сущности, имеющие на это право.

A B

68

Page 69: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Авторизованность

Состояние потока вычисления, при котором его источниками являются только сущности, имеющие на это право.

E

B

A

69

Page 70: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Аутентичность

Состояние потока вычисления, при котором подтверждена подлинность его источника.

‘A’

B

A

70

Page 71: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Аппелируемость

Состояние потока вычисления, при котором его источник не может отказаться от того, что он является таковым.

A B

71

Page 72: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Уязвимость – состояниеприложения, в котором возможна реализация угрозы

72

Page 73: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Невозможность реализации угрозы в каждой точке потока вычисления* является инвариантом защищенности приложения

73

* …пересекающего границу доверия

Page 74: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Уязвимость бизнес-логики–состояние реализации угрозычерез нарушение правил основной предметной области приложения

74

Page 75: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

То, что может сделать с потоками вычисления атакующий, нарушив инварианты сущностей предметных областей, называется угрозой (threat)

То, где и благодаря чему он может это сделать, называется уязвимостью(vulnerability), обусловленной недостатком (weakness)

То, как он может это сделать, называется атакой (attack)

То, с какой вероятностью у него это удастся и какие последствия может повлечь, называется риском (risk)

Иными словами…

75

Page 76: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

То, что не позволяет атакующему провести атаку, обеспечивает защищенность (security)

76

Page 77: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

То, что минимизирует риск, обеспечивает безопасность (safety)

77

Page 78: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Акцентировать внимание разработчикам и пентестерамнеобходимо на причинах*, а не на следствиях**!

* недостатки** уязвимости, атаки или риски

78

Page 79: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Причинно-следственные связи

Недостаток Угроза

Уязвимость Атака

Риск

Незащищенность

Небезопасность

79

Page 80: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Выводы

Разработка защищенного кода сводится к реализации контроля инвариантов всех сущностей основной предметной области и области защищенности приложения

Анализ защищенности кода сводится к оценке эффективности реализованных контролей

Ни то, ни другое – невозможно без досконального изучения основной предметной области и области защищенности приложения

80

Page 81: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Классификация

Классификация уязвимостей возможна по:

― предметной области; // защищенность приложения

― недостатку; // неэффективная предварительная обработка потоков данных

― потоку вычисления; // формирующие первообразные потоков выполнения

― угрозе; // нарушение целостности

// уязвимость к атакам инъекций (в зависимости от интерпретатора потока данных: XSS, SQLi, XMLi, XPATHi, Path Traversal, LINQi, XXE и т.п.)

Page 82: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Классификация

Классификация уязвимостей возможна по:

― предметной области; // защищенность приложения

― недостатку; // неэффективное подтверждение аутентичности источника потока вычисления

― потоку вычисления; // HTTP-запрос, приводящий к изменению состояния приложения

― угрозе; // нарушение аутентичности

// уязвимость к атакам CSRF

Page 83: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Классификация

Классификация уязвимостей возможна по:

― предметной области; // онлайн-торговля

― недостатку; // неэффективный контроль использования погашенных купонов на скидку

― потоку вычисления; // транзакция оплаты заказа

― угрозе; // нарушение авторизованности

// уязвимость к атакам на бизнес-логику (повторное использование погашенных купонов)

Page 84: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Что будет, если поиграть в алхимию с критериями классификации?

84

Page 85: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

85

Page 86: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на

Вопросы?

Владимир Кочетков

[email protected]

@kochetkov_v

/Positive Technologies/Application Security

/Application Inspector/Compiling and Low-Level Applications Analysis/Team Lead

Page 87: Прикладная теория - Positive Technologies › upload › corporate › ru-ru › ...2015/11/12  · Пример: логистика Сущность: точки на