Проверка входных данных как метод противодействия атакам на приложения.
Правила:
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) сбой в системе защиты