Уязвимости веб-систем (часть 6, заключительная)

Таксономия причин возникновения уязвимостей. Проведенный анализ статистики случаев нарушений безопасности Web-систем показывает, что все случаи произошли по одной из таких причин (табл.5):

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

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

3. Отсутствие идентификации и/или аутентификации субъектов и объектов. Во многих системах идентификация и аутентификация субъектов и объектов взаимодействия находится на весьма примитивном уровне – субъект может сравнительно легко выдать себя за другого субъекта и воспользоваться его полномочиями доступа к информации и механизмам управления системой. Часто идентификация и аутентификация носят непоследовательный характер и не распространяются на все уровни взаимодействия.

4. Отсутствие механизмов локализации уязвимости в пределах компонента системы. Наличие уязвимости в одном из компонентов системы автоматически приводит к уязвимости всей системы. Использование переменных, имеющих глобальную область видимости, позволяет компоненту системы, не связанному с осуществлением функций безопасности, вносить изменения в переменные содержащие такие данные, как: идентификатор пользователя, список групп, в которые входит данный пользователь, права доступа и т.д. Что дает возможность разработчикам модулей системы практически иметь полный контроль над всеми компонентам и информационными ресурсами.

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

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

7. Отсутствие проверки допустимых значений параметров. Многие классы атак, указанные в табл.3, осуществимы только потому, что во многих Web-системах отсутствует проверка полученных данных перед последующим их использованием.

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

Таблица 5

Таксономия причин возникновения уязвимостей

Таксономия причин возникновения уязвимостей

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

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

Рис.1. Взаимосвязь таксономии причин возникновения уязвимостей и классификации по этапам внедрения

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

Рис.2. Взаимосвязь таксономии причин возникновения уязвимостей и классификации по размещению в системе

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

Добавить комментарий

Ваш адрес email не будет опубликован.

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