KR101012335B1 - 정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법 - Google Patents

정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법 Download PDF

Info

Publication number
KR101012335B1
KR101012335B1 KR1020100067990A KR20100067990A KR101012335B1 KR 101012335 B1 KR101012335 B1 KR 101012335B1 KR 1020100067990 A KR1020100067990 A KR 1020100067990A KR 20100067990 A KR20100067990 A KR 20100067990A KR 101012335 B1 KR101012335 B1 KR 101012335B1
Authority
KR
South Korea
Prior art keywords
analysis
string
program
space
strings
Prior art date
Application number
KR1020100067990A
Other languages
English (en)
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 KR1020100067990A priority Critical patent/KR101012335B1/ko
Application granted granted Critical
Publication of KR101012335B1 publication Critical patent/KR101012335B1/ko

Links

Images

Classifications

    • 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
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

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

Abstract

프로그램 내의 보안에 민감한 작업의 수행에 외부에서 입력된 값이 어떤 형태로 사용되는지 프로그램 실행 전에 미리 검사하기 위하여 요약해석에 기반 한 정적 분석을 수행함에 있어서, 이러한 목적에 최적화되어 취약성을 효과적이고 효율적으로 검출할 수 있는 정규표현식 기반의 요약공간과 이를 사용한 안전한 자료 흐름 분석 방법이 개시된다.
개시된 정규표현식 기반의 요약공간을 이용한 안전한 자료흐름 분석 방법은, 외부 입력을 특정한 기호로 나타내고 외부 입력으로부터의 위험문자열 제거 여부를 정규표현식을 사용하여 표현하는 요약 공간 정의단계와; 상기 정의한 요약 공간에서 프로그램을 가상으로 수행하여 외부로부터 입력되는 문자열이 안전에 민감한 함수의 인자로 어떻게 사용되는지를 분석하여 웹 응용 프로그램의 보안 취약성을 판단하는 분석단계를 포함한다.

Description

정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법{Secure Information Flow Analysis using Abstract Domain based on Regular Expressions}
본 발명은 요약해석(Abstract Interpretation) 방법론에 기반 한 프로그램 정적 분석(Static Analysis)에 있어서, 정규표현식(Regular Expressions) 기반의 요약공간(Abstract Domain)을 이용한 안전한 자료 흐름 분석(Secure Information Flow Analysis)에 관한 것으로서, 더욱 상세하게는 외부에서 입력되는 값에 대한 위험 문자열 제거를 정규표현식을 이용하여 표현하고 외부의 입력이 프로그램 내부의 수행에 있어서 어느 지점에서 어떤 형태로 사용되는지 프로그램 실행 전에 미리 검사함으로써 문자열 삽입(String Injection) 프로그램 공격의 위험성을 감소시킬 수 있도록 한 프로그램 정적 분석 방법에 관한 것이다.
오늘날 대부분의 웹 사이트 개발은 사용자의 상황이나 입력으로부터 적절한 처리를 거쳐서 페이지를 생성하는 동적인 웹 페이지가 사용되고 있다. JSP, ASP, PHP(PHP Hypertext Preprocessor), SERVLET 등의 웹 응용 프로그램(Web Application Program, HTTP를 기반으로 사용자 혹은 시스템 사이에 상호 작용하는 프로그램)은 웹 페이지로부터 사용자의 입력을 받아서 SQL 질의(SQL Query)를 생성하고, 생성된 SQL 질의의 결과로 반환되는 데이터베이스의 자료를 사용하여 요구에 맞는 웹 페이지를 생성하여 클라이언트에게 전송한다. 따라서 이러한 웹 응용 프로그램은 웹이라는 개방된 통로를 통하여 전달되는 입력을 사용하여 실행이 시작되고 내부의 중요한 데이터에 접근하는 특성으로 인하여 악의적인 다수의 공격(XSS 공격, SQL 삽입공격 등)에 노출되는 경우가 많다.
특히 최근 웹 서버에 대한 공격은 전통적인 웹 서버 자체에 대한 공격보다는 웹 응용 프로그램이 가지고 있는 취약점을 대상으로 한 공격이 증가하는 추세이다. 즉, 바이러스 방지(Anti-virus) 프로그램이나 네트워크 방화벽 같은 기술들은 컴퓨터 시스템과 네트워크 수준에서 높은 수준의 보안을 제공하고 있는 반면 웹 응용 프로그램 수준에서는 효과적인 방지책이 마련되지 못한 이유로, 웹 응용 프로그램의 열린 통로를 통한 공격은 더욱 증가하고 있다.
이러한 웹 응용 프로그램에 대한 공격 중 대표적인 공격 방법의 하나는 프로그램의 입력값 검증 취약성(Input Validation Vulnerability)을 사용한 문자열 삽입 공격(String Injection Attack)이다. 입력값 검증 취약성이란 외부로부터의 입력을 악의적인 입력에 대한 처리 없이 보안에 영향을 줄 수 있는 민감한 작업에 직접 사용함으로써 생기는 취약성을 말하며, XSS 공격이나 SQL 삽입공격 등의 문자열 삽입 공격이 모두 이러한 취약성을 이용한다.
이러한 웹 응용 프로그램의 공격에 대해서 다양한 탐지 및 방어 기법들이 제안되었다. 즉, 웹 응용 프로그램에 유효하지 않고 악의적인 입력을 걸러내는 게이트웨이를 이용한 웹 방화벽/게이트웨이, 가상의 공격을 통하여 웹 사이트의 보안 취약점을 찾아내는 블랙박스 검사, 프로그램을 직접 실행하지 않고 프로그램의 가능한 동작이나 생성되는 값을 프로그램 수행 전에 분석하여 프로그램의 실행정보를 안전하게 근사하여 알아내는 정적 분석(Static Analysis) 등이 그것이다.
그러나 웹 방화벽과 게이트웨이 방법은, 웹 사이트에 대한 모든 요청이 전단부의 필터를 거치게 되기 때문에 과도한 작업을 필터에 걸어주게 되며 보안상의 안정성이 여과를 위한 규칙 등의 환경설정에 전적으로 의존된다는 단점이 있다.
블랙박스 검사는 일종의 가상 공격으로서 현재 상업적으로 사용되는 방법이기는 하나, 검사를 통해서는 근본적으로 보안 취약성의 부재를 증명하지는 못하는 한계점을 가진다.
정적 분석에 기반 한 방법은 프로그램 수행 전에 대상 취약성의 부재를 보장할 수 있다는 장점이 있다. 그러나 외부에서 입력되는 문자열 자료값의 안전성 분석에 있어서 정적 분석에 기반 한 기존의 최신의 방법은 프로그램 내에서 생성되는 모든 문자열의 형태를 문맥 자유 문법(context free grammar)으로 근사하는 방법을 사용하므로 외부의 입력을 모두 일일이 표현하기 때문에 분석시간이 많이 소요된다는 단점이 있다.
이에 본 발명은 상기와 같은 기존 웹 응용 프로그램에 대한 문자열 삽입 공격에 대해서 다양한 탐지 및 방어 기법들에서 발생하는 제반 문제점을 해소하고, 웹 응용 프로그램의 취약성을 효과적으로 검출할 수 있도록 하기 위해서 제안된 것으로서,
본 발명이 해결하려는 과제는, 프로그램 내의 보안에 민감한 작업의 수행에 외부에서 입력된 값이 어떤 형태로 사용되는지 프로그램 실행 전에 미리 검사하기 위하여 요약해석에 기반 한 정적 분석을 수행함에 있어서, 이러한 목적에 최적화되어 취약성을 효과적이고 효율적으로 검출할 수 있는 정규표현식 기반의 요약공간을 제공하는데 있다.
또한 제공된 요약공간을 사용하여 정적 분석을 수행함에 있어서 필요한 문자열 접합(concatenation)과 대치(replace) 연산 등의 요약된 수행 규칙을 제공하는 데 있다.
상기와 같은 과제들을 해결하기 위한 본 발명에 따른 "정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법"은,
외부 입력 및 프로그램 내부의 계산으로 프로그램 내에서 생성될 수 있는 임의의 값을 유한하게 근사하여 표현하기 위하여 집합의 크기(cardinality)가 제한된 문자열들의 집합, 내부에서 생성된 임의의 숫자 표현, 내부에서 생성된 임의의 문자열값의 표현, 외부입력으로부터 제거된 문자열의 형태가 정규표현식으로 표시된 외부 입력 표현, 임의의 외부 입력 표현 등의 원소로 이루어진 요약된 자료 공간을 사용하고, 이러한 유한한 요약공간에서 프로그램을 수행하여 외부로부터 입력되는 문자열이 안전에 민감한 함수의 인자로 어떤 형태로 전달되어 사용되는지를 분석하여 웹 응용 프로그램의 보안 취약성을 판단한다.
또한, 본 발명은 외부 입력으로부터의 제거된 위험 문자열을 정규 표현식을 사용하여 표현함으로써 문자열 대치나 접합 등을 사용한 외부 입력 문자열의 변환 및 위험 문자 걸러내기 작업을 적절하게 분석한다.
또한, 본 발명은 기존 방법이 문맥자유문법 기반의 일반적인 문자열 분석을 사용했던 것과 대조적으로, 외부 입력을 특정한 기호로 나타내고 외부 입력으로부터의 위험문자열 제거 여부를 정규표현식을 사용하여 중점적으로 분석함으로써 분석 시간을 단축하면서도 입력값 검증과 관련된 웹 응용프로그램의 취약성을 효과적으로 검출하는 것을 특징으로 한다.
본 발명에서 채택한 정적 분석 방법론인 요약해석은 요약된 공간 내에서 프로그램을 실행하는 형식으로 분석을 수행하므로 C의 포인터 연산이나, PHP 언어에서와 같은 복잡한 이명(aliasing)과 변수에 저장된 문자열 값이 변수 명으로 사용되는 경우 등을 적절히 고려하면서 프로그램을 분석할 수 있는 장점이 있으며 요약공간의 형태에 따라 적절한 정밀도와 다양한 목적의 분석을 수행할 수 있어 대표적인 정적 분석 방법론(framework)으로 사용되고 있다.
본 발명에서 창안한 요약공간을 사용하여 요약해석 분석을 수행할 경우, 기존 방법이 문맥자유문법 기반의 일반적인 문자열 분석(string analysis)을 사용했던 것과 대조적으로, 외부 입력을 특정한 기호로 나타내고 외부 입력으로부터의 위험문자열 제거 여부만을 정규표현식을 사용하여 중점적으로 분석함으로써 분석 시간을 단축하면서도 입력값 검증과 관련된 웹 응용프로그램의 취약성을 효과적으로 검출할 수 있다.
따라서 본 발명의 결과를 사용하여 웹 응용 프로그램을 입력으로 받아 XSS 공격이나 SQL 삽입공격과 같은 문자열 삽입 공격에 대한 보안 취약성을 자동으로 검출할 수 있는 효율적이면서도 효과적인 프로그램 보안 취약성 정적 분석기를 개발할 수 있다.
도 1은 본 발명이 적용되는 PHP 보안 취약성 정적 분석기의 구조도.
도 2는 본 발명에 따른 정규표현식 기반의 요약공간의 래티스 구조도.
도 3은 본 발명의 요약공간을 사용한 프로그램 분석을 위한 요약해석 규칙 예시도.
도 4는 본 발명의 요약공간을 사용한 요약해석 규칙 정의를 위한 조인(join), 문자열 접합 및 치환 연산 정의와 부가적인 값 공간(domains) 정의 예시도.
이하 본 발명의 바람직한 실시 예를 첨부한 도면에 의거 상세히 설명하면 다음과 같다. 본 발명을 설명하기에 앞서 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다.
웹을 통해서 입력되는 검증되지 않은 입력 값은 프로그래머가 의도하지 않은 수행을 유도할 수 있는 악의적인 값을 가질 수 있다. 이 같은 외부로부터의 악의적인 입력이 적절한 처리를 거치지 않고 동적 웹페이지의 생성이나 데이터베이스 질의문 생성과 같은 민감한 작업에 사용되는 경우에 보안 취약성이 발생할 수 있다. 본 발명에서는 웹 응용 프로그램을 대상으로 한 문자열 삽입 공격 보안 취약성의 검출에 최적화된 정규표현식 기반의 요약공간을 사용하여 요약해석 분석을 수행함으로써 이러한 취약성을 효과적이면서도 효율적으로 검출하고자 한다.
도 1은 본 발명이 적용되는 PHP(PHP Hypertext Preprocessor) 보안 취약성 정적 분석기의 구조도로서, PHP 문법(10)을 입력으로 받아 구문분석기 및 어휘분석기를 자동으로 생성하는 컴파일러 전단부 생성부(20), 상기 전단부 생성부(20)에서 생성된 어휘 분석기(Lexer)와 구문 분석기(Parser)를 기반으로 분석 대상이 되는 PHP 프로그램을 입력으로 받아 프로그램에 대한 AST(abstract syntax tree)를 생성하는 전단부(30), 전단부 생성 시에 자동으로 함께 생성되는 트리 방문 클래스(DepthFirstAdapter, 40)를 확장하여 정의되는 정적 분석기(50), 해시 테이블에 저장된 상기 분석 결과로부터 주어진 PHP 프로그램의 보안 취약성 여부를 판단하고, 그 결과를 GUI를 통해 사용자에게 제공해주는 보안 취약성 판단기(60)로 이루어진다. 정적 분석기(50)는 전단부(30)에서 생성된 AST를 깊이 우선으로 순회하면서 정의된 요약 공간 기반의 프로그램 수행 규칙을 적용하여 프로그램을 분석하고, 분석 결과를 각 AST 노드에 대하여 분석값을 반환하는 해시 테이블(hash table)에 저장하게 된다.
도 2는 도 1의 정적 분석기(50)에서 프로그램의 각 부분의 실행으로 생성하는 값을 근사하여 나타내기 위한 요약공간을 래티스(lattice) 구조로 보여주고 있다. 각 상하로 연결된 관계는 상위의 표현이 하위의 표현이 나타내는 문자열을 모두 포함함을 나타낸다. 이러한 래티스 공간 내의 값들을 통하여 프로그램 각 지점에서 생성될 수 있는 무한한 값의 집합을 안전(sound)하게 근사하여 표현할 수 있게 되며 여기서 안전하다는 것은 실제 생성될 가능성이 있는 값을 모두 포함함을 의미한다.
도 2의 요약공간의 각 원소의 의미는 다음과 같다. ⊥는 아무 값도 가지지 않음을 나타내며, 해당 부분의 실제로 수행되지 않음을 나타낸다. {...}의 집합 형태표현은 해당 값을 가질 수 있음을 가능한 값들의 집합을 사용하여 직접 나타낸 것이며, i는 숫자값, true/false는 진리값(boolean), s는 일반적인 문자열을 나타낸다. 위 집합의 원소의 개수(cardinality)가 정해진 한도를 초과하면 숫자만 포함했을 경우에는 TN, 숫자가 아닌 문자열도 포함할 경우에는 TS로 근사함으로써 요약공간의 래티스 높이를 유한하게 유지할 수 있다. 따라서 TS는 외부에서 입력된 값을 제외하고는 임의의 값을 다 가질 수 있음을 나타내게 된다. 외부 입력값은 ε로 표시하고, 외부의 입력값에 대하여 제거된 문자열 형태가 있을 경우에는 제거된 형태를 정규표현식 x로 나타내어 ε(x)로 표현하며, 이는 외부 입력으로부터 정규 표현식 x로 표현되는 문자열들이 제거되었음을 나타낸다. ε와 ε(x)의 경우에 내부에서 생성된 값은 임의의 값을 다 가질 수 있는 것으로 간주하므로 래티스 상에서 Ts의 상위에 위치하게 된다. TS 하위에 있는 원소들은 외부의 입력이나 외부의 입력으로부터 만들어진 값을 포함하지 않는 경우만을 나타낸다.
도 3은 본 발명에서 제시된 요약공간을 기반으로 프로그램을 분석하기 위한, 프로그램의 요약된 의미(abstract semantics)의 일부를 나타내며 일반적인 실행의미 구조(operational semantics)의 형태를 가진다. 제시된 의미는 각각의 프로그램 형태에 대하여 주어진 요약된 메모리 상태에서 해당 프로그램을 수행한 후에 생성되는 메모리 상태와 결과 값을 명세함으로써 프로그램의 요약된 의미를 정의한다. 이러한 요약된 의미를 사용하여 프로그램을 요약 공간 내에서 수행해 봄으로써 프로그램 내의 모든 계산들이 생성할 수 있는 값들을 프로그램 수행 전에 알아낼 수 있다. 아직 주어지지 않은 불확실한 외부의 입력은 ε을 사용하여 표현된다.
도 4는 도 3의 요약된 의미 정의에 사용된 요약 공간 원소 사이의 대한 조인(join) 연산 및 문자열 연산을 제시하고 있다. 또한 요약된 의미 정의에 사용된 L, M과 같은 추가적인 값공간(domain)을 정의하고 있다.
1)은 외부 입력값을 나타내는 요약공간의 원소를 정의하고 있으며, 외부의 입력값으로부터 제거된 문자를 정규표현식으로 표시함으로써 위험한 외부 입력의 제거 여부를 나타낼 수 있다.
2)는 외부로부터의 입력이 없는 내부의 안전한 문자열 자료값을 나타내기 위한 원소들을 명세하고 있다. 집합 내의 원소의 최대 개수를 k로 제한하여 원소의 개수가 k개를 초과할 경우 원소들이 숫자만으로 이루어졌는지 여부에 따라 TS 또는 TN 으로 안전하게 근사하여 나타내게 된다.
3)은 요약해석 공간의 값들을 나타내며 1), 2)의 값들과 미정의를 나타내는 ⊥로 이루어진다.
4)의 ℓ는 메모리 내의 위치를 표현하는 값들의 집합인 Loc의 원소이다. s와 s[S]는 프로그램의 변수(예, $x)이름이나 배열(예, $x[$key]) 이름과 첨자(index)의 문자열을 나타낸다. s[T]는 정적 분석 시간에 배열의 첨자를 결정할 수 없는 경우를 나타낸다. 즉, PHP 프로그램 내에서 $array[$key]가 있을 경우, $key의 값을 정적 분석 시간에 결정할 수 없다면 이는 s[T]의 형태로 표현된다.
5)의 L은 메모리 내에서 가능한 위치들의 집합을 나타내며 Loc의 멱집합(powerset) Location의 원소로 표현한다. 정적 분석 시간에 위치를 결정할 수 없을 경우에는 ┬로 표현된다.
6)의 M은 특정 시점의 메모리 상태를 나타내며 Location의 원소 L에 대해 해당 위치의 값(Value)을 반환한다. 위치에 대한 값 반환 규칙은 i) ~ x)에서와 같이 나타낼 수 있으며 위로부터 우선순위를 갖는다. 불확실한 메모리 위치(T, s[T] 등)의 갱신에 대하여 갱신 가능성이 있는 위치의 값은 갱신 이전의 값과 불확실한 위치의 값의 조인으로 얻어진다.
7)은 요약 공간들 간의 조인(join)연산을 정의하고 있다. 역시 정의된 순서대로 우선순위를 갖는다.
i)의 경우는 외부로부터의 입력 값을 나타내는 최상위 원소 ε와 임의의 값 v와의 조인 연산을 정의하며, v의 값을 결과로 생성한다.
ii)의 경우는 제거된 문자열의 정규식 표현 r1, r2를 원소로 가지는 요약 공간의 값 ε(r1), ε(r2)의 조인관계를 나타내며, 이때의 결과는 각각의 원소들의 교집합(intersection)된 결과 r을 제거 문자열로 가지는 ε(r)을 결과로 생성한다.
iii)의 경우는 ε(r)와 내부에서 생성된 안전한 문자열 값의 집합만을 가지는 S와의 조인관계를 나타내며 이때의 결과는 원래 자신의 값인 ε(r)를 결과값으로 갖는다.
iv)의 경우는 내부의 안전한 문자열들의 최상위 요약공간인 Ts과 외부 입력을 포함하지 않은 값의 조인관계로써 상위 요약공간의 값인 Ts을 결과값으로 갖는다.
v)의 경우는 내부의 안전한 정수 값들의 최상위 요약공간인 TN와 하위 원소들과의 조인관계로써 iv)의 경우와 마찬가지로 자신의 값을 결과값으로 갖는다.
vi)는 ε(r), Ts, Tn를 포함하지 않는 그 외의 값 집합들(S1, S2)에 대한 조인 연산으로 두 값 집합을 합집한 집합의 원소의 수가 일정 한도(k)를 넘지 않을 경우 그 두 집합의 합집합을 결과로 생성하게 된다. 만약 합집합의 원소의 수가 정밀도 한도 값 k를 넘는 경우, 숫자만을 원소로 가진 경우 TN을 생성하며, 숫자가 아닌 값도 포함하면 TS를 조인 연산의 결과로 생성하게 된다.
8)은 요약공간 내 값들에 대한 연결함수(concatenation) 수행의 의미를 정의하며 7)과 마찬가지로 i)부터 우선순위를 갖는다.
9)는 요약공간상에서의 치환함수(replace)의 의미를 정의한다. replace 함수는 대상 값(v), 치환되는 패턴(r), 치환할 문자열(s)을 인자로 받아 v내의 r과 매치(match)되는 부분을 s로 치환한 결과를 생성한다. 즉, 치환함수 replace("abcd", "ab", "ef")는 수행 후에 결과값 "efcd"를 갖는다.
i)번은 ε에 대하여 치환할 문자열이 치환대상문자열의 부분문자열(substring)인 경우로서 이때는 치환 후의 결과에서 치환대상문자열이 모두 제거되지 않을 수 있으므로, replace 수행 전후의 값이 같게 된다.
ii) 번의 경우는 replace의 결과로 검색할 문자열에 포함되어 있던 치환대상 문자열들이 모두 제거되므로 요약공간 ε(r)이 된다.
iii) 번의 경우는 r이 제거된 문자열의 집합인 ε(r)에 대치 연산을 통해서 r과 r'의 부분문자열인 s가 치환되어서 삽입되면서 새로운 r과 r' 문자열이 포함될 수 있으므로 이전 치환의 문자열 제거에 의해 사라지게 되어 ε이 결과가 된다.
iv) 번의 경우 S는 r'의 부분문자열인 경우 S가 들어가면서 새로운 부분 문자열 r'이 생길 수 있으므로 결과는 replace 수행 전의 요약 공간인 ε(r)가 된다.
v) 번의 경우, S는 r의 부분문자열이므로 수행 전의 요약공간 ε(r)에서 제한된 표현식인 r이 수행 후에는 보장되지 않으며, 치환된 r'은 제거되므로 요약공간 ε(r')를 갖는다.
vi) 번의 replace를 수행한 후의 요약공간은 수행 전의 제한된 표현식 (r)과 치환대상 문자열의 표현 식(r')을 모두 제한한 요약공간을 갖는다.
vii)번의 경우, 제외 문자열은 외부의 입력만을 고려하므로 Ts의 replace 함수 수행결과는 TS가 된다.
viii)번은 유한한 문자열 집합({s1, … , sn})에 대한 대치 연산으로써 이것은 각각의 문자열 원소들을 대치하여 얻어진다.
제시된 요약공간과 수행 규칙을 사용하여 프로그램을 분석하고 보안에 민감한 값의 형태를 조사함으로써 프로그램의 안전성을 검사할 수 있다. 즉, 프로그램 내의 보안에 민감한 함수 f의 수행 f(x)에 대하여 x의 값이 ε로 분석된 경우 외부의 입력을 그대로 사용하므로 해당 함수 호출은 위험한 것이 된다. 또한 ε(r)로 분석된 경우 위험한 문자열 s에 대하여 s가 정규 표현식 r이 나타내는 문자열 집합에 포함된 경우 해당 문자열이 제거된 것이므로 위험 문자열 s의 전달로 인한 공격에 대하여 안전한 것이 되며, s가 r로 나타내는 문자열 집합에 포함되지 않은 경우 외부에서 입력되는 s는 제거되지 않고 f의 호출에 사용될 수 있으므로 해당 함수 호출은 위험한 것이 된다.
본 발명은 상술한 특정의 바람직한 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변형실시가 가능한 것은 물론이고, 그와 같은 변경은 청구범위 기재의 범위 내에 있게 된다.

Claims (5)

  1. 삭제
  2. 삭제
  3. 입력 값 분석을 통해 웹 응용 프로그램의 보안 취약성을 분석하기 위한 방법에 있어서,
    외부 입력과 PHP Hypertext Preprocessor 프로그램 내부에서 사용되는 문자열 자료 값들을 정규표현식으로 제외 문자열을 표현한 외부 입력 표시, 유한한 내부 문자열 집합, 임의의 내부 문자열 표시, 임의의 숫자 표시, 미정의 표시를 사용하여 근사하여 나타내는 요약 해석공간을 정의하는 요약공간 정의단계와;
    상기 정의한 가상의 요약 공간에서 프로그램을 수행하여 외부로부터 입력되는 문자열이 안전에 민감한 함수의 인자로 사용될 수 있는지를 분석하여 웹 응용 프로그램의 보안 취약성을 판단하는 분석단계를 포함하고,
    상기 요약공간 정의단계는,
    외부 입력을 포괄하여 나타내는 특정 표시를 사용하고, 이에 대하여 제거되는 문자열을 정규표현식으로 추가하여 표시하는 것을 특징으로 하는 정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법.
  4. 제3항에 있어서, 상기 분석단계는,
    안전에 민감한 함수의 인자가 생성할 수 있는 문자열을 분석함에 있어서 외부 입력 표시의 포함 여부와 정규 표현식으로 표시된 제거 문자열들의 검사를 통해 웹 응용 프로그램의 보안에 위협이 되는 문자열이 인자로 전달될 수 있는지를 분석하는 것을 특징으로 하는 정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법.
  5. 제4항에 있어서, 상기 문자열 분석 시 무한한 외부 입력을 특정 기호로 포괄하여 나타내어 분석 시간 단축하는 것을 특징으로 하는 정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법.
