Диссертация (Разработка программного комплекса оценки качества и надежности программных продуктов без исходных текстов), страница 4
Описание файла
Файл "Диссертация" внутри архива находится в папке "Разработка программного комплекса оценки качества и надежности программных продуктов без исходных текстов". PDF-файл из архива "Разработка программного комплекса оценки качества и надежности программных продуктов без исходных текстов", который расположен в категории "". Всё это находится в предмете "технические науки" из Аспирантура и докторантура, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "диссертации и авторефераты" в общих файлах, а ещё этот архив представляет собой кандидатскую диссертацию, поэтому ещё представлен в разделе всех диссертаций на соискание учёной степени кандидата технических наук.
Просмотр PDF-файла онлайн
Текст 4 страницы из PDF
При этом лексемами являются сигнатуры.В данном случае осуществляется поиск сигнатур следующих классов:- сигнатуры вирусов;- сигнатуры элементов НДВ;- сигнатуры (лексемы) «подозрительных функций»;- сигнатуры штатных процедур использования системных ресурсов ивнешних устройств.Поиск лексем (сигнатур) реализуется с помощью специальных программ сканеров.18Синтаксическийверификационныйанализпредполагаетпоиск,распознавание и классификацию синтаксических структур НДВ, а такжепостроение структурно-алгоритмической модели самой программы.Семантический анализ предполагает исследование программы изучениясмысла составляющих ее функций (процедур) в аспекте операционной средыкомпьютерной системы.
В отличие от предыдущих видов анализа, основанных настатическом исследовании, семантический анализ нацелен на изучение динамикипрограммы - ее взаимодействия с окружающей средой. Процесс исследованияосуществляется в виртуальной операционной среде с полным контролем действийпрограммы и отслеживанием алгоритма ее работы по структурно-алгоритмическоймодели. Семантический анализ является наиболее эффективным видом анализа, нопри этом и самым трудоемким.Обобщенная классификация методов анализа программного продуктапредставлена на Рисунке 3.1919Рисунок 3 - Классификация методов анализа программного продукта20РД был выпущен в 1998 году и для того времени являлся актуальным, онсодержал требования, соответствующие этапу развития программирования.В Таблице 1 Приложение Арассмотрены наиболее популярныеклассификации в области безопасности ПО [31]. Как видно из Таблицы 1Приложение А, рассмотренные классификации узко ориентированы на конкретныезадачи, такие каксетевые атаки, уязвимости операционных систем илинекорректности программирования.С ростом сложности программного продукта динамический анализстановится неразрешимой задачей и превращается в формальную процедуру.Многие программные комплексы, используемые экспертами в повседневнойработе, имеют списки потенциально опасных конструкций, а требования к ним РДне выдвигает, что делает неэффективными методы сигнатурного анализа.
Неупоминается сигнатурный анализ и в требованиях к испытаниям программ нижевторого уровня контроля (т.е. программ, обрабатывающих секретную иконфиденциальную информацию) [10]. Нет механизмов выявления ошибоккодирования, связанных с переполнением буфера, вызовом функций из чужогоадресного пространства, отсутствует очистка памяти т.д. Так же отсутствуюттребования по построению перечня маршрутов при выполнении функциональныхветвей программы, нет механизмов определения полноты покрытия кода и егодостаточности при динамическом анализе.Для упрощения работы экспертов на рынке информационных технологийпредставлены коммерческие продукты, которые обладают своими достоинствамии недостатками. Их анализ приведен в разделе 1.3.21Классификации уязвимостей на основе причин их возникновения (дефектов)в общем виде представлены в Таблице 2 Приложение В [31].Такое разделение включает в себя два типа и восемь классов.
Типыпредставляют собой: уязвимости,вызванныедефектамипроектированияипрограммирования; уязвимости, вызванные дефектами конфигурирования и управления.Восемь классов включают уязвимости, связанные с: обработкой и представлением данных; внутренней структурой и зависимостями компонентов; обработкой событий и состояний; внутренними механизмами и ресурсами; преднамеренным внедрением; качеством проектирования и документированием; конфигурациями; окружением.1.3. Сравнительный анализ и классификация программныхкомплексов, предназначенных для оценки качества и надежностипрограммных продуктов с исходными текстамиШироко распространенное программное средство статического анализаисходных текстов на языке Cи/Cи++ ITS4 анализирует лишь наборы лексем,сопоставляя их с образцами потенциально опасных конструкций, хранящихся вспециальной базе данных.
Подобный алгоритм проверки может выдавать до 100%ложных заключений, не обнаружив при этом в оцениваемой программе ни однойсуществующей уязвимости. Еще одним из представителей этой категориипродуктов является продукт BOON, который основан на принципе глубокогосемантического анализа, выявляет возможные дефекты, предполагая, что22некоторые значения являются частью неявного типа с конкретным размеромбуфера [3].Программный инструмент MOPS (Mоdel checking Programs for Security)используется для динамической корректировки, обеспечивающей соответствиепрограммы на Си статической модели [5].Программная утилита RATS (Rough Auditing Tool for Security) оцениваетисходный текст программы, находя потенциально опасные обращения к функциям,использует сочетание проверок надежности защиты от семантических проверок вITS4 до глубокого семантического анализа в поисках дефектов, способныхпривести к переполнению буфера, полученных из MOPS.Статический сканер исходных текстов программ Flawfinder выполняетпоиск функций, которые чаще всего используются некорректно, присваивает имкоэффициенты риска (опираясь на такую информацию, как передаваемыепараметры) и составляет список потенциально уязвимых мест, упорядочивая их постепени риска [23].Программный комплекс Splint позволяет находить лишь простейшиеуязвимости, такие, к примеру, как выход за границу статистического массива приобращении по фиксированному размеру.Стоит обратить внимание, что на отечественном рынке существуютроссийские разработки, а некоторые из них имеют сертификат ФСТЭК России.Анализаторисходныхтекстов«АИСТ-С»[52],позволяетполучатьвавтоматическом режиме информацию о структуре и ряде характеристикоцениваемого программного продукта, а также обеспечивает проведениеэкспертом в интерактивном режиме операций по анализу получаемой информациис привязкой к анализируемым исходным текстам.
Однако, несмотря на очевидныедостоинства, установлено, некорректноеобрабатывание структуры объектно-ориентированных программ; не анализируются и исходные тексты, подключаемыедирективами #include, — лишь проверяется исходный текст программы. Болеетого, нормальная работа анализатора возможна, только если объем исходных23текстов не превышает нескольких мегабайт: блок-схемы программ строятсянекорректно уже для программ объемом более нескольких килобайт.Программный комплекс «IRIDA 2.0» [5] предназначен для проведениястатического и динамического анализа потоков управления в исходных кодахпрограмм на языке Си++ для проектов Microsoft Visual Studio.NET. Анализатор«АК-ВС 2» [30] предназначен для проведения сертификационных испытаний наотсутствие недекларированных возможностей (программных закладок), оценкинадежностиибезопасностипрограммногокода.Этоединственноесертифицированное средство проведения сертификационных испытаний по 2-му и1-му уровням контроля отсутствия недекларированных возможностей потребованиям РД.Сравнительныехарактеристикипрограммныхкомплексов,предназначенных для оценки качества ПП с исходными текстами приведены вТаблице 3.Самыми распространенными и потенциально опасными уязвимостямиявляются ошибки переполнения буфера и использования неконтролируемойформатной строки.
Переполнение буфера (buffer overflow) возникает как следствиеотсутствия контроля или недостаточного контроля над выходом за пределымассива в памяти. Языки Си/Си++, чаще всего используемые для разработкипрограммного продукта системного уровня, не реализуют автоматическийконтроль выхода за пределы массива во время выполнения программы.По месту расположения буфера в памяти процесса различают переполнениябуфера в: стеке (stack buffer overflow); области памяти (куче) (heap buffer overflow); области статических данных (BSS buffer overflow).Таблица 3 - Сравнительные характеристики программных комплексов, предназначенных для оценки качества программногоДинамическиСписок потенциальноопасных сигнатурНеконтролируемаяформатная строкаПереполнениебуфераЗапросисполняемыхвызововНулевой указатель++++-+++++-+++++++++++++нетнетнетнет+-+--++++нетFlawfinderUNOFlexeLint (PC-Lint)CoverityFrama-CJavaCheckerQauditСиСиСиСиСи/Си++,PHP, Perl, PythonСи/Си++СиСи/Си++Си/Си++, JavaСиJavaСи/Си+++-++++++++++++++++++++++++нетнетнетнетнетнетнетАИСТ-ССи/Си+++-++++№ 451 до05.06.2019№п/пНаименование1234BOONCQualMOPSITS45RATS678910111213ПоддерживаемыеЯзыки++++++++++++++Отечественные разработки-+-24СтатическийОпределение типа уязвимостейБез исходного кодаТипанализаС исходным кодомТипанализируемойпрограммыНаличие сертификатаФСТЭКпродуктаНулевой указатель17Инструментальныйкомплекс «IRIDA2.0»Запросисполняемыхвызовов«АК-ВС 2»Переполнениебуфера16Неконтролируемаяформатная строкаUCAСписок потенциальноопасных сигнатур15ДинамическийКСАИТСтатический14Без исходного кодаНаименованиеОпределение типа уязвимостейСи/Си++Си/Си++, Pascal,Perl, PLMСи/Си++, Java,Pascal, Си#, PHP,Assembler+-+--+++++-+-++++++-+++++++№ 3385 от03.04.2018Си+++-+++++++№ 3541 до11.05.2019ПоддерживаемыеЯзыкинетнет25№п/пТипанализаС исходным кодомТипанализируемойпрограммыНаличие сертификатаФСТЭКПродолжение таблицы 326Ошибки неконтролируемой форматной строки (format string) возникают изза недостаточного контроля параметров при использовании функций форматноговвода-вывода семейства printf/scanf стандартной библиотеки языка Си.
Этифункции принимают в качестве одного из параметров символьную строку,задающую формат ввода или вывода последующих аргументов функции.В процессе тестирования и отладки программы обнаружить уязвимостизащиты чрезвычайно трудно, так как в большинстве случаев для того, чтобыуязвимость себя проявила, программе необходимо передать нетривиальныевходные данные. Поэтому на стадии тестирования и отладки находятся лишь самыепростые уязвимости.Другой подход к предотвращению использования уязвимостей защитыпредставляет собой использование утилит, предназначенных для обнаруженияпопыток взлома защиты в реальном времени. Однако часто такие программывлекут неприемлемые временные затраты, при этом они фиксируют лишь попыткувзлома, не указывая собственно на место ошибки в программном продукте.Поэтому наиболее полным с точки зрения оценки качества решением являетсяаудит исходного кода программы с привлечением автоматических илиполуавтоматических инструментальных средств (так как исследование кода,проводимое вручную, является дорогостоящим и длительным).1.4.