Проверка входных данных как метод противодействия атакам на приложения.

Правила:

1) все входные данные зловредны, пока не доказано обратное

2) проверку корректности данных следует выполнять при каждом пересечении имени границы между ненадежной и доверенной среды

Границы доверенного кода:

Рис.1

3) при проверки входных данных следует пропускать только корректные данные, все остальное отбрасывать

if (str1==str2)

Регулярные выражение – набор символов, которые можно сравнить со строкой, чтобы определить удовлетворяет ли формат строки определенным требованиям.

Пример на шарп:

If (Regex.IsMMatch(“^\d {5}$”, str))

// ^ - начало строки, срока повторяется 5 раз, а потом конец строк

//good

Else

// bad

Пример: 12345 – удовлетворяет, а 1234 – нет, так как не пять символов

36. Влияние сообщений об ошибках на защищённость программы.

Не следует показывать подробные сообщения об ошибках обычным пользователям. Поскольку, подробные inf о внутренне работе приложении могут использоваться в нахождение уязвимости.

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/event log/Application/My Application

Using namespace System.Diagnostics;

….

EventLogEntryType type=EventLogEntryType.Error;

EventLog myLog=new EventLog(“Application”);

myLog.Source = “My Application”;

….

myLog.WriteEntry(“Exception:”+Message,type,eventide,category”);

 

37. Атака типа «Отказ в обслуживании».

6.3.9 DoS атаки (Denial of Service)

Наиболее часто встречающиеся dos атаки:

1) атаки, вызывающие крах приложения или ОС

2) атаки, вызывающие перегрузку процесса. Цель: заставить приложение зависнуть

3) атаки, вызывающие нехватку памяти

4) атаки, вызывающие нехватку ресурсов

38. Способы защиты программного обеспечения: Регистрационные коды.

5.4 способы защиты ПО от несанкционированного тиражирования

5.4.1 регистрационные коды

#define

#ifdef

#ifndef

#else

#endif

#define FULLVERSION

#ifdef FULLVERSION

/* код полной версии*/

#else

/* код демо-версии*/

#endif

Все методы проверки правильности кодов можно условно разделить на три категории:

1) алгоритмические, основанные на принципе черного ящика

2) алгоритмический, основанный на математически сложной задачи. Не нуждаются в сокрытии реализации

3) табличный метод – генерируется коды и оформляются в виде таблицы. Недостаток: таблица занимает много место

39. Способы защиты программного обеспечения: Привязка к носителям информации.

5.4.2 привязка к носителям inf

Программа не может работать без имеющегося оригинального диска.

1) Защищаемая программа проверяет:

метку диска

серийный номер

2) Незначительных изменений параметров диска на него можно записать больше данных, чем при обычной записи

3) При записи оригинального диска отклониться от стандартной записи на диск

4) Внесение нарушений в область данных диска, которые приводят к ошибкам чтения

 

40. Способы защиты программного обеспечения: Аппаратные ключи.

5.4.3 аппаратные ключи

классификация аппаратных ключей:

1) с памятью: имеют определенное число ячеек, с которых можно считывать и записывать

2) с неизвестным алгоритмам: на ней основывается секретность. Недостаток: Сущ, возможность табличного эмулятора

3) с известным алгоритмом

4) с программируемым алгоритмом

41. Способы защиты программного обеспечения: Протекторы.

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

Недостатки использования протекторов:

1) вызывают дополнительный расход памяти и замедляют работу программ.

2) Защищаемая программа может работать нестабильно

5.5 избыточная защита приложений

последствия применения избыточной защиты:

1) неудобство для пользователей (пример, слишком длинные регистрационные коды…)

2) снижение производительности. Вызвано дополнительными проверками

3) сбой в системе защиты