KR1020100067990A 2010-07-14 2010-07-14 정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법 KR101012335B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100067990A KR101012335B1 (ko) 2010-07-14 2010-07-14 정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100067990A KR101012335B1 (ko) 2010-07-14 2010-07-14 정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법

Publications (1)

Publication Number Publication Date
KR101012335B1 true KR101012335B1 (ko) 2011-02-09

Family

ID=43777073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100067990A KR101012335B1 (ko) 2010-07-14 2010-07-14 정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법

Country Status (1)

Country Link
KR (1) KR101012335B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101695277B1 (ko) * 2016-04-26 2017-01-11 (주)시큐레이어 비정형 데이터의 정규화를 수행하도록 지원하는 방법 및 이를 이용한 컴퓨팅 장치
KR101966356B1 (ko) * 2018-11-30 2019-04-08 (주)시큐레이어 머신러닝 기반 무중단 파서 업데이트 방법 및 이를 이용한 솔루션 서버

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060072353A (ko) * 2004-12-23 2006-06-28 한국전자통신연구원 파라미터 상태 추적을 통한 웹 응용프로그램 취약점의소스코드 분석 장치 및 방법
US20070074188A1 (en) 2005-05-16 2007-03-29 Yao-Wen Huang Systems and methods for securing Web application code
KR20100032095A (ko) * 2008-09-17 2010-03-25 한국항공대학교산학협력단 정적분석에 기반한 웹 응용프로그램 방화벽시스템 및 방화방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20060072353A (ko) * 2004-12-23 2006-06-28 한국전자통신연구원 파라미터 상태 추적을 통한 웹 응용프로그램 취약점의소스코드 분석 장치 및 방법
US20070074188A1 (en) 2005-05-16 2007-03-29 Yao-Wen Huang Systems and methods for securing Web application code
KR20100032095A (ko) * 2008-09-17 2010-03-25 한국항공대학교산학협력단 정적분석에 기반한 웹 응용프로그램 방화벽시스템 및 방화방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"웹 응용 프로그램의 보안 취약성 분석기 개발", 김영민, 한국항공대학교대학원 정보통신공학과 공학석사학위논문, pp.1-63 (2008.02.29.)*

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101695277B1 (ko) * 2016-04-26 2017-01-11 (주)시큐레이어 비정형 데이터의 정규화를 수행하도록 지원하는 방법 및 이를 이용한 컴퓨팅 장치
WO2017188534A1 (ko) * 2016-04-26 2017-11-02 (주)시큐레이어 비정형 데이터의 정규화를 수행하도록 지원하는 방법 및 이를 이용한 컴퓨팅 장치
US10152471B2 (en) 2016-04-26 2018-12-11 Seculayer Co., Ltd. Method for performing normalization of unstructured data and computing device using the same
KR101966356B1 (ko) * 2018-11-30 2019-04-08 (주)시큐레이어 머신러닝 기반 무중단 파서 업데이트 방법 및 이를 이용한 솔루션 서버

