Дефекты и уязвимости в программных компонентах

Понятия дефекта и уязвимости можно определить следующим образом:

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

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

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

Исследование моделей обнаружения уязвимостей при формировании нормативного профиля при сертификации программных продуктов и основных подходов при их оценке

Разработка и использование математических моделей надежности программного обеспечения (МНПО) в последние годы является очень распространенной техникой, используемой для обеспечения надежности ПО [43]. МНПО показывают, что учитывая, что с течением времени ошибки находятся и исправляются, то в целом количество оставшихся дефектов в каждом отдельном программном продукте должно становиться меньше. Следовательно, интенсивность нахождения уязвимостей и дефектов постепенно идет на спад и в конце концов достигает насыщения. Такие модели повышения надежности часто используются для определения момента, когда программную систему можно выпускать в использование. Одновременно они показывают, какую интенсивность появления ошибок можно ожидать после выпуска продукта.

Постановка задачи исследований и обоснование методики их проведения