УГРОЗЫ НАДЕЖНОСТИ И БЕЗОПАСНОСТИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Уязвимости программного обеспечения

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

Далее приведем классификацию уязвимостей по критерию «причина возникновения» в общем виде. Данная классификация включает два типа уязвимостей.

Первый тип — уязвимости, вызванные дефектами (ошибки, проблемы) проектирования и программирования системы, такими как [2, 3, 4]:

  • • ошибки обработки и представления данных;
  • • неправильная обработка входных и выходных данных;
  • • отсутствие проверки и представления ввода;
  • • некорректное кодирование и экранирование вывода;
  • • некорректная обработка входных данных;
  • • ошибочная внутренняя трансформация данных;
  • • ошибки, связанные с использованием строк;
  • • ошибки типов данных;
  • • ошибки представления данных;
  • • числовые ошибки;
  • • ошибки определения структур данных;
  • • ошибки доступа к данным;
  • • ошибки управления информацией;
  • • неверный доступ к индексируемому ресурсу;
  • • ошибки модификации постоянных данных;
  • • нарушение внутренней структуры и зависимости;
  • • некорректное использование API;
  • • ошибки, связанные с инкапсуляцией;
  • • ошибки обработки событий и состояний;
  • • ошибки временных меток и внутреннего состояния;
  • • нарушение логики функционирования;
  • • некорректно написанные обработчики;
  • • некорректная обработка ошибок и внештатных ситуаций;
  • • неправильное использование ресурсов и внутренних механизмов системы;
  • • ошибки при использовании механизмов безопасности;
  • • ошибки инициализации и очистки областей памяти;
  • • некорректное использование ссылок и псевдонимов;
  • • некорректное использование указателей;
  • • ошибки, свойственные определенному типу функционала;
  • • ошибки при реализации пользовательского интерфейса;
  • • некорректное использование сетевых протоколов;
  • • присутствие в коде намеренно и ненамеренно внедренных объектов (закладок);
  • • отклонения от стандартов качества проектирования, реализации, документирования;
  • • несоблюдение качества кода;
  • • нарушения принципов проектирования безопасного ПО;
  • • выпуск неполной или некорректной документации.

Второй тип — уязвимости, вызванные дефектами конфигурирования и управления системой и ее окружением, а именно дефекты:

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

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

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >