Обзор современных подходов для поиска ошибок и недекларируемных возможностей в программном обеспечении

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 03.05.2019
Размер файла 16,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

ОБЗОР СОВРЕМЕННЫХ ПОДХОДОВ ДЛЯ ПОИСКА ОШИБОК И НЕДЕКЛАРИРУЕМНЫХ ВОЗМОЖНОСТЕЙ В ПРОГРАММНОМ ОБЕСПЕЧЕНИИ

В.О. Сидорович

Научно-исследовательский институт

технической защиты информации,

г. Минск, Беларусь

Введение

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

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

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

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

1. Cтатический анализ

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

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

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

поиск ошибка программное обеспечение

2. Динамический анализ

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

3. Фаззинг

Процесс генерации различных наборов входных данных с последующей передачей их программе получил название «фаззинг» (fuzzing), его целью является получение набора данных, выявляющих дефекты работы целевой программы. При этом не все пути исполнения программы представляют интерес, и для более интеллектуальной генерации входных данных требуется учитывать трассу выполнения программы. Для решения этой задачи программа исполняется неким транслятором, который позволяет анализировать пути выполнения, инструментировать исполняемый код или снимать трассу исполнения для последующего анализа. Попытка сгенерировать все возможные сочетания входных данных приводит к экспоненциальному росту их объема. А значит, от транслятора требуется возможность: производить анализ выбранных или интересующих для анализа путей; генерации входных данных, обеспечивающих переход по интересующим путям для увеличения покрытия; возможность параллельного запуска системы с разными входными данными для ускорения анализа.[2]

Заключение

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

Список литературы

1. Истинная цена программных ошибок [Электронный ресурс]. - 2009. - Режим доступа: https://www.osp.ru/os/2009/03/8158133/ - Дата доступа: 30.04.2009.

2. Технологии статического и динамического анализа уязвимостей программного обеспечения [Электронный ресурс]. - 2014. - Режим доступа: http://cyberrus.com/wp-content/uploads/2014/11/vkb_04_04.pdf - Дата доступа: 2014.

3. Саттон М. Fuzzing: исследование уязвимостей методом грубой силы / М. Саттон А. Грин, - Пер. с англ. - СПб.:Симовол-Плюс. - 560 с

4. Использование статического и динамического анализа для повышения качества продукции и эффективности разработки [Электронный ресурс]. - 2003. - Режим доступа: http://www.swd.ru/print.php3?pid=828/ - Дата доступа: 2003.

Размещено на Allbest.ru

...

Подобные документы

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

    курсовая работа [1,6 M], добавлен 20.12.2012

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

    курсовая работа [303,4 K], добавлен 19.01.2016

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

    реферат [176,2 K], добавлен 27.08.2009

  • Сущность метода перестановочного декодирования. Особенности использования метода вылавливания ошибок. Декодирование циклического кода путем вылавливания ошибок. Распознавание пакетов ошибок как особенность циклических кодов. Вычисление вектора ошибок.

    доклад [20,3 K], добавлен 24.05.2012

  • Концепция адаптивного управления безопасностью. Средства анализа защищенности сетевых протоколов и сервисов. Компоненты и архитектура IDS. Классификация систем обнаружения атак. Поиск уязвимостей в современных системах IDS. Методы реагирования на атаки.

    курсовая работа [488,5 K], добавлен 13.12.2011

  • Обзор существующих технологий разработки программного обеспечения. Описание платформы NET Framework. Принцип работы платформы: компиляция исходного кода; процесс загрузки и исполнения кода; IL-код и верификация. Новые возможности платформы NET Framework.

    реферат [30,7 K], добавлен 01.03.2011

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

    курсовая работа [3,0 M], добавлен 19.11.2009

  • Технология разработки и внедрения программного обеспечения автоматизированной системы управления. Классификация ошибок в программах на этапе эксплуатации системы и общие задачи процесса ее отладки. Методы обнаружениея и локализации ошибок в программах.

    контрольная работа [480,4 K], добавлен 25.10.2010

  • Изучение возможностей среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных средств. Способы работы с динамическими массивами. Оптимизация программного кода.

    курсовая работа [1,0 M], добавлен 23.12.2016

  • Анализ технических средств и современных технологий разработки программного обеспечения. Разработка программы для упрощения поиска студентов. Создание учетных записей администратора и обычного пользователя. Изучение правил построения программного кода.

    курсовая работа [1,9 M], добавлен 30.09.2016

  • Проблема надежности программного обеспечения, ее показатели и факторы обеспечения. Методы контроля процесса разработки программ и документации, предупреждение ошибок. Этапы процесса отладки ПО, приемы структурного программирования и принцип модульности.

    презентация [379,5 K], добавлен 30.04.2014

  • Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.

    отчет по практике [296,1 K], добавлен 19.04.2015

  • Выбор средства реализации программного продукта. Разработка программного комплекса (ПК). Руководство администратору и пользователю к нему. CMS Joomla - программа, включающая в себя различные инструменты для изготовления веб-сайта. Обработка ошибок в ПК.

    курсовая работа [695,6 K], добавлен 19.06.2010

  • Проблема автоматизации нахождения ошибок подключения к корпоративной сети клиентских рабочих мест в ОАО "Сбербанк России". Требования к структуре и функционированию системы. Описание информационной модели. Выбор программного обеспечения для реализации.

    дипломная работа [3,6 M], добавлен 25.07.2015

  • Теоретические сведения об алгоритмах поиска подстроки в строке. Глобализация информации в сети Internet. Интеллектуальный поиск. Алгоритм последовательного (прямого) поиска, Рабина и их применение. Анализ алгоритмов. Реализация программного кода.

    курсовая работа [230,8 K], добавлен 12.02.2009

  • Внешнее исследование программного продукта, анализ кода, блок-схемы алгоритма модуля. Оценка качества защиты программы средствами статического и динамического исследования. Осуществление "мягкого" и "жесткого" взлома. Пути оптимизации механизмов защиты.

    курсовая работа [1,3 M], добавлен 22.05.2016

  • Исследование объектно-ориентированного подхода к проектированию программного обеспечения будильника. Модель программного обеспечения. Взаимодействие между пользователями и системой. Диаграммы и генерация программного кода при помощи средств Rational Rose.

    курсовая работа [355,8 K], добавлен 26.09.2014

  • Изучение алгоритмов тестирования клавиатуры, CMOS-памяти и спикера с учетом выявленных особенностей процессов их диагностики. Исследование процессов самотестирования компьютерной системы при включении. Звуковые коды ошибок, выдаваемые процедурой POST.

    лабораторная работа [19,1 K], добавлен 06.08.2010

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

    курсовая работа [1,9 M], добавлен 08.01.2012

  • Обзор систем управления сайтом, регистрации и отслеживания ошибок. Создание проекта "Senet" в системе регистрации и отслеживания проблем Mantis. Расчет затрат на разработку и эксплуатацию программного обеспечения. Охрана труда и техника безопасности.

    дипломная работа [1,7 M], добавлен 24.06.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.