Similar Documents

Publication Publication Date Title
CN109302380B (zh) 一种安全防护设备联动防御策略智能决策方法及系统
US10387647B2 (en) Detecting script-based malware using emulation and heuristics
Weinberger et al. A systematic analysis of XSS sanitization in web application frameworks
Lekies et al. Code-reuse attacks for the web: Breaking cross-site scripting mitigations via script gadgets
Guarnieri et al. Saving the world wide web from vulnerable JavaScript
Kindy et al. A survey on SQL injection: Vulnerabilities, attacks, and prevention techniques
Scholte et al. Preventing input validation vulnerabilities in web applications through automated type analysis
Jovanovic et al. Static analysis for detecting taint-style vulnerabilities in web applications
Weinberger et al. An empirical analysis of XSS sanitization in web application frameworks
Zhao et al. A new framework of security vulnerabilities detection in PHP web application
Gorji et al. Detecting obfuscated JavaScript malware using sequences of internal function calls
Gupta et al. A client‐server JavaScript code rewriting‐based framework to detect the XSS worms from online social network
Klein et al. Hand sanitizers in the wild: A large-scale study of custom javascript sanitizer functions
Chenyu et al. Defending SQL injection attacks based-on intention-oriented detection
Vijayalakshmi et al. Case Study: extenuation of XSS attacks through various detecting and defending techniques
KR101012335B1 (ko) 정규표현식 기반의 요약공간을 이용한 안전한 자료 흐름 분석방법
CN108512859A (zh) 一种Web应用安全漏洞挖掘方法和装置
Azad et al. {AnimateDead}: Debloating web applications using concolic execution
Ablahd et al. Using flask for SQLIA detection and protection
Huang et al. Web application security—past, present, and future
CN115168861A (zh) 数据安全验证方法、装置、设备及存储介质
Gupta et al. A context-sensitive approach for precise detection of cross-site scripting vulnerabilities
Liljebjörn et al. Mantis the black-box scanner: Finding XSS vulnerabilities through parse errors
Shah Malicious javascript detection using statistical language model
Jovanovic et al. Pixy: A static analysis tool for detecting web application vulnerabilities (Technical report)

Legal Events

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

Payment date: 20140106

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150115

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee