СПОСОБ ОПРЕДЕЛЕНИЯ УЯЗВИМЫХ ФУНКЦИЙ ПРИ АВТОМАТИЗИРОВАННОЙ ПРОВЕРКЕ ВЕБ-ПРИЛОЖЕНИЙ НА НАЛИЧИЕ УЯЗВИМОСТЕЙ Российский патент 2015 года по МПК G06F17/27 G06F11/00 

Описание патента на изобретение RU2543960C1

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

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

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

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

Однако известный способ определения уязвимых функций не позволяет однозначно выявить имя уязвимой функции и определить модуль, в котором она находится. Кроме того, известный способ невозможно использовать для не компилируемых, а интерпретируемых кодов, например, web-приложений или приложений JAVA.

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

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

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

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

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

Предлагаемый способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей и не декларируемых возможностей предусматривает выполнение следующих последовательно выполняемых операций:

составляют список исходных текстов веб-приложений, предназначенных для формирования параметров тестирования (например, различных блоков сетевых протоколов, позволяющих осуществлять соединение и обмен данными между двумя и более включенными в сеть устройствами [3] с заведомо неверными данными);

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

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

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

проводят автоматизированную проверку и поиск программных ошибок в веб-приложениях (тестирование осуществляют на локальном веб-сервере и/или на удаленном веб-сервере, которые выполняют программу в соответствии с заданными параметрами);

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

определяют по имени соответствующей опознавательной метки, находящейся в отладочной информации, соответствующую пару метка-функция

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

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

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

В одном из вариантов реализации предлагаемого способа определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей и не декларируемых возможностей предупреждение пользователю выдают посредством HTTP протокола.

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

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

Литература

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

2. Интернет-Университет Информационных Технологий [Электронный ресурс] Лекция: Алгоритмы синхронизации: Режим доступа: http://www.intuit.ru/department/os/osintro/5/osintro_5.html свободный. - (дата обращения: 11.03.2013).

3. Альфред В. Ахо, Моника С. Лам, Рави Сети, Джеффри Д. Ульман. Компиляторы: принципы, технологии и инструментарий = Compilers: Principles, Techniques, and Tools. - 2-е изд. - M.: Вильямс, 2008.

Похожие патенты RU2543960C1

название год авторы номер документа
СПОСОБ И СИСТЕМА УСТРАНЕНИЯ УЯЗВИМОСТЕЙ В ПРОГРАММНОМ КОДЕ 2023
  • Вышегородцев Кирилл Евгеньевич
  • Кузьмин Александр Михайлович
RU2821220C1
СПОСОБ И СИСТЕМА ВЫЯВЛЕНИЯ ЭКСПЛУАТИРУЕМЫХ УЯЗВИМОСТЕЙ В ПРОГРАММНОМ КОДЕ 2022
  • Максимова Анна Андреевна
  • Гончаренко Лейла Халидовна
  • Бачевский Артем Евгеньевич
  • Гуртова Кристина Сергеевна
  • Умеренко Григорий Сергеевич
  • Анистратенко Михаил Артурович
RU2790005C1
ВЫЯВЛЕНИЕ ФАКТОРОВ УЯЗВИМОСТИ БЕЗОПАСНОСТИ В ПРОГРАММНЫХ ИНТЕРФЕЙСАХ ПРИЛОЖЕНИЯ 2017
  • Уилтон, Шейн
  • Седат, Бенжамин, Д.
  • Иризарри, Энджел
  • Бороховский, Майкл
  • Браун, Эйнсли, К.
RU2755675C2
СИСТЕМА И СПОСОБ СТАТИЧЕСКОГО АНАЛИЗА ИСПОЛНЯЕМОГО ДВОИЧНОГО КОДА И ИСХОДНОГО КОДА С ИСПОЛЬЗОВАНИЕМ НЕЧЕТКОЙ ЛОГИКИ 2021
  • Чернов Даниил Владимирович
RU2783152C1
Автоматизированная оценка безопасности критически важных для бизнеса компьютерных систем и ресурсов 2011
  • Нунез Ди Сросе Мариано
RU2657170C2
ОТЛАДКА МАШИННОГО КОДА ПУТЕМ ПЕРЕХОДА ОТ ИСПОЛНЕНИЯ В СОБСТВЕННОМ РЕЖИМЕ К ИСПОЛНЕНИЮ В ИНТЕРПРЕТИРУЕМОМ РЕЖИМЕ 2014
  • Колтачев, Михаил
  • Ханделвал, Никхил
  • Ганди, Акрош
RU2668973C2
Система и способ выявления уязвимостей с использованием перехвата вызовов функций 2018
  • Калинин Александр Валентинович
  • Румянцев Сергей Александрович
  • Кумагин Игорь Юрьевич
RU2697948C1
Способ и система автоматизированного документирования угроз безопасности и уязвимостей, относящихся к информационному ресурсу 2022
  • Лебедев Сергей Вячеславович
  • Савин Михаил Валерьевич
RU2789990C1
СПОСОБ ОПРЕДЕЛЕНИЯ ПОТЕНЦИАЛЬНЫХ УГРОЗ БЕЗОПАСНОСТИ ИНФОРМАЦИИ НА ОСНОВЕ СВЕДЕНИЙ ОБ УЯЗВИМОСТЯХ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 2019
  • Мамута Владимир Владимирович
  • Соловьев Сергей Вениаминович
RU2705460C1
АВТОМАТИЧЕСКОЕ ОБНАРУЖЕНИЕ И РЕАГИРОВАНИЕ НА УЯЗВИМОСТИ 2007
  • Роджерс Джастин
  • Лоренс Эрик М.
  • Бридж Генри Ф.
RU2462754C2

Реферат патента 2015 года СПОСОБ ОПРЕДЕЛЕНИЯ УЯЗВИМЫХ ФУНКЦИЙ ПРИ АВТОМАТИЗИРОВАННОЙ ПРОВЕРКЕ ВЕБ-ПРИЛОЖЕНИЙ НА НАЛИЧИЕ УЯЗВИМОСТЕЙ

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

Формула изобретения RU 2 543 960 C1

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

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

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

Документы, цитированные в отчете о поиске Патент 2015 года RU2543960C1

СПОСОБ, ОПЕРАЦИОННАЯ СИСТЕМА И ВЫЧИСЛИТЕЛЬНОЕ УСТРОЙСТВО ДЛЯ ВЫПОЛНЕНИЯ КОМПЬЮТЕРНОЙ ПРОГРАММЫ 2005
  • Вайберле Райнхард
  • Мюллер Бернд
  • Хартер Вернер
  • Коттке Томас
  • Коллани Йорк
  • Гмелих Райнер
RU2431182C2
Преобразователь однофазного напряжения в трехфазное напряжение пониженной частоты 1959
  • Бухштабер Е.Я.
SU130104A1
СПОСОБ И СИСТЕМА РАСПРЕДЕЛЕННОЙ РАЗРАБОТКИ ПРОГРАММЫ ДЛЯ ПРОГРАММИРУЕМОГО ПОРТАТИВНОГО НОСИТЕЛЯ ИНФОРМАЦИИ 2002
  • Голльнер Михаэль
  • Кизингер Даниель
RU2289157C2
US 7203926 B2, 10.04.2007
Многоступенчатая активно-реактивная турбина 1924
  • Ф. Лезель
SU2013A1

RU 2 543 960 C1

Авторы

Бородакий Юрий Владимирович

Нащекин Павел Александрович

Букаров Ян Николаевич

Даты

2015-03-10Публикация

2013-08-29Подача