Гарантия безопасности программного обеспечения - Software security assurance

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

Поскольку количество угроз, направленных конкретно на программное обеспечение, увеличивается, необходимо обеспечить безопасность нашего программного обеспечения, которое мы производим или закупаем. «Зависимость от информационных технологий делает обеспечение программного обеспечения ключевым элементом непрерывности бизнеса, национальной безопасности и внутренней безопасности».[1]

Что такое гарантия безопасности программного обеспечения?

Software Security Assurance (SSA) - это процесс обеспечения того, чтобы программного обеспечения разработан для работы на уровне безопасности, который соответствует потенциальному ущербу, который может возникнуть в результате потери, неточности, изменения, недоступности или неправильного использования данных и ресурсов, которые он использует, контролирует и защищает.

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

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

Что вызывает проблемы с безопасностью программного обеспечения?

Все уязвимости безопасности в программном обеспечении являются результатом ошибки безопасности или дефекты в программном обеспечении. В большинстве случаев эти дефекты возникают по двум основным причинам: (1) несоответствие или невыполнение требований; и (2) ошибка или упущение в требованиях к программному обеспечению.

Несоответствие или невыполнение требований

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

Ошибки или упущения в требованиях к программному обеспечению

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

Деятельность по обеспечению безопасности программного обеспечения

Есть два основных типа действий Software Security Assurance.

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

Как минимум, программа обеспечения безопасности программного обеспечения должна гарантировать, что:

  1. Для программного обеспечения была проведена оценка безопасности.
  2. Для программного обеспечения установлены требования безопасности.
  3. Требования безопасности установлены для процессов разработки и / или эксплуатации и сопровождения программного обеспечения (O&M).
  4. Каждый обзор или аудит программного обеспечения включает оценку требований безопасности.
  5. А управление конфигурацией и корректирующее действие существует процесс, обеспечивающий безопасность существующего программного обеспечения и гарантирующий, что любые предлагаемые изменения не приведут к непреднамеренным нарушениям безопасности или уязвимости.
  6. Физическая безопасность программного обеспечения адекватна.

Строительство в безопасности

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

Инструменты и техники

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

Перечень общих недостатков

Один из способов повысить безопасность программного обеспечения - лучше понять наиболее распространенные недостатки что может повлиять на безопасность программного обеспечения. Имея это в виду, в настоящее время существует программа на уровне сообщества под названием "Перечень общих недостатков",[2] который спонсируется The Mitre Corporation выявить и описать такие слабые места. Список, который в настоящее время находится в очень предварительной форме, содержит описания распространенных слабых мест, ошибок и недостатков программного обеспечения.

Архитектура безопасности / анализ дизайна

Архитектура безопасности / design analysis подтверждает, что проект программного обеспечения правильно реализует требования безопасности. Вообще говоря, есть четыре основных метода, которые используются для анализа архитектуры / дизайна безопасности.[3]

Логический анализ

Логический анализ оценивает уравнения, алгоритмы, и логика управления разработки программного обеспечения.

Анализ данных

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

Анализ интерфейса

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

Анализ ограничений

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

Проверки, проверки и пошаговые инструкции безопасного кода

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

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

Неофициальные обзоры

Неформальные проверки безопасного кода могут проводиться по мере необходимости. Для проведения неформальной проверки разработчик просто выбирает одного или нескольких рецензентов и предоставляет и / или представляет материалы для рецензирования. Материал может быть как неформальным, так и псевдокод или рукописная документация.

Официальные обзоры

Формальная проверка защищенного кода проводится в конце фазы разработки для каждого программного компонента. Заказчик программного обеспечения назначает группу формальной проверки, которая может принять или повлиять на решение «годен / не годен», чтобы перейти к следующему этапу жизненный цикл разработки программного обеспечения.

Инспекции и пошаговые инструкции

Проверка или пошаговое руководство безопасного кода - это подробное пошаговое или построчное исследование продукта. исходный код ) основы. Целью проверки или пошагового руководства безопасного кода является поиск ошибок. Как правило, группа, которая выполняет проверку или пошаговое руководство, состоит из коллег из разработчиков, техника безопасности и гарантия качества.

Тестирование безопасности

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

Смотрите также

Рекомендации

  1. ^ Карен Мерседес, Теодор Виноград «Увеличение жизненного цикла разработки для создания безопасного программного обеспечения» В архиве 2012-03-30 в Wayback Machine, Центр данных и анализа программного обеспечения, Октябрь 2008 г.
  2. ^ «Проект подсчета общих недостатков». Получено 26 августа 2010.
  3. ^ Тестирование безопасности веб-приложений