KR100653122B1 - Real-time detection system and method based rule for safety software development - Google Patents

Real-time detection system and method based rule for safety software development Download PDF

Info

Publication number
KR100653122B1
KR100653122B1 KR1020050080571A KR20050080571A KR100653122B1 KR 100653122 B1 KR100653122 B1 KR 100653122B1 KR 1020050080571 A KR1020050080571 A KR 1020050080571A KR 20050080571 A KR20050080571 A KR 20050080571A KR 100653122 B1 KR100653122 B1 KR 100653122B1
Authority
KR
South Korea
Prior art keywords
vulnerability
rule
module
repository
buffer overflow
Prior art date
Application number
KR1020050080571A
Other languages
Korean (ko)
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 KR1020050080571A priority Critical patent/KR100653122B1/en
Application granted granted Critical
Publication of KR100653122B1 publication Critical patent/KR100653122B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

A rule-based real-time detecting system for safe software development and a method thereof are provided to solve a problem generating security accidents caused from vulnerability and develop software safe in a source code level by generating the rule from the vulnerability generated from the software development and detecting the vulnerability from the software with the rule in real-time. An analyzing module(100) analyzes contents of a currently inputted source by analyzing a value inputted from a programmer. A checker module(200) compares the source with the rule inputted from a rule loader module(300) to check whether the analyzed contents are the source code having buffer overflow vulnerability. A highlighter module(400) displays a part of the source code having the buffer overflow vulnerability. An alerter module(500) loads the contents and resolutions for the vulnerability from a resolution loader module(600), and outputs the loaded contents/resolutions to a screen as a message box in case that the source is discriminated as the source having the buffer overflow vulnerability. The ruler loader module defines the rule for the part having the buffer overflow vulnerability.

Description

안전한 소프트웨어 개발을 위한 룰 기반의 실시간 탐지 시스템 및 방법{ REAL-TIME DETECTION SYSTEM AND METHOD BASED RULE FOR SAFETY SOFTWARE DEVELOPMENT}Rule-based real-time detection system and method for secure software development {REAL-TIME DETECTION SYSTEM AND METHOD BASED RULE FOR SAFETY SOFTWARE DEVELOPMENT}

도 1은 종래의 ITS4를 실행했을 때의 화면1 is a screen when the conventional ITS4 is executed

도 2는 종래의 StackGuard 방어 기법을 나타낸 도면Figure 2 illustrates a conventional StackGuard defense technique

도 3은 본 발명에 따른 실시간으로 프로그램의 취약성을 탐지하기 위한 시스템의 개략적인 구성도.3 is a schematic structural diagram of a system for detecting a vulnerability of a program in real time according to the present invention;

도 4는 본 발명에 의한 룰(rule) 기반의 실시간 탐지 시스템의 처리에 대한 흐름도.4 is a flow chart for processing of a rule-based real-time detection system according to the present invention.

** 도면의 주요 부분에 대한 부호의 설명 **** Description of symbols for the main parts of the drawing **

100...분석 모듈 200...Checker 모듈100 ... Analysis Module 200 ... Checker Module

300...rule Loader 모듈 400...Highlighter 모듈300 ... rule Loader Module 400 ... Highlighter Module

500...Alerter 모듈 600...Resolution Loader 모듈500 ... Alerter Module 600 ... Resolution Loader Module

700...취약성 데이터베이스 800...해결책 데이터베이스700 Vulnerability Database 800 Resolution Database

본 발명은 소프트웨어의 개발 단계에서 프로그래머가 소스 코드를 작성 시 취약점이 될 수 있는 취약성들을 룰(rule)로 정의하고 이를 실시간으로 탐지하여 해결방안을 제공하는 시스템에 관한 것이다.The present invention relates to a system that defines a vulnerability that can be a vulnerability when a programmer writes source code at the development stage of the software as a rule, and detects it in real time to provide a solution.

최근에 발생하고 있는 보안 취약점을 이용한 보안 문제들의 대부분은 소프트웨어 취약성(software vulnerability) 때문이다. 이러한 소프트웨어에 존재하는 보안 취약성은 개발자의 실수에 의해 발생한다.Most of the recent security problems using security vulnerabilities are due to software vulnerabilities. Security vulnerabilities in these software are caused by developer mistakes.

보안 취약성은 소프트웨어 분야의 근본적인 문제점으로부터 파생되어 보안 사고를 발생시킬 수 있는 여지가 있는 성질로서, 해커가 보안 취약성을 악용하면, 그것이 보안 취약점으로 구체화되어 보안 사고의 원인이 된다.Security vulnerabilities are derived from fundamental problems in the software field and can cause security incidents. When a hacker exploits a security vulnerability, it is embodied as a security vulnerability and causes security incidents.

