RU2543960C1 - Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей - Google Patents

Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей Download PDF

Info

Publication number
RU2543960C1
RU2543960C1 RU2013140101/08A RU2013140101A RU2543960C1 RU 2543960 C1 RU2543960 C1 RU 2543960C1 RU 2013140101/08 A RU2013140101/08 A RU 2013140101/08A RU 2013140101 A RU2013140101 A RU 2013140101A RU 2543960 C1 RU2543960 C1 RU 2543960C1
Authority
RU
Russia
Prior art keywords
web applications
vulnerable
function
name
label
Prior art date
Application number
RU2013140101/08A
Other languages
English (en)
Other versions
RU2013140101A (ru
Inventor
Юрий Владимирович Бородакий
Павел Александрович Нащекин
Ян Николаевич Букаров
Original Assignee
Открытое акционерное общество "Концерн "Системпром"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Открытое акционерное общество "Концерн "Системпром" filed Critical Открытое акционерное общество "Концерн "Системпром"
Priority to RU2013140101/08A priority Critical patent/RU2543960C1/ru
Application granted granted Critical
Publication of RU2543960C1 publication Critical patent/RU2543960C1/ru
Publication of RU2013140101A publication Critical patent/RU2013140101A/ru

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

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

Description

Областью применения, к которой относится изобретение, является выявление программных ошибок и не декларируемых возможностей в веб-приложениях на интерпретируемых языках.
В настоящее время особо острой проблемой является проверка приложений на уязвимости и не декларируемые возможности. Ошибки в коде приложений могут приводить к различным последствиям, от отказа системы, в которой предполагается использование приложения, до выполнения злонамеренного кода, компрометирующего целевую систему. Наилучшим способом ограничить число подобных ошибок является проведение тестирования на ранних этапах жизненного цикла системы.
Известен способ определения уязвимых функций для тестирования исполняемых файлов методом фаззинга [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.

Claims (3)

1. Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей и не декларируемых возможностей, заключающийся в том, что составляют список исходных текстов веб-приложений, предназначенных для формирования параметров тестирования, задают параметры исходных текстов веб-приложений для тестирования, проводят синтаксический анализ исходных текстов веб-приложений, написанных на интерпретируемых языках, используя заданные параметры, добавляют опознавательные метки в исходные тексты веб-приложений с указанием пар метка-функция, проводят автоматизированную проверку и поиск программных ошибок в веб-приложениях, получают при возникновении программной ошибки отладочную информацию в виде машинного кода, описывающего текущий исполняемый модуль и содержащего имя соответствующей опознавательной метки, определяют по имени соответствующей опознавательной метки, находящейся в отладочной информации, соответствующую пару метка-функция и получают название уязвимой функции, а также полное имя модуля, содержащего уязвимую функцию.
2. Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей и недекларируемых возможностей по п.1, отличающийся тем, что предупреждение пользователю выдают посредством HTTP протокола.
3. Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей и недекларируемых возможностей по п.1, отличающийся тем, что после получения полного имени модуля, содержащего уязвимую функцию, формируют отчет о проверке, включающий, по меньшей мере, время проверки, полное имя модуля, содержащего уязвимую функцию.
RU2013140101/08A 2013-08-29 2013-08-29 Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей RU2543960C1 (ru)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2013140101/08A RU2543960C1 (ru) 2013-08-29 2013-08-29 Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2013140101/08A RU2543960C1 (ru) 2013-08-29 2013-08-29 Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей

Publications (2)

Publication Number Publication Date
RU2543960C1 true RU2543960C1 (ru) 2015-03-10
RU2013140101A RU2013140101A (ru) 2015-03-10

Family

ID=53279599

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2013140101/08A RU2543960C1 (ru) 2013-08-29 2013-08-29 Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей

Country Status (1)

Country Link
RU (1) RU2543960C1 (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU168346U1 (ru) * 2016-06-23 2017-01-30 Закрытое Акционерное Общество "Научно-Производственное Объединение "Эшелон" Устройство выявления уязвимостей

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2289157C2 (ru) * 2001-02-22 2006-12-10 Гизеке Унд Девриент Гмбх Способ и система распределенной разработки программы для программируемого портативного носителя информации
US7203926B2 (en) * 1997-03-12 2007-04-10 Microsoft Corporation Active debugging environment for applications containing compiled and interpreted programming language code
RU2431182C2 (ru) * 2004-08-04 2011-10-10 Роберт Бош Гмбх Способ, операционная система и вычислительное устройство для выполнения компьютерной программы
RU130104U1 (ru) * 2013-02-26 2013-07-10 Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" Устройство автоматического документирования исходных текстов программ, написанных на языке автокод

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203926B2 (en) * 1997-03-12 2007-04-10 Microsoft Corporation Active debugging environment for applications containing compiled and interpreted programming language code
RU2289157C2 (ru) * 2001-02-22 2006-12-10 Гизеке Унд Девриент Гмбх Способ и система распределенной разработки программы для программируемого портативного носителя информации
RU2431182C2 (ru) * 2004-08-04 2011-10-10 Роберт Бош Гмбх Способ, операционная система и вычислительное устройство для выполнения компьютерной программы
RU130104U1 (ru) * 2013-02-26 2013-07-10 Федеральное государственное унитарное предприятие "Научно-производственное объединение автоматики имени академика Н.А. Семихатова" Устройство автоматического документирования исходных текстов программ, написанных на языке автокод

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU168346U1 (ru) * 2016-06-23 2017-01-30 Закрытое Акционерное Общество "Научно-Производственное Объединение "Эшелон" Устройство выявления уязвимостей

Also Published As

Publication number Publication date
RU2013140101A (ru) 2015-03-10

Similar Documents

Publication Publication Date Title
US8627290B2 (en) Test case pattern matching
Pradel et al. A framework for the evaluation of specification miners based on finite state machines
US10019240B2 (en) Method and apparatus for detecting code change
CN105141647B (zh) 一种检测Web应用的方法和系统
EP3499364B1 (en) Method and device for loading kernel module
US11048798B2 (en) Method for detecting libraries in program binaries
CN111459495B (zh) 单元测试代码文件生成方法、电子装置及存储介质
US20120254839A1 (en) Simulating black box test results using information from white box testing
US11888885B1 (en) Automated security analysis of software libraries
Huang et al. Detecting sensitive data disclosure via bi-directional text correlation analysis
EP2778629A1 (en) Method and device for code change detection
CN109614107B (zh) 一种软件开发工具包的集成方法和装置
Hao et al. E&v: Prompting large language models to perform static analysis by pseudo-code execution and verification
US8943370B2 (en) Trace value correlation with data field declarations
Ghafari et al. Mining unit tests for code recommendation
RU2543960C1 (ru) Способ определения уязвимых функций при автоматизированной проверке веб-приложений на наличие уязвимостей
CN110874475A (zh) 漏洞挖掘方法、漏洞挖掘平台及计算机可读存储介质
WO2022269630A1 (en) A system and method for bug identification and fault localization through domain-ontology
Rawat et al. Listt: An investigation into unsound-incomplete yet practical result yielding static taintflow analysis
US8819645B2 (en) Application analysis device
CN115391230A (zh) 一种测试脚本生成、渗透测试方法、装置、设备及介质
Hirzel et al. Graph-Walk-based Selective Regression Testing of Web Applications Created with Google Web Toolkit.
Elia et al. A Field Perspective on the Interoperability of Web Services
Yousaf et al. Efficient Identification of Race Condition Vulnerability in C code by Abstract Interpretation and Value Analysis
Entrup et al. ARA: Automatic Instance-Level Analysis in Real-Time Systems

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20170830