Разделы портала

Онлайн-тренинги

.
Деревья атак и их применение при анализе проблемы безопасности и защищённости программных продуктов
02.10.2008 22:03

Автор: Полаженко Сергей

Деревья атак (attack trees), как метод анализа информационных систем применяются очень давно, в литературе их также можно встретить и под другими именами, например, «деревья ошибок» (fault trees) или деревья риска (risk trees). Метод, как правило, применяется на этапе разработки и уточнения требований к разрабатываемому программному продукту, а также при разработке его планов тестирования. Это достаточно мощный и гибкий инструмент для анализа возможных проблем функционирования продукта и поиска путей разрешения этих проблем.

Содержание

Описание деревьев атак

Деревья атак представляют собой описание вариантов проведения атаки для достижения некоторой цели, которая ставится во главу дерева атаки (является его вершиной). Для каждого программного продукта может быть определено достаточно большое количество угроз. Для каждой угрозы строится своё собственное дерево. Каждый узел в дереве представляет собой некоторую подцель, достижение которой, в случае выполнения ряда условий, позволяет злоумышленнику подняться по дереву на более высокий уровень и так до тех пор, пока злоумышленник не достигнет вершины дерева (конечной цели). В последнем случае считается, что злоумышленник успешно реализовал атаку.

Узел дерева считается достигнутым, если:

А) достигнуты все подцели этого узла (И-декомпозиция, рисунок 1);

Б) достигнута хотя бы одна подцель этого узла (ИЛИ-декомпозиция, рисунок 2);

Рисунок 1. И-декомпозиция целей в дереве атак. Графическая (а) и текстовая (б) форма.

На рисунке 1 изображено два уровня дерева атаки, в котором цель G0 достигается при условии достижения всех целей нижележащего уровня: G1, G2, ..., Gn (И-декомпозиция). На этом же рисунке справа (часть б) приведена также текстовая форма представления И-декомпозиции.

Аналогично может быть изображена ИЛИ-декомпозиция в дереве атак (рисунок 2). Как уже отмечалось, в случае ИЛИ-декомпозиции, G0 считается достигнутой в случае, когда хотя бы одна из целей G1, G2, ..., Gn достигнута.

 

Рисунок 2. ИЛИ-декомпзиция целей в дереве атак. Графическая (а) и текстовая (б) форма.

Дерево атак в общем случае представляет собой композицию представленных И и ИЛИ декомпозиций.

Рисунок 3. Пример более сложного дерева атак.

Текстовая форма дерева атак, изображённого на рисунке 3 может быть представлена в виде:

Текстовая форма дерева атак

В приведённой текстовой версии также продемонстрирован порядок нумерации элементов. При помощи такой иерархической нумерации можно не писать полностью название узла, а просто привести его номер. По номеру узла также можно узнать, на каком уровне определён узел, и какие узлы находятся выше (ниже) него. Так, например, номер 2.2 говорит, что это узел второго уровня (по количеству чисел в номере узла), который находится в дереве под узлом с номером 2, а дочерними узлами для данного узла будут узлы 2.2.1 и 2.2.2.

Вариантами реализации атак для достижения цели G0 может быть любая из нижеприведённых последовательностей действий злоумышленника (в скобках приведены те же самые варианты, только путём ссылки на номер узла, а не на его название):

  • G 3, G 4 (1.1, 1.2);
  • G 5 (2.1);
  • G 7, G 8 (2.2.1, 2.2.2);

Так достижение целей G3, G4 приводит к реализации цели G1, что является достаточным для того, чтобы достигнуть цель G0 (ввиду ИЛИ-декомпозиции).

Достижение цели G5 позволяет получить прямой доступ к цели G0 по другой ветке дерева (через промежуточную цель G2, которая выполняется по той причине, что цель G5 достигнута).

В случае если злоумышленник не может достигнуть ни одной из целей G3- G5, то у него остаётся единственная возможность реализовать обе цели G7 и G8, что приведёт его к реализации цели G6, что достаточно, для того, чтобы считать цели G2, а в последствии и G0 достигнутыми. То есть и в этом случае атака (конечная цель которой G0 — вершина дерева) также проходит успешно.

В тоже время, очевидно, что наличие у злоумышленника реализованных целей G3 и G7 ни даёт ему никаких преимуществ.

Может показаться, что злоумышленник вряд ли будет прибегать к вариантам атак «G3, G4» и «G7, G8», когда есть гораздо более короткий путь G5, который сразу ведёт к заветной цели, однако это не совсем так. В дереве атак на данный момент не учтена сложность реализации той или иной цели. Так возможно, что цель G5 очень трудноосуществима и требует значительных усилий, подготовки и затрат со стороны злоумышленника. В результате последнему будет выгоднее обратить внимание на другие, хотя и более длинные, но всё-таки более простые для осуществления пути компрометации программы. Задача оценки сложности выполнения той или иной цели в дереве атак решается на этапе ранжирования вариантов атак.

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

Применение деревьев атак

Как уже отмечалось выше, деревья атак очень часто применяются для анализа потенциальных проблем функционирования разрабатываемых и поиска путей разрешения этих проблем. В этой публикации мы будет делать основной упор на анализ потенциальных проблем, связанных с реализацией безопасных и защищённых программ.

При разработке приложения определяются активы — ценные ресурсы и свойства разрабатываемого приложения, те, объекты, безопасность которых следует обеспечить при разработке приложения. Например, данные, которые передаются от клиента программы её серверу, могут быть активом, если они представляют некоторую ценность для одной из сторон:

  • возможно, передаваемая информация секретна, и поэтому её стоит зашифровать (обеспечение конфиденциальности информации);
  • возможно, это информация, которая должна быть передана в неизменённом виде — тогда необходимо осуществить меры по контролю целостности передаваемой информации (обеспечение целостности информации);
  • возможно, важно подтвердить, что переданная информация действительно была послана (создана) именно этим клиентом, а не каким-то подставным лицом (обеспечение аутентичности информации);
  • возможно, необходимо обеспечить гарантии того, что клиент всегда может рассчитывать на доступность сервера, для передачи информации (обеспечение доступности информации);
  • возможно, необходимо обеспечить гарантии передачи данных (обеспечение надёжности канала связи);
  • возможно, требуется подтвердить факт передачи данных (подотчётность функций передачи данных), и т.д.

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

Активами могут быть не только данные, но также функции программного продукта, сам продукт и его компоненты и некоторые другие объекты и их свойства. Ключевым моментом является ценность этих объектов для пользователей, разработчиков или владельцев разрабатываемого программного продукта.

Применение деревьев атак позволяет несколько упростить задачу аналитиков при исследовании проблемы безопасности и защищённости разрабатываемого программного продукта. Деревья атак обладают высокой наглядностью и позволяют хорошо структурировать всевозможные варианты потенциальных проблем для каждого из активов приложения.

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

Примеры построения деревьев атак для учебных задач можно найти в работах [1,2].

Разработка контрмер

Деревья атак хороши не только для разработки вариантов атак, определения наиболее опасных и подлежащих обязательному исключению вариантов, но также и для разработки контрмер. Каждый вариант атаки должен быть закрыт контрмерой (на рисунке 4 контрмеры изображены в виде кругов с метками C1.. C4). Некоторые контрмеры могут закрывать сразу несколько вариантов (например, для подцели G4 — контрмера C2), а для некоторых вариантов, возможно, потребуется сразу несколько контрмер (для подцели G5 — контрмеры C2 и C3).

Примеры контрмер: шифрование, реализация списков разграничения доступа, использование протоколов SSL, IPSec и т.д.

Штриховая линия на рисунке 4 означает, что узлы G4 и G5 маловероятны в случае организации атаки.

 

Рисунок 4. Дерево атак с указанием контрмер для каждого варианта реализации атаки.

Разработка библиотек и шаблонов атак

Ряд атак могут быть типичными для множества программных продуктов. Для таких атак можно разработать пример дерева атаки (шаблон) и обращаться к этому шаблону, всякий раз, когда встаёт необходимость добавления такого вида атаки для дерева атаки разрабатываемого программного продукта.

Шаблоны атак, которые обладают одинаковыми признаками или областью воздействия разумно объединять в библиотеки атак.

Подробнее вопросы построения и применения шаблонов и библиотек (профайлов) атак можно найти в [1].

Работа с шаблонами и библиотеками атак поддерживается в профессиональных программных продуктах, предназначенных для работы с деревьями атак, такими как, например, Amenaza SecurITree.

Инструментальные средства

Деревья атак довольно распространённый метод анализа информационных систем и для работы с ними разработано достаточно большое количество различных программных средств.

Microsoft Visio

В популярном офисном продукте Microsoft Visio 2003 имеется шаблон «Fault Tree Analysis Shapes», который доступен через меню «Файл —> Новый —> Business Process». Изображения деревьев атак, представленные в этой статье, были выполнены именно при помощи этого шаблона.

Следует отметить то, что Microsoft Visio 2003 позволяет определять особые свойства объектов (меню «Форма Особые свойства»), что позволяет приписывать элементам дерева собственные атрибуты, характеризующие опасность атаки (вероятность её проявления, величина возможного ущерба и т.п.).

Рисунок 5. Создание деревьев атак в среде Microsoft Visio 2003.

Однако в Microsoft Visio 2003 отсутствуют возможность удобной навигации по элементам: возможность свернуть, развернуть дерево или его ветвь, а также нет поддержки каких-либо специфических для деревьев атак функций, как-то: создание текстового представления дерева, построение вариантов реализации атак, расчёт опасности атак и прочее.

FreeMind

Программное средство FreeMind напрямую не ориентированно на работу с деревьями атак. Однако оно предоставляет простой и удобный интерфейс для создания древовидных ассоциативных карт, которые легко могут быть использованы в качестве деревьев атак. Пользователь в программе может определять внешний вид узлов, что позволяет для каждого из специальных типов узлов деревьев атак: И/ИЛИ-декомпозиции, корневого узла, контрмер – задать собственный вид отображения, который затем использовать для всех узлов этого типа. Программа обладает удобными функциями навигации по такой древовидной структуре, возможности сворачивать, модифицировать и комментировать узлы деревьев.

Рисунок 6. Программное средство FreeMind.

Одно из преимуществ программы, является то, что это бесплатное и свободно распространяемое программное средство, реализованное на языке Java, что обеспечивает возможность использования программы практически во всех популярных операционных средах.

Amenaza SecurITree

Завершим наш краткий обзор программных средств для работы с деревьями атак кратким описанием профессионального коммерческого пакета для разработки деревьев атак Amenaza SecurITree. Продукт специально разработан для работы именно с деревьями атак, обладает удобным интерфейсом, продукт хорошо документирован и обладает большим количеством разнообразных специализированных функций, такими как, например:

  • построение текстовых форм для деревьев;
  • построение перечня вариантов реализации атак;
  • определение индикаторов атак ля расчёта их характеристик (таких как, например, степень опасности того или иного варианта атак);
  • возможности создания и использования шаблонов и библиотек атак и т.д.

 

Программное средство Amenaza SecurITree.

Рисунок 7. Программное средство Amenaza SecurITree.

Также как и предыдущее программное средство, Amenaza SecurITree может быть использовано практически во всех популярных операционных средах.

Заключение

Деревья атак достаточно универсальный, гибкий и мощный механизм для изучения проблем безопасности и защищённости произвольных информационных систем. Следует отметить, что применять его лучше всего в системах с невысокими требованиями по безопасности, так как для систем с высокими требованиями следует искать более формальные пути.

Основные преимущества метода:

  • универсальность — метод подходит практически для любых видов информационных систем;
  • гибкость — метод легко модифицировать под свои нужды, создавая свои виды узлов, связей и прочее;
  • простота — сам по себе метод достаточно прост для применения, основные проблемы касаются задачи построения полного и всестороннего обзора проблемы безопасности и защищённости разрабатываемого программного продукта;
  • наглядность — как графическая, так и текстовая форма представления деревьев атак обладают большой наглядностью;
  • инструментальная поддержка — на сегодня существует множество различных как специальных, так и универсальных инструментов для работы с такими структурами, как деревья атак.

Основные ограничения, связанные с применением деревьев атак:

  • проблема полного охвата проблемы безопасности. Обеспечение безопасности — это системная задача. Защищённость всего приложения определяется защищённостью его самого слабого звена. Поэтому при разработке деревьев атак требуется применение системного подхода, всесторонний анализ каждого варианта компрометации актива. Так для данных должны быть идентифицированы все угрозы нарушения их целостности, доступности, конфиденциальности и аутентичности, для функций — угрозы доступности, несанкционированного доступа и нарушения свойств подотчётности, для самого приложения и его компонент — угрозы несанкционированного использования, подмены, препятствия корректному функционированию и т.д.
  • проблема глубины обзора каждого варианта атаки. Чем боле детально будет рассмотрен каждый вариант организации атаки на активы приложения — тем больше уверенности, что учтены все допустимые варианты атак. Однако излишняя подробность может усложнять анализ проблем безопасности и защищённости разрабатываемого приложения.
  • проблема оценки значимости вариантов атак. Как уже отмечалось, маловероятные пути реализации атак можно не включать в деревья атак, чтобы не загромождать деревья атак. Однако определить степень вероятности и критичности того или иного пути реализации атаки достаточно сложно. Например, угроза, которая опасна только для 0.1% от числа всех пользователей, кажется маловероятной, однако её степень опасности может оказать настолько большой, что пользователи будут в первую очередь бояться попасть в эти самые 0.1%, а затем уже думать о тех преимуществах, которые даёт предлагаемое им программное обеспечение.

Список использованных источников