예를 들어, 잘 알려진 버퍼 오버플로우(Buffer Overflow)는 보안 취약성이며, 대부분의 소프트웨어에서 공통적으로 발생할 수 있는 하나의 프로퍼티(property)이다. 이러한 버퍼 오버플로우가 하나의 특정 소프트웨어에서 발견되어 보안 문제의 소지가 되면, 이를 보안취약점이라 부른다.For example, well-known buffer overflows are security vulnerabilities and a property that can occur in most software. When such a buffer overflow is found in one particular piece of software and poses a security issue, it is called a security vulnerability.

다른 측면에서의 보안 취약점은 그 배경에 소프트웨어의 근본적인 문제점 등이 있는 것은 아니고, 소프트웨어 개발자의 실수 등에 의해 발생하는 개개의 소프트웨어 상의 보안 문제점이다. Security vulnerabilities on the other side are not fundamental problems of software in the background, but are security problems on individual software caused by mistakes of software developers.

따라서 이러한 보안 문제들을 해결하기 위한 가장 근본적인 해결책은 소프트웨어 취약성이 존재하지 않는 '안전한 소프트웨어'를 만드는 것이다. 하지만, 100% 안전한 소프트웨어를 만든다는 것은 현실적으로 불가능한 가깝고 이러한 태생적 한계로 소프트웨어 취약성 문제는 항상 존재할 수 있기 때문에 이를 해결하기 위한 많은 연구들이 진행되었고 현재도 진행 중에 있다.Thus, the most fundamental solution to these security problems is to make 'safe software' without software vulnerabilities. However, making 100% secure software is a near practical impossibility, and due to this inherent limitation, software vulnerability problems can always exist, and much research has been done to solve this problem.

그 중에서도 소프트웨어 취약성에 있어 가장 일반적이고 대부분을 차지하는 것은 버퍼 오버플로우(Buffer Overflow) 취약성 이며, 버퍼 오버플로우 취약성을 해결하기 위한 다양한 연구들이 진행되었다. 버퍼 오버플로우 탐지 및 예방 기법에 대한 연구들은 완성된 소스 코드를 스캔하여 취약성을 탐지하는 ITS4, 컴파일러를 수정하여 버퍼 오버플로우가 발생했는지를 탐지하는 StackGuard, PointGuard와 명령어 실행이 불가능한 버퍼(non-executable buffer), 배열 범위 검사(array bound checking), 안전한 라이브러리(Lipsafe) 등과 같은 기법들이 있다. 하지만 아직까지 완벽한 버퍼 오버플로우 탐지 및 예방 기법은 없는 실정이다. 완성된 소스 코드를 대상으로 하는 ITS4는 소스 코드의 라인 수가 많은 경우 취약성을 수정하기 위해 많은 시간과 노력이 필요하다. 또한 Stack Guard와 Point Guard는 단지 버퍼 오버플로우가 발생되었는지 만을 탐지할 뿐 어떤 부분이 취약성을 가지고 있는지에 대해서는 알 수 없다. 미국 Cigital사의 ITS4는 C 언어와 C++ 언어로 작성된 소스 코드에 대해 정적 스캐닝을 통해 "suspects" 데이터베이스와 비교하여 취약한 함수 호출을 탐지하고 각 함수에 대한 위험의 정도를 나타내주는 툴이다. ITS4가 탐지 할 수 있는 취약성은 버퍼 오버플로우가 주류를 이루고 있으며 이외에도 경쟁 조건(race condition)과 몇몇 다른 취약성들을 탐지할 수 있다.Among them, the most common and occupied software vulnerabilities are buffer overflow vulnerabilities, and various studies have been conducted to solve the buffer overflow vulnerabilities. Research on buffer overflow detection and prevention techniques includes ITS4, which scans the source code to detect vulnerabilities, StackGuard that modifies the compiler to detect whether a buffer overflow has occurred, and PointGuard, and non-executable buffers. There are techniques such as buffer, array bound checking, and Lipsafe. However, there is no perfect buffer overflow detection and prevention technique yet. Targeting complete source code, ITS4 requires a lot of time and effort to fix vulnerabilities if there are many lines of source code. In addition, Stack Guard and Point Guard only detect whether a buffer overflow has occurred, and do not know what part is vulnerable. US Cigital's ITS4 is a tool that detects vulnerable function calls and indicates the degree of risk for each function compared to a "suspects" database through static scanning of source code written in C and C ++ languages. Vulnerabilities that ITS4 can detect include buffer overflows, as well as race conditions and several other vulnerabilities.

ITS4의 동작 과정은 다음과 같다.The operation process of ITS4 is as follows.

- 입력으로써 하나 이상의 C 언어나 C++ 언어 소스 파일을 받아들인다.Accepts more than one C or C ++ language source file as input.

- 각 소스 파일을 토큰 스트림으로 자른다.-Cut each source file into a token stream.

- 스캐닝 통해 토큰 스트림을 검사하고, "suspects" 데이터베이스의 식별자와 비교한다.Scan the token stream via scanning and compare it to the identifier in the "suspects" database.

- 각 위험 등급에 맞는 결과를 경고해준다.-Warn you of the consequences for each risk class.

ITS4는 취약한 함수 호출에 대해 미리 정의된 위험 등급에 따라 경고해 주는데, 그 경고 내용에는 다음과 같은 것들이 포함된다.ITS4 warns against vulnerable function calls according to a predefined risk level, which includes the following:

첫째 문제점에 대한 간단한 설명, 둘째 문제점에 대해 어떻게 코딩해야하는지에 대한 설명, 셋째 취약성의 위험 등급 등을 경고한다.It alerts you to a brief description of the first problem, how to code it for the second, and the risk rating of the third vulnerability.

도 1은 실제로 ITS4를 실행했을 때의 화면이다.1 is a screen when ITS4 is actually executed.

ITS4는 정확성은 다소 떨어지나 비교적 속도가 빠르다는 장점이 있다. 또한 "suspects" 데이터베이스의 업그레이드 문제와 취약성에 대한 분석 문제, 마이크로소프트의 비쥬얼 스튜디오와 같은 프로그래밍 환경으로의 통합등도 해결해야 할 문제점으로 지적되고 있다.ITS4 has the advantage of being relatively slow but relatively fast. In addition, upgrade issues in the "suspects" database, analysis of vulnerabilities, and integration into programming environments such as Microsoft's Visual Studio have been addressed.

StackGuard는 버퍼 오버플로우를 방지하기 위한 컴파일러 방어 전략이라고 할 수 있다. StackGuard는 리턴 주소와 스택 사이에 'canary'라고 불리는 임의의 값을 삽입하고 리턴 주소가 가르키고 있는 주소로 점프하기 전에 'canary' 워드를 검사함으로써 버퍼 오버플로우에 의해 리턴 주소가 변경되었는지 여부를 확인한다. StackGuard에서는 'canary' 값이 리턴 주소 앞에 위치하게 된다. 따라서 버퍼 오버플로우에 의해 리턴 주소를 변경하기 위해서는 'canary' 값 또한 바뀌기 때문에 리턴 주소가 가르키고 있는 주소로 점프하기 전에 이 'canary' 값의 변경 유무를 검사함으로써 리턴 주소가 변경되었는지 여부에 대해 확인할 수 있다. 'canary' 값은 'Terminator canary'와 'Random canary'의 두 종류가 있으며, 각각은 다음의 값을 가진다.StackGuard is a compiler defense strategy to prevent buffer overflows. StackGuard checks whether the return address was changed by a buffer overflow by inserting a random value called 'canary' between the return address and the stack and examining the 'canary' word before jumping to the address pointed to by the return address. . In StackGuard, the 'canary' value is placed before the return address. Therefore, in order to change the return address due to the buffer overflow, the 'canary' value is also changed, so it is possible to check whether the return address has changed by checking whether the 'canary' value has changed before jumping to the address pointed to by the return address. have. There are two kinds of 'canary' values, 'Terminator canary' and 'Random canary', each having the following values.

Terminator canary: C 언어에서 문자열의 끝을 나타내는 문자를 'canary' 값으로 가짐.Terminator canary: In C language, the character indicating the end of a string has the value 'canary'.

Random canary: 프로그램이 시작될 때마다 선택되는 32 bit의 난수 값을 'canary' 값으로 가짐Random canary: has a 32 bit random number selected as a 'canary' value each time the program starts

도 2는 StackGuard 방어 기법을 나타낸 도면이다.2 illustrates a StackGuard defense technique.

Random canary 값은 공격자가 미리 예측하지 못하도록 프로그램 시작 시에 32 bit의 난수로 결정되는데, 버퍼 오버플로우 공격이 일어난 경우 정상적인 복귀를 하기 위해 리턴 주소 값과 canary 값을 XOR 한 값도 canary 값과 더불어 저장하게 된다. Terminator canary 값은 C 언어에서 문자열의 끝을 나타내는 0(null), CR, LF, 그리고 -1(EOF)와 같은 문자를 canary 값으로 하여 만일 공격자가 canary 값을 알아내어 이를 반영한 버퍼 오버플로우 공격을 시도한 경우에도, string 계열 함수의 문자열 연산 수행 시 입력 값 중간에 문자열 끝을 만나게 하여 연산을 중단시킨다. 즉, 공격자 의도대로 긴 문자열의 복사 등이 일어나지 않게 되므로 결국 버퍼 오버플로우 공격을 막을 수 있다.The random canary value is determined by the 32-bit random number at the start of the program to prevent the attacker from predicting it in advance.In the event of a buffer overflow attack, the return address value and the canary value are also XORed together with the canary value for a normal return. Done. The terminator canary value is a canary value of characters such as 0 (null), CR, LF, and -1 (EOF) that indicate the end of a string in C. If an attacker finds a canary value and reflects the buffer overflow attack, Even if it tries, it stops the operation by encountering the end of string in the middle of input value when performing string operation of string series function. In other words, copying long strings does not occur as the attacker intended, and thus, buffer overflow attacks can be prevented.

하지만 StackGuard는 버퍼 오버플로우를 완전하게 방지하는 것이 아니라 공격을 어렵게 하는 정도의 수준을 제공하고 있기 때문에 완전한 버퍼 오버플로우의 방어는 아니다. However, StackGuard is not a defense against full buffer overflows, because it does not completely prevent buffer overflows, but rather provides a level of difficulty to attack.

본 발명은 상기의 프로그램 제작시 안전하지 못한 프로그램을 개발하여 취약성으로 인한 보안 사고가 발생하던 문제점을 해결하고 소스 코드 레벨에서 안전한 소프트웨어를 개발하기 위해 안출된 것으로, 프로그램 제작 시에 발생되는 소프트웨어의 취약성을 룰(rule)로 생성한 뒤 상기 룰(rule)을 이용하여 실시간으로 소프트웨어의 취약성을 탐지하는 소프트웨어 개발을 위한 룰 기반의 실시간 탐지 시스템을 제공하는 데 그 목적이 있다.The present invention has been made to solve the problem that a security incident caused by the vulnerability by developing an insecure program during the production of the program and to develop a secure software at the source code level, the vulnerability of the software generated during the program production It is an object of the present invention to provide a rule-based real-time detection system for software development that detects the vulnerability of software in real time using the rule after generating the rule as a rule.

본 발명은 소프트웨어의 보안 취약성을 검증하는 시스템에 있어서, 소프트웨어의 개발 단계에서 소스 코드를 작성 시 취약점이 될 수 있는 취약성들을 룰(rule)로 정의하고 입력되는 소스를 분석하여 상기 정의된 룰과 소스를 비교/검증하여 보안상의 취약성을 발견되면 상기 보안상의 취약점을 실시간으로 탐지하여 해결방안을 제공하는 시스템에 관한 것이다.The present invention is a system for verifying security vulnerabilities of software, in the development stage of the software to define the vulnerabilities that can be vulnerabilities when creating source code as a rule (rule) and analyzes the input source and the rules defined above If a security vulnerability is found by comparing / verifying the present invention, the present invention relates to a system that provides a solution by detecting the security vulnerability in real time.

이하 첨부된 도면에 의해 본 발명을 설명한다.Hereinafter, the present invention will be described with reference to the accompanying drawings.

도 3은 본 발명에 따른 실시간으로 프로그램의 취약성을 탐지하기 위한 시스템의 개략적인 구성도를 나타낸 것으로, 그 구성은,Figure 3 shows a schematic configuration diagram of a system for detecting a vulnerability of a program in real time according to the present invention, the configuration is,

시스템을 통해 프로그래머가 입력하는 값을 분석하여 현재까지 입력된 소스코드의 내용을 분석하는 분석 모듈(100);An analysis module 100 for analyzing a value input by a programmer through a system to analyze contents of source codes inputted to date;

상기 분석 모듈로부터 분석된 내용이 버퍼 오버플로우 취약성을 가진 소스 코드인지 여부를 검사하기 위해 해당 소스를 룰 로더(rule Loader)로부터 입력되는 rule과 비교하는 Checker 모듈(200);A Checker module (200) for comparing a source inputted from a rule loader to check whether the content analyzed from the analysis module is source code having a buffer overflow vulnerability;

상기 Checker 모듈에 의해 버퍼 오버플로우 취약성을 가진 소스 코드의 일부분을 표시하는 Highlighter 모듈(400);A Highlighter module 400 for displaying a portion of source code having a buffer overflow vulnerability by the Checker module;

상기 Checker 모듈에 의해 버퍼 오버플로우 취약성을 가진 소스로 판명될 경우 그 취약성의 내용과 해당 취약성에 대한 해결책을 Resolution Loader 모듈로부터 가져와 그 내용을 message box로 화면상에 출력해 주는 Alerter 모듈(500);An alerter module (500) which, when determined by the Checker module as a source having a buffer overflow vulnerability, obtains the content of the vulnerability and a solution for the vulnerability from the Resolution Loader module and outputs the content on the screen in a message box;

버퍼 오버플로우 취약성을 가진 부분에 대하여 룰(rule)을 정의하고 상기 룰이 저장된 취약성 데이터베이스(Vulnerability rule repository, 700)와 시스템의 실행 시 상기 취약성 데이터베이스(Vulnerability rule repository, 700)를 오픈하고 룰(rule)을 loading하는 rule Loader 모듈(300);Define a rule for the part with the buffer overflow vulnerability, open the vulnerability database (Vulnerability rule repository) 700 where the rule is stored, and open the vulnerability database (Vulnerability rule repository) 700 when the system is running. A rule loader module (300) for loading);

상기 취약성 데이터베이스(Vulnerability repository, 700)에 있는 버퍼 오버플로우 취약성이 어떠한 형태인지와 해당 취약성을 해결할 수 있는 방법에 대한 내용이 저장된 해결책 데이터베이스(Resolution repository, 800)와 시스템의 실행 시 상기 해결책 데이터베이스(Resolution repository, 800)를 오픈하고 데이터를 loading하는 Resolution Loader 모듈(600); 로 이루어진다.A solution repository (800) that stores information about the types of buffer overflow vulnerabilities in the vulnerability database (Vulnerability repository, 700) and how to resolve them. a Resolution Loader module 600 for opening the repository 800 and loading data; Is made of.

상기에서 버퍼 오버플로우 취약성을 가진 부분에 대하여 룰(rule)을 정의하고 상기 룰이 저장된 취약성 데이터베이스(Vulnerability rule repository, 700)와 상기 취약성 데이터베이스(Vulnerability repository, 700)에 있는 버퍼 오버플로우 취약성이 어떠한 형태인지와 해당 취약성을 해결할 수 있는 방법에 대한 내용이 저장된 해결책 데이터베이스(Resolution repository, 800)는 공지된 내용을 정의한 데이터베이스이다.In the above, a rule is defined for a part having a buffer overflow vulnerability, and the buffer overflow vulnerability in the vulnerability database (Vulnerability rule repository) 700 and the vulnerability database (Vulnerability repository) 700 is stored. The Solution Repository (800), which stores information about awareness and how to resolve the vulnerability, is a database that defines known content.

즉, 시스템이 시작되면서 rule Loader 모듈(300)과 Resolution Loader 모듈(600)은 각각 상기 취약성 데이터베이스(Vulnerability rule repository, 700)와 해결책 데이터베이스(Resolution repository, 800)를 오픈하고 룰(rule)을 로딩(loading)하여 보안상 취약성이 탐지되면 상기 보안상 취약성에 대한 해결책을 Alerter 모듈에 실시간으로 전송한다.That is, as the system starts, the rule loader module 300 and the resolution loader module 600 open the vulnerability database (Vulnerability rule repository, 700) and the solution database (Resolution repository, 800), respectively, and load a rule ( If a security vulnerability is detected, the solution for the security vulnerability is transmitted to the Alerter module in real time.

도 4는 본 발명에 의한 룰(rule) 기반의 실시간 탐지 시스템의 처리에 대한 흐름도이다.4 is a flowchart of the processing of a rule-based real-time detection system according to the present invention.

첨부된 흐름도에 대해서 설명하면 When explaining the attached flowchart

취약성 데이터베이스(Vulnerability rule repository, 700)와 해결책 데이터베이스(Resolution repository, 800)를 오픈하고 데이터를 loading하는 단계(S_10);Opening a vulnerability database (Vulnerability rule repository) 700 and a solution database (Resolution repository 800) and loading data (S_10);

입력된 소트프웨어의 소스코드를 로딩하는 단계(S_20);Loading source code of the input software (S_20);

상기 입력된 소스코드를 parser를 통해 문서를 해석하여 분석하는 단계(S_30);Analyzing the input source code by analyzing a document through a parser (S_30);

상기의 분석한 데이터를 checker 모듈에 전달하는 단계(S_40);Delivering the analyzed data to a checker module (S_40);

상기의 분석한 내용이 버퍼 오버플로우 취약성을 가진 소스인지 취약성 데이터베이스(Vulnerability rule repository)의 룰(rule)과 비교/검증하는 단계(S_50);Comparing / verifying the analyzed content with a rule of a Vulnerability rule repository whether the source has a buffer overflow vulnerability (S_50);

상기 checker 모듈에서 취약성이 발견되면 상기 취약성의 정보를 highlighter 모듈과 alerter 모듈로 전송하는 단계(S_60);If a vulnerability is found in the checker module, transmitting information about the vulnerability to a highlighter module and an alerter module (S_60);

상기 alerter 모듈에 전송된 취약성에 대하여 해결책 데이터베이스(Resolution repository)에서 저장된 해결책을 검색하는 단계(S_70);Retrieving a stored solution from a solution repository for a vulnerability transmitted to the alerter module (S_70);

상기 발견된 취약성을 해결하기 위한 해결책을 디스플레이하는 단계(S_80);Displaying a solution for solving the found vulnerability (S_80);

상기 highlighter 모듈에 전송된 정보에 대하여 소스코드를 변경하는 단계(S_71);Changing a source code with respect to the information transmitted to the highlighter module (S_71);

상기 변경된 소스코드를 사용자의 모니터에 디스플레이하는 단계(S_81);Displaying the changed source code on a user's monitor (S_81);

상기 비교/검증하는 단계(S_50)에서 취약성이 없을 경우 종료한다.If there is no vulnerability in the comparing / verifying step (S_50), it ends.

상기의 highlighter 모듈에 전송된 정보에 대하여 소스코드를 변경하는 단계(S_71)에서 소스 코드의 변경이라 함은 상기 소스코드의 글자색을 변경하거나 또는 상기 소스코드에 밑줄을 표시하는 것을 의미한다.Changing the source code in the step of changing the source code with respect to the information transmitted to the highlighter module (S_71) means changing the text color of the source code or underlining the source code.

상기의 취약성 데이터베이스(Vulnerability rule repository)와 해결책 데이터베이스(Resolution repository)는 별도로 저장되는 데이터베이스로 보안상이 취약성이 발견되는 소스가 발견되면 상기 취약성을 하나의 룰로 생성하여 취약성 데이터베이스에 저장하고, 상기의 취약성에 대한 해결책을 해결책 데이터베이스에 저장하여 업데이트 및 관리가 용이하다.The Vulnerability Rule Repository and the Solution Repository are separate databases. When a source where security vulnerabilities are found is found, the vulnerability is generated as a rule and stored in the vulnerability database. The solution is stored in the solution database for easy updating and management.

본 발명은 프로그램의 보안 취약성에 대하여 검증하는 것으로 프로그램 개발 이후에 소스코드의 수정은 복잡하고 어려운 문제가 될 수 있으나, 본 발명의 시스템은 프로그램 개발 단계에서 하나의 라인이 입력되면 상기 입력된 소스에 대하여 실시간으로 보안상의 취약성을 표시한다.The present invention verifies the security vulnerabilities of the program, the modification of the source code after the program development can be a complex and difficult problem, but the system of the present invention, if one line is input at the program development stage, the input source Security vulnerability is displayed in real time.

본 발명에 따르면 프로그램의 개발은 단순한 형태가 아닌 복잡한 알고리즘을 이용하는 경우가 대부분이기 때문에 프로그램 개발 단계에서 프로그램의 보안 취약성을 검증하고 시스템 보안상의 취약한 부분을 표시하여 안정적인 프로그램을 개발할 수 있는 시스템을 제공할 수 있다.According to the present invention, since the development of a program is mostly using a complex algorithm rather than a simple form, it is possible to provide a system capable of developing a stable program by verifying a security vulnerability of the program at the program development stage and displaying a weak part of the system security. Can be.

따라서 프로그램 개발 단계에서 보안상의 취약한 문제를 사전에 방지함으로써 프로그램 실행 이후에 발생하는 보안 사고를 감소시켜 보안 방지에 소요되는 시간 및 비용을 절감할 수 있다.Therefore, it is possible to reduce the security incidents occurring after the program execution by reducing the security vulnerabilities at the program development stage in advance, thereby reducing the time and cost of security prevention.

Claims (3)

소프트웨어의 보안 취약성을 검증하는 시스템에 있어서,In systems that verify security vulnerabilities in software, 시스템을 통해 프로그래머가 입력하는 값을 분석하여 현재까지 입력된 소스코드의 내용을 분석하는 분석 모듈(100);An analysis module 100 for analyzing a value input by a programmer through a system to analyze contents of source codes inputted to date; 상기 분석 모듈로부터 분석된 내용이 버퍼 오버플로우 취약성을 가진 소스 코드인지 여부를 검사하기 위해 해당 소스를 룰 로더(rule Loader)로부터 입력되는 rule과 비교하는 Checker 모듈(200);A Checker module (200) for comparing a source inputted from a rule loader to check whether the content analyzed from the analysis module is source code having a buffer overflow vulnerability; 상기 Checker 모듈에 의해 버퍼 오버플로우 취약성을 가진 소스 코드의 일부분을 표시하는 Highlighter 모듈(400);A Highlighter module 400 for displaying a portion of source code having a buffer overflow vulnerability by the Checker module; 상기 Checker 모듈에 의해 버퍼 오버플로우 취약성을 가진 소스로 판명될 경우 그 취약성의 내용과 해당 취약성에 대한 해결책을 Resolution Loader 모듈로부터 가져와 그 내용을 message box로 화면상에 출력해 주는 Alerter 모듈(500);An alerter module (500) which, when determined by the Checker module as a source having a buffer overflow vulnerability, obtains the content of the vulnerability and a solution for the vulnerability from the Resolution Loader module and outputs the content on the screen in a message box; 버퍼 오버플로우 취약성을 가진 부분에 대하여 룰(rule)을 정의하고 상기 룰이 저장된 취약성 데이터베이스(Vulnerability rule repository, 700)와 시스템의 실행 시 상기 취약성 데이터베이스(Vulnerability rule repository, 700)를 오픈하고 룰(rule)을 loading하는 rule Loader 모듈(300);Define a rule for the part with the buffer overflow vulnerability, open the vulnerability database (Vulnerability rule repository) 700 where the rule is stored, and open the vulnerability database (Vulnerability rule repository) 700 when the system is running. A rule loader module (300) for loading); 상기 취약성 데이터베이스(Vulnerability repository, 700)에 있는 버퍼 오버플로우 취약성이 어떠한 형태인지와 해당 취약성을 해결할 수 있는 방법에 대한 내용이 저장된 해결책 데이터베이스(Resolution repository, 800)와 시스템의 실행 시 상기 해결책 데이터베이스(Resolution repository, 800)를 오픈하고 데이터를 loading하는 Resolution Loader 모듈(600); A solution repository (800) that stores information about the types of buffer overflow vulnerabilities in the vulnerability database (Vulnerability repository, 700) and how to resolve them. a Resolution Loader module 600 for opening the repository 800 and loading data; 로 이루어짐을 특징으로 하는 안전한 소프트웨어 개발을 위한 룰 기반의 실시간 탐지 시스템.Rule-based real-time detection system for secure software development, characterized in that consisting of. 소프트웨어의 보안 취약성을 검증하는 방법에 있어서,In the method of verifying the security vulnerability of the software, 취약성 데이터베이스(Vulnerability rule repository, 700)와 해결책 데이터베이스(Resolution repository, 800)를 오픈하고 데이터를 loading하는 단계(S_10);Opening a vulnerability database (Vulnerability rule repository) 700 and a solution database (Resolution repository 800) and loading data (S_10); 입력된 소트프웨어의 소스코드를 로딩하는 단계(S_20);Loading source code of the input software (S_20); 상기 입력된 소스코드를 parser를 통해 문서를 해석하여 분석하는 단계(S_30);Analyzing the input source code by analyzing a document through a parser (S_30); 상기의 분석한 데이터를 checker 모듈에 전달하는 단계(S_40);Delivering the analyzed data to a checker module (S_40); 상기의 분석한 내용이 버퍼 오버플로우 취약성을 가진 소스인지 취약성 데이터베이스(Vulnerability rule repository)의 룰(rule)과 비교/검증하는 단계(S_50);Comparing / verifying the analyzed content with a rule of a Vulnerability rule repository whether the source has a buffer overflow vulnerability (S_50); 상기 checker 모듈에서 발견된 취약성에 대하여 상기 취약성의 정보를 highlighter 모듈과 alerter 모듈로 전송하는 단계(S_60);Transmitting information on the vulnerability to a highlighter module and an alerter module with respect to the vulnerability found in the checker module (S_60); 상기 alerter 모듈에 전송된 취약성에 대하여 해결책 데이터베이스(Resolution repository)에서 저장된 해결책을 검색하는 단계(S_70);Retrieving a stored solution from a solution repository for a vulnerability transmitted to the alerter module (S_70); 상기 발견된 취약성을 해결하기 위한 해결책을 디스플레이하는 단계(S_80);Displaying a solution for solving the found vulnerability (S_80); 상기 비교/검증하는 단계(S_50)에서 취약성이 없을 경우 종료하는 단계;Terminating if there is no vulnerability in the comparing / verifying step (S_50); 를 포함하는 것을 특징으로 하는 안전한 소프트웨어 개발을 위한 룰 기반의 실시간 탐지 방법.Rule-based real-time detection method for secure software development comprising a. 제 2항에 있어서,The method of claim 2, 상기 highlighter 모듈에 전송된 정보에 대하여 소스코드를 변경하는 단계(S_71);Changing a source code with respect to the information transmitted to the highlighter module (S_71); 상기 변경된 소스코드를 사용자의 모니터에 디스플레이하는 단계(S_81);Displaying the changed source code on a user's monitor (S_81); 를 더 포함하는 것을 특징으로 하는 안전한 소프트웨어 개발을 위한 룰 기반의 실시간 탐지 방법. Rule-based real-time detection method for secure software development, characterized in that it further comprises.
KR1020050080571A 2005-08-31 2005-08-31 Real-time detection system and method based rule for safety software development KR100653122B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050080571A KR100653122B1 (en) 2005-08-31 2005-08-31 Real-time detection system and method based rule for safety software development

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050080571A KR100653122B1 (en) 2005-08-31 2005-08-31 Real-time detection system and method based rule for safety software development

Publications (1)

Publication Number Publication Date
KR100653122B1 true KR100653122B1 (en) 2006-12-01

Family

ID=37731839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050080571A KR100653122B1 (en) 2005-08-31 2005-08-31 Real-time detection system and method based rule for safety software development

Country Status (1)

Country Link
KR (1) KR100653122B1 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009116748A2 (en) * 2008-03-19 2009-09-24 주식회사케투씨소프트 Reserved component container-based software development method and apparatus
KR101640479B1 (en) 2015-08-28 2016-07-18 (주)엔키소프트 Software vulnerability attack behavior analysis system based on the source code
KR20160112744A (en) * 2015-03-20 2016-09-28 소프트캠프(주) document security system and security method
KR20180103475A (en) * 2017-03-10 2018-09-19 아주대학교산학협력단 Method and apparatus for detecting vulnerability of software
KR20190125251A (en) 2012-06-25 2019-11-06 (주)트리니티소프트 Method of interworking web-firewall and weak point analyzer
CN112534400A (en) * 2018-08-03 2021-03-19 大陆-特韦斯贸易合伙股份公司及两合公司 Method for analyzing source code

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009116748A2 (en) * 2008-03-19 2009-09-24 주식회사케투씨소프트 Reserved component container-based software development method and apparatus
WO2009116748A3 (en) * 2008-03-19 2009-12-17 주식회사케투씨소프트 Reserved component container-based software development method and apparatus
KR20190125251A (en) 2012-06-25 2019-11-06 (주)트리니티소프트 Method of interworking web-firewall and weak point analyzer
KR20160112744A (en) * 2015-03-20 2016-09-28 소프트캠프(주) document security system and security method
KR101670456B1 (en) 2015-03-20 2016-10-28 소프트캠프(주) document security system and security method
KR101640479B1 (en) 2015-08-28 2016-07-18 (주)엔키소프트 Software vulnerability attack behavior analysis system based on the source code
KR20180103475A (en) * 2017-03-10 2018-09-19 아주대학교산학협력단 Method and apparatus for detecting vulnerability of software
KR101968544B1 (en) 2017-03-10 2019-04-12 아주대학교산학협력단 Method and apparatus for detecting vulnerability of software
CN112534400A (en) * 2018-08-03 2021-03-19 大陆-特韦斯贸易合伙股份公司及两合公司 Method for analyzing source code

Similar Documents

Publication Publication Date Title
US8266700B2 (en) Secure web application development environment
US10120997B2 (en) Code instrumentation for runtime application self-protection
US8615804B2 (en) Complementary character encoding for preventing input injection in web applications
CN101356535B (en) A method and apparatus for detecting and preventing unsafe behavior of javascript programs
US8646088B2 (en) Runtime enforcement of security checks
US8850405B2 (en) Generating sound and minimal security reports based on static analysis of a program
US8635602B2 (en) Verification of information-flow downgraders
US20070271617A1 (en) Vulnerability check program, vulnerability check apparatus, and vulnerability check method
US8701186B2 (en) Formal analysis of the quality and conformance of information flow downgraders
Weber et al. A toolkit for detecting and analyzing malicious software
CN101751530B (en) Method for detecting loophole aggressive behavior and device
Piet et al. Jatmo: Prompt injection defense by task-specific finetuning
Endignoux et al. Caradoc: A pragmatic approach to pdf parsing and validation
JP2014532222A (en) Methods, computer program products, and equipment for evaluating downgrader code in application code (automatic detection of defects and incompatibility issues in information flow downgraders)
CN115269427A (en) Intermediate language representation method and system for WEB injection vulnerability
Leithner et al. Hydra: Feedback-driven black-box exploitation of injection vulnerabilities
Peguero et al. An empirical study of the framework impact on the security of javascript web applications
KR100653122B1 (en) Real-time detection system and method based rule for safety software development
Dubin Content disarm and reconstruction of RTF files a zero file trust methodology
Zhu et al. Detecting privilege escalation attacks through instrumenting web application source code
JP5077455B2 (en) Vulnerability audit program, vulnerability audit device, vulnerability audit method
Klein et al. Parse Me, Baby, One More Time: Bypassing HTML Sanitizer via Parsing Differentials
Wheeler Initial analysis of underhanded source code
Yu et al. Security Defect Detection via Code Review: A Study of the OpenStack and Qt Communities
Ghazaly Learning the idea behind SAST (static application security testing) and how it functions

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120913

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131030

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee