KR20180009589A - 프로그램 분석 장치 및 방법 - Google Patents

프로그램 분석 장치 및 방법 Download PDF

Info

Publication number
KR20180009589A
KR20180009589A KR1020160091496A KR20160091496A KR20180009589A KR 20180009589 A KR20180009589 A KR 20180009589A KR 1020160091496 A KR1020160091496 A KR 1020160091496A KR 20160091496 A KR20160091496 A KR 20160091496A KR 20180009589 A KR20180009589 A KR 20180009589A
Authority
KR
South Korea
Prior art keywords
mvc
information
analyzer
analysis
call graph
Prior art date
Application number
KR1020160091496A
Other languages
English (en)
Other versions
KR101886203B1 (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 KR1020160091496A priority Critical patent/KR101886203B1/ko
Priority to US15/646,693 priority patent/US20180025162A1/en
Publication of KR20180009589A publication Critical patent/KR20180009589A/ko
Application granted granted Critical
Publication of KR101886203B1 publication Critical patent/KR101886203B1/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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

애플리케이션에 대해 동적 분석을 수행하고 메소드 호출 그래프를 추출하는 제1 분석기, 메소드 호출 그래프로부터 MVC(Model View Controller) 정보를 추출하는 MVC 정보 추출기, 및 MVC 정보를 활용해 애플리케이션의 소스 코드 분석에 적용할 호출 그래프를 확장하는 제2 분석기를 포함하는 프로그램 분석 장치가 개시된다. 본 프로그램 분석 장치에 따르면, 기존의 정적 분석을 통해서는 검출할 수 없었던 보안 취약점을 보완할 수 있다.

Description

프로그램 분석 장치 및 방법{APPARATUS AND METHOD FOR ANALYZING PROGRAMS}
본 발명은 프로그램 분석 장치 및 방법에 관한 것으로, 더욱 상세하게는 프로그램에 대한 동적 분석 결과를 정적 분석에 활용하는 프로그램 분석 장치 및 방법에 관한 것이다.
프로그램 분석은 크게 정적 분석과 동적 분석으로 구분될 수 있는데, 정적 분석은 프로그램 코드를 있는 그대로 분석하는 것이고, 동적 분석은 코드를 일부 실행시키거나 코드 실행 도중에 악성코드를 분석하는 과정을 의미한다.
동적 코드 분석 기법은 메모리 관리, 스레드(thread) 버그 탐지, 힙/스택 오버런 탐지 및 프로그램 프로파일링 (profiling) 등 다양한 목적으로 활용되고 있다. 이러한 코드 분석 기법은 목적 및 구현 방식에 따라 에뮬레이터, 프로세스 레벨 동적 코드 분석기 등 다양한 형태로 제공되고 있다.
정적 분석의 경우에는 디버깅 검출이나 가상환경 검출 등으로 분석을 방해하는 경우에는 대응할 수 있으나, 코드 변형이나 실행 압축된 경우, 암호화된 경우 등에는 보호전 코드를 복원해야 한다. 한편, 실행압축이나 코드 변형 문제로 인해 동적 분석을 수행하는 경우에는, 코드를 실행해 복원 코드를 만들어 코드를 확인하고, 악의적 기능을 확인하거나 취약점을 분석하기 위해 추가적으로 실행하여 그 결과 및 코드를 보고 판단하게 된다.
즉, 분석을 방해할 목적으로 실행 압축되었거나 암호화된 경우, 디버깅 감지 코드 등이 포함된 코드의 경우 등에는 분석을 방해하는 코드를 별도로 분석해야 하고, 소스 코드가 없이 실행 모듈이나 바이트 코드만 존재하는 경우에 대해서는 정적 분석을 수행할 수 없다.
이러한 정적 분석기는 주어진 소스 코드를 기반으로 분석을 수행하기 때문에, 소스 코드가 주어지지 않는 라이브러리를 거치는 제어 흐름의 경우 정상적으로 분석이 어렵다는 문제가 존재한다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 동적 분석 결과를 정적 분석에 활용하는 프로그램 분석 장치를 제공하는 데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 동적 분석 결과를 정적 분석에 활용하는 프로그램 분석 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 프로그램 분석 장치는, 애플리케이션에 대해 동적 분석을 수행하고 메소드 호출 그래프를 추출하는 제1 분석기, 상기 메소드 호출 그래프로부터 MVC(Model View Controller) 정보를 추출하는 MVC 정보 추출기, 및 상기 MVC 정보를 활용해 애플리케이션의 소스 코드 분석에 적용할 호출 그래프를 확장하는 제2 분석기를 포함한다.
여기서, MVC 정보는 컨트롤러와 뷰 간의 제어 흐름에 관한 정보를 포함한다.
상기 제2 분석기는 확장된 호출 그래프를 이용해 상기 애플리케이션의 제어 흐름을 분석하며, 입력된 애플리케이션의 소스 코드를 분석하여 분석 정보를 생성하는 코드 분석부 및 상기 MVC 정보를 이용해 분석용 호출 그래프을 확장하는 호출그래프 확장부를 포함할 수 있다.
상기 MVC 정보 추출부는, 상기 메소드 호출 그래프에 포함된 MVC 패턴을 인식하고, 상기 인식된 MVC 패턴 내에서 디스패처 서블릿으로부터 호출된 컨트롤러 메소드 및 뷰 메소드를 파악한다.
상기 MVC 패턴은 스프링(spring) 또는 스트러츠(struts) 프레임워크 라이브러리를 이용해 구현될 수 있다.
상기 목적을 달성하기 위한 본 발명의 다른 실시예에 따른 프로그램 분석 장치는, 애플리케이션에 대해 동적 분석을 수행하고 메소드 호출 그래프를 추출하는 제1 분석기, 상기 메소드 호출 그래프로부터 MVC(Model View Controller) 정보를 추출하는 서버, 및 상기 MVC 정보를 활용해 애플리케이션의 소스 코드 분석에 적용할 호출 그래프를 확장하는 제2 분석기를 포함하고, 상기 MVC 정보는 컨트롤러와 뷰 간의 제어 흐름에 관한 정보를 포함할 수 있다.
본 발명의 다른 목적을 달성하기 위한 본 발명의 일 실시예에 따른 프로그램 분석 방법은, 애플리케이션에 대해 동적 분석을 수행하고 메소드 호출 그래프를 추출하는 단계, 상기 메소드 호출 그래프로부터 MVC 정보를 추출하는 단계, 및 상기 MVC 정보를 활용해 애플리케이션의 소스 코드 분석에 적용할 호출 그래프를 확장하는 단계를 포함할 수 있다.
상기 프로그램 분석 방법은, 상기 확장된 호출 그래프를 이용해 상기 애플리케이션의 제어 흐름을 분석하는 단계를 더 포함할 수 있다.
상기 프로그램 분석 방법은 또한, 입력된 애플리케이션의 소스 코드 및 제어 흐름을 분석하여 분석 정보를 생성하는 단계를 더 포함할 수 있다.
한편, 상기 MVC 정보를 추출하는 단계는, 상기 메소드 호출 그래프에 포함된 MVC 패턴을 인식하는 단계 및 상기 인식된 MVC 패턴 내에서 디스패처 서블릿으로부터 호출된 컨트롤러 메소드 및 뷰 메소드를 파악하는 단계를 포함할 수 있다.
상기와 같은 본 발명의 실시예에 따르면, 기존의 정적 분석을 통해서는 검출이 어려웠던 MVC 패턴이 사용된 애플리케이션도 추가로 검출 가능하게 됨으로써, 정적 분석 방법의 보안 취약점을 보완할 수 있다.
도 1은 본 발명의 일 실시예에 따른 프로그램 분석 장치의 블록 구성도이다.
도 2는 본 발명의 다른 실시예에 따른 프로그램 분석 장치 및 그 구성요소 간에 이루어지는 프로그램 분석 흐름을 나타낸 도면이다.
도 3은 본 발명에 적용되는 MVC 아키텍쳐 패턴을 나타낸 도면이다.
도 4는 본 발명에 적용될 수 있는 스프링 프레임워크 내 구성요소들의 동작 흐름을 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따른 MVC 정보 추출의 개념을 나타내는 개념도이다.
도 6은 본 발명의 일 실시예에 따른 정적 분석기의 상세 블록 구성도이다.
도 7은 본 발명의 일 실시예에 따른 프로그램 분석 방법의 동작 흐름도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. "및/또는"이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 프로그램 분석 장치의 블록 구성도이다.
도 1에 도시된 바와 같이 본 발명의 일 실시예에 따른 프로그램 분석 장치는 동적 분석기(100), 서버(200), 정적 분석기(300)를 포함하여 구성될 수 있다.
동적 분석기(100)는 동작 중인 분석 대상 프로그램에 영향을 미치지 않으면서 분석 대상 프로그램의 실행을 추적하고 디버깅하거나 프로파일링할 수 있는 분석 기법을 활용해 프로그램을 분석한다. 본 발명에 따른 동적 분석기(100)는 이러한 프로그램의 동적 분석 과정에서 도출되는 메소드 호출 그래프를 서버(200)로 제공한다.
서버(200)는 동적 분석기(100) 및 정적 분석기(300)를 중개하며, 동적 분석기(100)로부터 수신한 메소드 호출 그래프로부터 MVC(Model View Controller) 정보를 추출한다. 여기서, MVC 정보는 호출 그래프 상에서 디스패처 서블릿으로부터 호출된 컨트롤러 메소드와 뷰 메소드를 파악하여 컨트롤러-뷰 관계가 정의되는 정보를 포함한다.
서버(200)는 또한, 정적 분석기(300)로부터 MVC 정보 요청이 있는 경우 MVC 정보를 정적 분석기(300)로 제공한다.
정적 분석기(300)는 정적 프로그램 분석(Static Code Analysis)을 이용해 컴퓨터 소프트웨어를 분석한다. 정적 분석은 소프트웨어를 직접 실행하지 않고 개발중인 소프트웨어의 소스 코드를 대상으로 분석을 수행한다.
여기서, 정적 분석은 정적 프로그램 분석을 사람의 손이 아닌 소프트웨어를 이용하여 자동적으로 수행하도록 개발된 프로그램이다. 일반적으로 소스 코드의 크기는 매우 방대하며, 사람의 손으로 일일이 정적 프로그램 분석을 수행하는 것은 거의 불가능하므로 이러한 분석을 자동화하여 수행하도록 도와준다. 정적 분석 도구는 종류에 따라 소스 코드에서 다양한 종류의 결함이나 취약점을 검출할 수 있으며, 분석을 통해 검출된 결함을 사용자에게 제공한다.
일반적인 정적 분석에 따르면 MVC 패턴을 포함하는 애플리케이션의 제어 흐름을 분석하기 어렵다. 따라서, 본 발명에 따른 정적 분석기(300)는 서버(200)로부터 수신한 MVC정보를 이용해 분석용 호출 그래프를 확장하여 프로그램 분석을 수행한다.
도 2는 본 발명의 다른 실시예에 따른 프로그램 분석 장치 및 그 구성요소 간에 이루어지는 프로그램 분석 흐름을 나타낸 도면이다.
도 2에 도시된 바와 같이 본 발명의 다른 실시예에 따른 프로그램 분석 장치는 제1 분석기(100), 서버(200), 제2 분석기(300)를 포함하여 구성될 수 있다.
제 1 분석기(100)는 실행 중인 애플리케이션을 분석하여 메소드 호출 그래프를 생성한다.
제1 분석기(100)의 바람직한 실시예로는 동적 분석기를 들 수 있겠으나 본 발명에 따른 제1 분석기(100)의 형태가 동적 분석기로 한정되는 것은 아니다. 제1 분석기(100)는 동적 분석을 수행하는 도중 웹 애플리케이션에서 메소드 호출 정보를 수집하여 호출 그래프 형태로 생성한다.
애플리케이션은 그 프로그램의 수행에 필요한 여러가지 함수/메소드들을 포함하는데, 그 중 분석하고자 하는 함수/메소드가 있으면, 이 함수/메소드는 여러가지 명령어(instruction)들로 구성되어 있다. 함수/메소드 실행시에, 이들 명령어들을 일정한 갯수씩 묶은 페이지 단위로 시스템 메모리로 로딩되어 함수가 실행된다. 즉, 먼저 제1페이지를 시스템 메모리에 로딩하여 실행한 후, 다음 페이지인 제2페이지를 시스템 메모리에 로딩하여 실행하는 방식으로 함수/메소드가 실행된다.
이렇듯 애플리케이션이 실행되는 동안 애플리케이션의 프로파일링을 위하여 이용되는 개요를 나타내기 위해 메소드 호출 그래프가 사용된다. 프로파일링은 애플리케이션의 동작을 이해하고 애플리케이션 및 애플리케이션들의 소스들에서의 오류를 검출하고, 애플리케이션의 성능을 분석하는 데 필요하다.
메소드 호출 그래프는 메소드 간의 호출 관계를 표현한 그래프이다. 각 메소드들은 하나의 노드(Node)로 표현되고, 메소드 A가 메소드 B를 호출하는 코드를 갖고 있을 때 B에서 A 방향으로 연결된 엣지(Edge)를 생성함으로써 방향성을 갖는 그래프가 생성된다.
제1 분석기(100)에 의해 생성된 메소드 호출 그래프는 서버(200)로 전달되며, 본 발명의 일 실시예에 따른 서버(200)는 MVC 추출부(210)를 포함한다. MVC 추출부(210)는 메소드 호출 그래프를 이용해 MVC 정보를 추출한다. 여기서, MVC 정보는 컨트롤러와 뷰 간의 제어 흐름에 관한 정보를 포함한다.
한편, 도 2에 도시된 본 발명의 실시예에서는 MVC 추출부(210)가 서버(200) 내에 포함된 것으로 도시되어 있으나, MVC 추출부(210)가 제1 분석기(100) 또는 제2 분석기(300) 내에 위치하도록 구성될 수 있으며 이 경우 본 발명에 따른 프로그램 분석 장치는 별도의 서버를 필요로 하지 않을 수 있다.
MVC 추출부(210)에 의해 추출된 MVC 정보는 제2 분석기(300)로 전달되며, 제2 분석기(300)는 MVC 정보를 이용하여 기존의 분석용 호출 그래프를 확장한다. 
제2 분석기(300)의 바람직한 실시예로는 정적 분석기를 들 수 있겠으나 본 발명에 따른 제2 분석기(300)의 형태가 정적 분석기로 한정되는 것은 아니다.
제2 분석기(300)는 정적 프로그램 분석(Static Code Analysis)을 이용해 컴퓨터 소프트웨어를 분석한다. 정적 분석은 소프트웨어를 직접 실행하지 않고 개발중인 소프트웨어의 소스 코드를 대상으로 분석을 수행한다.
정적 분석 도구(Static Analysis Tool)는 정적 프로그램 분석을 사람의 손이 아닌 소프트웨어를 이용하여 자동적으로 수행하도록 개발된 프로그램이다. 일반적으로 소스 코드의 크기는 매우 방대하며, 사람의 손으로 일일이 정적 프로그램 분석을 수행하는 것은 거의 불가능하므로 이러한 분석을 자동화하여 수행하도록 도와준다. 정적 분석 도구는 종류에 따라 소스 코드에서 다양한 종류의 결함이나 취약점을 검출할 수 있으며, 분석을 통해 검출된 결함을 사용자에게 제공한다.
본 발명에서는 제2 분석기(300)가 분석하는 애플리케이션이 MVC 패턴을 갖는 경우에 주목한다. MVC 패턴의 경우 컨트롤러-뷰로 이어지는 제어 흐름을 분석하기 어려워 프로그램 분석이 어렵다는 문제를 가진다. 제2 분석기(300)는 MVC패턴의 컨트롤러-뷰 관계를 활용하여 컨트롤러 메소드로부터 뷰 메소드로 이어지는 제어 흐름을 생성하고 분석한다.
이하 도 3 내지 5에서는 본 발명의 이해를 돕기 위해 MVC 프레임워크 및 MVC 패턴의 특징에 대해 살펴보기로 한다.
도 3은 본 발명에 적용되는 MVC 아키텍쳐 패턴을 나타낸 도면이다. 도 3의 좌측에는 MVC1 패턴이, 우측에는 MVC2 패턴이 도시되어 있다.
본 발명이 적용되는 MVC 패턴의 경우 스프링(Spring)이나 스트러츠(Struts)와 같은 프레임워크 라이브러리를 이용하여 구현하기 때문에 컨트롤러-뷰로 이어지는 제어 흐름을 분석하기가 어렵다.
MVC(Model View Cotnroller)는 모델, 뷰, 및 컨트롤러로 자바 클래스를 나누어 제작하는 방식으로, 화면과 데이터 처리를 분리해서 재사용이 가능하게 만든 아키텍쳐 패턴이다.
도3에 도시된 바와 같이 MVC1 패턴은 뷰와 컨트롤러가 혼재되어 있는 형태를 띠며, MVC2 패턴에서는 모든 요청이 기본적으로 컨트롤러를 호출하는 형태를 띤다. MVC2 패턴은 뷰와 컨트롤러가 분리됨으로써, 개발자와 웹 퍼블리셔의 영역을 나누고, URI를 통해 뷰를 제어한다.
한편, 프레임워크는 웹 개발의 효용성과 유지보수성을 높이기 위해 만들어지는 것으로 MVC 패턴의 개발을 위한 프레임워크로는 스트러츠(Struts), 스프링(Spring) 등이 있다.
스트러츠 프레임워크는 웹 애플리케이션의 프론트엔드 제어를 위해 설계되고 개발된 것으로 사용자와 상호작용하는 애플리케이션을 위한 다양한 기능들을 제공한다.
스프링 프레임워크도 여러 태스크를 핸들링하도록 설계되었는데, 데스크탑 및 인터넷 기반의 애플리케이션을 위한 것으로 프론트 컨트롤러라는 패턴을 이용한다. 다시 말해, 스프링 프레임워크는 컨트롤러 앞단에 프론트 컨트롤러가 위치하는 구조인데, 입력되는 사용자의 모든 요청을 프론트 컨트롤러가 받아 전체 흐름을 제어하게 된다. 컨트롤러는 전체 로직 중 일부만을 위임을 통해 처리하게 된다.
스트러츠 및 스프링 프레임워크 모두 MVC2 패턴을 따른다.
도 4는 본 발명에 적용될 수 있는 스프링 프레임워크 내 구성요소들의 동작 흐름을 나타내는 도면이다.
스프링 MVC아키텍쳐는, 디스패처 서블릿(410), 핸들러 매핑(420), 컨트롤러(430), 뷰 결정기(440), 뷰(450), 모델&뷰 등을 핵심요소로 하여 구성될 수 있으며, 도 4는 스프링 프레임워크를 구성하는 이러한 구성요소들이 어떻게 동작하는지 보여준다.
스프링 프레임워크의 앞단에 위치하는 디스패처 서블릿(410)이 애플리케이션을 위한 엔트리 포인트이다. 디스패처 서블릿(410)이 요청을 수신하면 해당 요청을 처리할 핸들러를 결정하고, 핸들러는 컨트롤러를 호출한다. 컨트롤러는 모델&뷰를 실행하게 된다.
좀더 구체적으로, 디스패처 서블릿(410)은 스프링 프레임워크의 프론트 컨트롤러 역할을 한다. 즉, 디스패처 서블릿(410)은 입력되는 모든 요청을 수신하여 애플리케이션의 전체 흐름을 제어한다.
핸들러 매핑(420)은 디스패처 서블릿(410)에 의해 사용되는 전략(Strategy) 인터페이스로, 개별 컨트롤러로 수신되는 요청을 매핑하는 역할을 한다. 핸들러 매핑(420)은 입력되는 요청을 식별하여 해당 서비스를 제공하는 개별 핸들러를 호출한다.
컨트롤러(430)는 요청을 처리하기 위한 사용자 생성 요소로, 내비게이션 로직 대표자를 비즈니스 로직을 위한 객체로 캡슐화한다.
모델&뷰(ModelAndView)는 스프링 프레임워크의 핵심 부분으로, 애플리케이션의 비즈니스 로직을 구현한다. 모델&뷰는 컨트롤러에 의해 제어되며, 비즈니스 로직 및 관련 뷰를 저장한다.
디스플레이될 출력이 어떻게 디스플레이될지는 모델&뷰로부터 수신한 결과에 의존하는데, 뷰 결정기(ViewResolver, 440)가 논리적인 뷰 이름을 실제 뷰 구현에 매핑하는 역할을 한다. 즉, 뷰 결정기(440)는 출력 미디어가 무엇이고 그것을 어떻게 디스플레이할 것인지 식별하고 구현한다.
뷰(450)는 출력을 렌더링하는 역할을 수행하는데, 결과 및 디스플레이 디바이스, 통신 디바이스에 대한 여러 유형의 출력을 기반으로 다른 뷰들이 선택될 수 있다.
살펴본 바와 같이 MVC 패턴의 경우 모델, 뷰, 및 컨트롤러의 요소로 표현될 수 있다.
도 5는 본 발명의 일 실시예에 따른 MVC 정보 추출의 개념을 나타내는 개념도이다.
도 5에서는 메소드 호출 그래프(50)의 형태를 확인할 수 있다. 도 5에 나타낸 바와 같이 각 메소드들은 하나의 노드(Node)로 표현되어 있으며, 메소드 A가 메소드 B를 호출하는 코드를 갖고 있을 때 B에서 A 방향으로 연결된 엣지(Edge)로 그 방향성이 표시되어 있다.
본 발명에 따른 프로그램 분석 방법에서는 분석 대상 애플리케이션이 MVC 패턴을 가지는 경우, 메소드 호출 그래프를 MVC 프레임워크를 이용해 분석한다. 다시 말해, 해당 애플리케이션이 MVC를 프레임워크를 이용해 제작된 경우, 해당 애플리케이션의 메소드 호출 그래프에서 도 5에 도시된 바와 같이 디스패처 서블릿으로부터 호출된 컨트롤러 메소드 및 뷰 메소드를 파악할 수 있고, 컨트롤러-뷰 관계가 정의된 MVC 정보를 획득할 수 있다.
즉, 본 발명에 따른 MVC 정보 추출부는 메소드 호출 그래프에 포함된 MVC 패턴을 인식하고, 인식된 MVC 패턴 내에서 디스패처 서블릿으로부터 호출된 컨트롤러 메소드 및 뷰 메소드를 파악한다. 여기서, MVC 패턴은 앞서 도 3 및 4를 통해 살펴본 바와 같은 스프링(spring) 또는 스트러츠(struts) 프레임워크 라이브러리를 이용해 구현된다.
도 6은 본 발명의 일 실시예에 따른 정적 분석기의 상세 블록 구성도이다.
도 6의 실시예는 MVC정보 추출이 서버(200)에 의해 이루어지는 경우를 도시하고 있으며, 앞서 설명한 바와 같이 MVC 정보 추출은 제1 분석기(100) 또는 제2 분석기(300)에 의해 수행될 수 있다.
본 발명의 일 실시예에 따른 정적 분석기(300)는 프로그램 정보, 즉 프로그램 소스코드(혹은 실행 코드)를 입력받아 정적 분석 정보를 생성한다.
정적 분석 정보는 소스코드를 분석하여 도출되는 애플리케이션의 동작 흐름 그래프(Control Flow Graph), 사용되는 변수정보, 이벤트 정보, 권한 관련 설정 정보 등을 포함한다.
본 발명의 일 실시예에 따른 정적 분석기(300)는 코드 분석부(310), MVC정보 요청부(320), MVC정보 수신부(330), 및 호출 그래프 확장부(340)를 포함하여 구성될 수 있다.
코드 분석부(310)는 입력된 애플리케이션의 소스 코드를 분석하여 분석 정보를 생성한다. 분석정보는 정보 도출 및 전송에 관련된 권한 목록 등을 포함한다. 코드 분석부(310)는 해당 애플리케이션이 MVC 패턴를 사용하는 것으로 판단한 경우, MVC정보 요청부(320)로 이를 통지한다.
MVC정보 요청부(320)는 코드 분석부(310)의 통지를 수신하여 애플리케이션과 관련한 MVC 정보를 서버(200)로 요청한다.
MVC정보 수신부(330)는 서버(200)에 의해 추출된 MVC 정보를 수신한다.
호출 그래프 확장부(340)는 MVC정보 수신부(330)를 통해 전달 받은 MVC 정보를 활용해 기존의 분석용 호출 그래프를 확장한다.
호출 그래프 확장부(340)를 통해 확장된 분석용 호출 그래프은 다시 코드 분석부(310)로 제공되며, 코드 분석부(310)에서는 확장된 호출 그래프을 활용해 MVC 패턴이 사용된 애플리케이션의 소스 코드에 대해 분석을 수행한다.
본 발명에 따른 코드 분석부(310)는 또한, 구문 분석, 결함 검출, 수정예시 생성, 분석결과 전달의 기능을 수행할 수 있다. 구체적으로, 코드 분석부(310)는 구문 분석 기능을 통해 입력받은 소스 코드로부터 분석에 필요한 각종 정보들을 추출하고 정제한다. 여기서, 분석에 필요한 정보는, 예를 들어, 추상 구문 트리나 소스 코드의 라인 수, 위치 정보 등이 될 수 있다.
코드 분석부(310)는 또한, 구문 분석을 통해 정제된, 분석에 필요한 정보들을 토대로 소스 코드에서 문제가 될 수 있는 결함 정보를 검출한다. 결함 정보는 예를 들어, 결함이 실제 발생한 소스 코드의 파일명, 라인과 같은 위치 정보와 결함의 종류, 실제 결함의 원인이 된 부분, 결함이 발생하게 된 소스 코드의 흐름과 같은 실제 결함 정보 등으로 구성될 수 있다.
도 7은 본 발명의 일 실시예에 따른 프로그램 분석 방법의 동작 흐름도이다.
본 발명의 일 실시예에 따른 프로그램 분석 방법은 동적 분석 결과를 정적 분석에 활용하는 분석 방법으로, 크게 제1 분석기(100) 및 제2 분석기(300)를 그 동작 주체로 하여 수행될 수 있다.
제1 분석기의 바람직한 실시예로는 동적 분석기를 들 수 있으며, 제2 분석기의 바람직한 실시예로는 정적 분석기를 들 수 있다.
본 발명에 따른 프로그램 분석 방법에서는 애플리케이션의 소스 코드에 대한 정적 분석 수행 단계(S7101), 그리고 애플리케이션에 대한 동적 분석 수행 단계(S7201), 메소드 호출 그래프 획득 단계(S7202), 및 MVC정보 추출 단계(S7203)가 선행된다.
소스 코드에 대해 정적 분석을 수행한 제2 분석기(300)는 해당 애플리케이션에 MVC 패턴이 존재하는 경우(S7102), 제1 분석기로 MVC 정보를 요청한다(S7103).
S7101단계와 S7201 내지 S7203 단계 간에는 선후가 정해질 필요가 없으나, 제2 분석기(300)에 의해 MVC 정보가 요청되기 전 S7201 내지 S7203 단계가 완료되는 것이 바람직하다. 구현예에 따라서는, MVC정보 추출 단계(S7203)가 제2 분석기(300)로부터 MVC 정보 요청을 받은 이후 수행되는 순서 또한 가능하다.
여기서, MVC정보 추출 단계(S7203)는 세부적으로, 메소드 호출 그래프에 포함된 MVC 패턴을 인식하는 단계 및 인식된 MVC 패턴 내에서 디스패처 서블릿으로부터 호출된 컨트롤러 메소드 및 뷰 메소드를 파악하는 단계를 포함할 수 있다.
제2 분석기(300)로부터 MVC 정보를 요청 받은 제1 분석기(100)는 메소드 호출 그래프로부터 추출된 MVC 정보를 회신한다(S7204).
도 7의 실시예에서는 메소드 호출 그래프로부터 MVC 정보를 추출하는 단계(S7203)가 제1 분석기(100)에 의해 수행되는 것으로 도시되었으나, 앞서 본 발명의 다른 실시예를 통해 살펴본 바와 같이 MVC 정보의 추출은 별도의 서버, 또는 제2 분석기(300) 혹은 다른 장치에 의해서도 구현될 수 있다.
제2 분석기(300)가 MVC 정보를 수신하면(S7300), 이를 활용해 분석용 호출 그래프를 확장하고(S7301), 확장된 분석용 호출 그래프를 이용해 애플리케이션의 제어 흐름을 분석한다(S7302).
본 실시예에 따른 프로그램 분석 방법은, 입력된 애플리케이션의 소스 코드 및 제어 흐름을 분석하여 분석 정보를 생성하는 단계를 더 포함할 수 있다.
본 발명의 실시예에 따른 프로그램 분석 방법의 동작은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다.
또한, 컴퓨터가 읽을 수 있는 기록매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 제1 분석기, 동적 분석기 200: 서버
210: MVC 추출부 300: 제2 분석기, 정적 분석기
310: 코드 분석부 320: MVC정보 요청부
330: MVC정보 수신부 340: 호출그래프 확장부
50: 메소드 호출 그래프

Claims (15)

  1. 애플리케이션에 대해 동적 분석을 수행하고 메소드 호출 그래프를 추출하는 제1 분석기;
    상기 메소드 호출 그래프로부터 MVC(Model View Controller) 정보를 추출하는 MVC 정보 추출기; 및
    상기 MVC 정보를 활용해 애플리케이션의 소스 코드 분석에 적용할 호출 그래프를 확장하는 제2 분석기를 포함하는 프로그램 분석 장치.
  2. 청구항 1에 있어서,
    상기 MVC 정보는 컨트롤러와 뷰 간의 제어 흐름에 관한 정보를 포함하는, 프로그램 분석 장치.
  3. 청구항 1에 있어서,
    상기 제2 분석기는 확장된 호출 그래프를 이용해 상기 애플리케이션의 제어 흐름을 분석하는, 프로그램 분석 장치.
  4. 청구항 1에 있어서,
    상기 제1 분석기는 동적 분석기인, 프로그램 분석 장치.
  5. 청구항 1에 있어서,
    상기 제2 분석기는 정적 분석기인, 프로그램 분석 장치.
  6. 청구항 1에 있어서,
    상기 제2 분석기는,
    입력된 애플리케이션의 소스 코드를 분석하여 분석 정보를 생성하는 코드 분석부; 및
    상기 MVC 정보를 이용해 분석용 호출 그래프을 확장하는 호출그래프 확장부를 포함하는, 프로그램 분석 장치.
  7. 청구항 2에 있어서,
    상기 MVC 정보 추출부는,
    상기 메소드 호출 그래프에 포함된 MVC 패턴을 인식하고, 상기 인식된 MVC 패턴 내에서 디스패처 서블릿으로부터 호출된 컨트롤러 메소드 및 뷰 메소드를 파악하는, 프로그램 분석 장치.
  8. 청구항 7에 있어서,
    상기 MVC 패턴은 스프링(spring) 또는 스트러츠(struts) 프레임워크 라이브러리를 이용해 구현되는, 프로그램 분석 장치.
  9. 애플리케이션에 대해 동적 분석을 수행하고 메소드 호출 그래프를 추출하는 단계;
    상기 메소드 호출 그래프로부터 MVC(Model View Controller) 정보를 추출하는 단계; 및
    상기 MVC 정보를 활용해 애플리케이션의 소스 코드 분석에 적용할 호출 그래프를 확장하는 단계를 포함하는, 프로그램 분석 방법.
  10. 청구항 9에 있어서,
    상기 MVC 정보는 컨트롤러와 뷰 간의 제어 흐름에 관한 정보를 포함하는, 프로그램 분석 방법.
  11. 청구항 9에 있어서,
    상기 확장된 호출 그래프를 이용해 상기 애플리케이션의 제어 흐름을 분석하는 단계를 더 포함하는, 프로그램 분석 방법.
  12. 청구항 9에 있어서,
    입력된 애플리케이션의 소스 코드 및 제어 흐름을 분석하여 분석 정보를 생성하는 단계를 더 포함하는, 프로그램 분석 방법.
  13. 청구항 9에 있어서,
    상기 MVC 정보를 추출하는 단계는,
    상기 메소드 호출 그래프에 포함된 MVC 패턴을 인식하는 단계; 및
    상기 인식된 MVC 패턴 내에서 디스패처 서블릿으로부터 호출된 컨트롤러 메소드 및 뷰 메소드를 파악하는 단계를 포함하는, 프로그램 분석 방법.
  14. 청구항 13에 있어서,
    상기 MVC 패턴은 스프링(spring) 또는 스트러츠(struts) 프레임워크 라이브러리를 이용해 구현되는, 프로그램 분석 방법.
  15. 애플리케이션에 대해 동적 분석을 수행하고 메소드 호출 그래프를 추출하는 제1 분석기;
    상기 메소드 호출 그래프로부터 MVC(Model View Controller) 정보를 추출하는 서버; 및
    상기 MVC 정보를 활용해 애플리케이션의 소스 코드 분석에 적용할 호출 그래프를 확장하는 제2 분석기를 포함하고,
    상기 MVC 정보는 컨트롤러와 뷰 간의 제어 흐름에 관한 정보를 포함하는, 프로그램 분석 장치.
KR1020160091496A 2016-07-19 2016-07-19 프로그램 분석 장치 및 방법 KR101886203B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160091496A KR101886203B1 (ko) 2016-07-19 2016-07-19 프로그램 분석 장치 및 방법
US15/646,693 US20180025162A1 (en) 2016-07-19 2017-07-11 Application program analysis apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160091496A KR101886203B1 (ko) 2016-07-19 2016-07-19 프로그램 분석 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180009589A true KR20180009589A (ko) 2018-01-29
KR101886203B1 KR101886203B1 (ko) 2018-09-06

Family

ID=60989505

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160091496A KR101886203B1 (ko) 2016-07-19 2016-07-19 프로그램 분석 장치 및 방법

Country Status (2)

Country Link
US (1) US20180025162A1 (ko)
KR (1) KR101886203B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102653900B1 (ko) * 2023-08-04 2024-04-03 쿠팡 주식회사 전자 장치 및 그의 정보 제공 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108763928B (zh) * 2018-05-03 2020-10-02 北京邮电大学 一种开源软件漏洞分析方法、装置和存储介质
US10997291B2 (en) * 2018-07-19 2021-05-04 Juniper Networks, Inc. Extending dynamic detection of malware using static and dynamic malware analyses
CN109829312B (zh) * 2019-01-29 2021-01-01 北京启明星辰信息安全技术有限公司 基于调用链的java漏洞检测方法及检测***
CN112257054B (zh) * 2020-10-22 2022-11-15 北京邮电大学 一种软件应用越权风险检测方法、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090017598A (ko) * 2006-06-13 2009-02-18 마이크로소프트 코포레이션 소프트웨어를 분석하기 위한 방법 및 시스템
KR20090122879A (ko) * 2008-05-26 2009-12-01 삼성전자주식회사 애플리케이션의 동적 콜 그래프 생성 방법

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8191052B2 (en) * 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US8347272B2 (en) * 2008-07-23 2013-01-01 International Business Machines Corporation Call graph dependency extraction by static source code analysis
EP2261802A1 (en) * 2009-06-10 2010-12-15 ITI Scotland Limited Automated debugging system and method
US8381242B2 (en) * 2010-07-20 2013-02-19 International Business Machines Corporation Static analysis for verification of software program access to secure resources for computer systems
US8719799B2 (en) * 2011-03-07 2014-05-06 International Business Machines Corporation Measuring coupling between coverage tasks and use thereof
US9021589B2 (en) * 2012-06-05 2015-04-28 Los Alamos National Security, Llc Integrating multiple data sources for malware classification
EP2891101B1 (en) * 2012-08-31 2016-11-09 Iappsecure Solutions Pvt. Ltd. A system for analyzing applications in order to find security and quality issues
US8990777B2 (en) * 2013-05-21 2015-03-24 Concurix Corporation Interactive graph for navigating and monitoring execution of application code
US20160253497A1 (en) * 2015-02-26 2016-09-01 Qualcomm Incorporated Return Oriented Programming Attack Detection Via Memory Monitoring
US10007801B2 (en) * 2016-04-22 2018-06-26 International Business Machines Corporation Automatic audit logging of events in software applications performing regulatory workloads

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090017598A (ko) * 2006-06-13 2009-02-18 마이크로소프트 코포레이션 소프트웨어를 분석하기 위한 방법 및 시스템
KR20090122879A (ko) * 2008-05-26 2009-12-01 삼성전자주식회사 애플리케이션의 동적 콜 그래프 생성 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102653900B1 (ko) * 2023-08-04 2024-04-03 쿠팡 주식회사 전자 장치 및 그의 정보 제공 방법

Also Published As

Publication number Publication date
KR101886203B1 (ko) 2018-09-06
US20180025162A1 (en) 2018-01-25

Similar Documents

Publication Publication Date Title
KR101886203B1 (ko) 프로그램 분석 장치 및 방법
US10185546B2 (en) Service extraction and application composition
US9411616B2 (en) Classloader/instrumentation approach for invoking non-bound libraries
KR101920597B1 (ko) 동적 코드 추출 기반 자동 분석 방지 우회 및 코드 로직 해석 장치
CN103164331B (zh) 一种应用程序的漏洞检测方法和装置
KR101926142B1 (ko) 프로그램 분석 장치 및 방법
KR20090017598A (ko) 소프트웨어를 분석하기 위한 방법 및 시스템
CN102402479B (zh) 用于静态分析的中间表示结构
JP2006185211A (ja) プログラム解析装置、テスト実行装置、その解析方法及びプログラム
EP2988242B1 (en) Information processing device, and information processing method
Arzt et al. The soot-based toolchain for analyzing android apps
US7752138B1 (en) Dynamic licensing in a distributed system
CN110941534A (zh) 检测web应用第三方代码调用的方法及***
KR101996358B1 (ko) 웹 애플리케이션의 동적 분석을 위한 api 호출 정보 제공 방법 및 장치
EP2972880B1 (en) Kernel functionality checker
KR101629578B1 (ko) Rte 코드 생성 방법 및 이를 실행하는 장치
US9436575B2 (en) Selective profiling of applications
US7036045B2 (en) Method and system for isolating exception related errors in Java JVM
CN115794583A (zh) 一种内核分析方法及装置
JP2022146912A (ja) 自動化された動的システムコールシーリング
EP2782005A1 (en) Verifying state reachability in a statechart model having computer program code embedded therein
Neginhal et al. Event views and graph reductions for understanding system level c code
Padaryan et al. Methods and software tools to support combined binary code analysis
US10303531B2 (en) Console application through web service
KR101976993B1 (ko) 모바일 코드 자동 분석을 위한 동적 바이너리 계측 코드추출장치 및 그 방법

Legal Events

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