KR102200666B1 - 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법 - Google Patents

안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법 Download PDF

Info

Publication number
KR102200666B1
KR102200666B1 KR1020190179648A KR20190179648A KR102200666B1 KR 102200666 B1 KR102200666 B1 KR 102200666B1 KR 1020190179648 A KR1020190179648 A KR 1020190179648A KR 20190179648 A KR20190179648 A KR 20190179648A KR 102200666 B1 KR102200666 B1 KR 102200666B1
Authority
KR
South Korea
Prior art keywords
variable
vulnerability
chain
media framework
android
Prior art date
Application number
KR1020190179648A
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 KR1020190179648A priority Critical patent/KR102200666B1/ko
Application granted granted Critical
Publication of KR102200666B1 publication Critical patent/KR102200666B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • 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
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

본 기술은 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법에 관한 것이다. 본 기술의 구현 예에 따르면, 순방향 정적 분석과 역방향 정적 분석을 적용하여 안드로이드 미디어프레임워크 소스코드의 취약점 분석을 자동화함에 따라 대용량 미디어프레임워크 소스코드의 취약점과 심각도를 빠르게 분석할 수 있는 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법을 제공할 수 있는 이점이 있다.

Description

안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법{Android Media Framework Vulnerability and Severity Analysis System and Method}
안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법에 관한 것으로, 더욱 상세하게는 안드로이드 미디어프레임워크 소스코드를 대상으로 취약점과 취약점의 심각도를 분석하는 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법에 관한 것이다.
안드로이드의 사용률이 증가하고 미디어 시장이 점차적으로 확장됨에 따라, 모바일을 이용해 미디어 서비스를 이용하는 사용자 수 또한 크게 증가했다. 이에 따라 악의적인 사용자들이 미디어 서비스 처리를 이용해 기기 사용자들의 개인정보를 탈취하는 피해 사례 또한 급증했다. 이러한 이유로 인해, 안드로이드 내에서 미디어 서비스를 처리하는 부분의 보안에 대한 관심이 증가하기 시작했다.
도 1은 안드로이드에서 미디어가 재생되는 과정을 나타내는 개념도를 도시한다. 예를 들어, 안드로이드 기기 사용자가 사진이 담긴 URL 링크 또는 애플리케이션 내부에서 오디오 혹은 비디오 재생 버튼을 클릭한다. 이러한 입력을 받은 안드로이드는 내부에서 일련의 미디어 서비스 처리를 거친 후, 사용자 기기에 나타내준다. 여기서 언급한 미디어 서비스 처리는 안드로이드 미디어프레임워크에서 이루어진다.
안드로이드 미디어프레임워크는 미디어와 관련된 모든 서비스를 처리하는 안드로이드의 거대한 영역 중 하나이다.
도 2는 안드로이드 미디어프레임워크 계층 개념도를 도시한다. 도 2를 참조하면, 안드로이드 미디어프레임워크는 애플리케이션 프레임워크(Application Framework), JNI(Java Native Interface), 네이티브 계층(Native Layer), OpenMax IL 계층 등 다수의 계층으로 이루어져 있다. 다수의 계층으로 이루어져 있기 때문에 미디어프레임워크는 다양한 언어로 작성된 코드들이 존재한다. 어플리케이션 프레임워크 계층에서는 Java를 사용하며, 네이티브 함수를 포함하고 있는 네이티브 계층과 OpenMax IL 계층은 C와 C++ 코드로 이루어져있다.
도 3은 안드로이드에서의 미디어 서비스 처리과정을 나타내는 개념도를 도시한다. 안드로이드의 미디어 서비스 처리과정은 다음과 같다. 먼저 사용자가 미디어를 보기 위해 URL 링크 혹은 애플리케이션 버튼을 클릭하게 되고, 이는 어플리케이션 프레임워크 측에 값이 전달된다. Java를 사용하는 애플리케이션 프레임워크 계층은 사용자가 요청한 미디어 서비스 처리를 위해 네이티브 함수를 사용해야 한다. 그러나 네이티브 함수는 C언어 또는 C++ 언어로 되어 있기 때문에 직접적으로 함수를 호출하여 사용할 수 없다. 이를 해결하기 위해 애플리케이션 프레임워크는 JNI에게 사용자의 입력 데이터 값을 전달한다. JNI는 이 값을 바인더를 통해 네이티브 계층 및 OpenMax IL 계층에게 전달하고, 각 계층의 네이티브 함수들이 처리를 마친 결과 값을 다시 JNI에게 전달해 준다.
이와 같이 애플리케이션 프레임워크 계층의 Java 소스코드가 네이티브 함수를 이용하기 위해서는 복잡한 상호작용이 다소 존재하며, 반드시 JNI를 이용해야 하는 특성이 있다. 또한 미디어 서비스의 처리의 특성상 다양한 입력(사진보기, 동영상 재생, 오디오 재생 등)을 처리하기 위해 미디어프레임워크의 각 소스코드의 크기는 매우 크다. 더해 미디어 입력(GIF 파일 시퀀스, 사진 URL, JPEG 프레임 크기 등)에 따른 함수 호출과 변수 정의가 빈번하게 이루어지는 특성을 가지고 있다.
위의 특성들은 취약점을 발생시킬 수 있는 가능성이 매우 높다. 복잡한 상호작용을 하며 소스코드가 큰 경우, 취약점이 발생했을 때 원인을 파악하기 매우 어렵다. 더해 미디어 입력을 이용해 함수 호출, 혹은 변수에 정의된 값을 변조하여 기기를 조작할 수 있는 위험성이 존재한다.
실제로 안드로이드 미디어프레임워크 특성을 악용하여 2015년 6월, 안드로이드 미디어프레임워크 취약점 “Stagefright”로 인해 많은 피해 사례가 나타났으며, 이는 심각한 모바일 보안 이슈로 떠올랐다. “Stagefright” 보안 이슈 이후, 안드로이드 미디어프레임워크를 이용한 치명적인 취약점이 계속적으로 발생되고 있다. 그로 인해 안드로이드 미디어프레임워크 보안에 중요도와 관심이 급격히 증가했으며, 미디어프레임워크와 연관된 취약점 분석 및 패치 또한 진행되기 시작했다.
“Stagefright” 취약점 발생 이후, 구글에서는 “Stagefright” 취약점 보안 패치를 진행한 후, 이에 대한 내용을 Android Bulletin에 게시했다. 이후 구글은 Android Bulletin에 안드로이드 미디어프레임워크 카테고리를 별도로 생성하여 현재까지 계속해서 보안 패치를 진행하고 있다.
이처럼 안드로이드 미디어프레임워크 취약점은 현재까지 꾸준히 발생되고 있다. 따라서 미디어프레임워크 취약점에 대한 패치도 지속적으로 진행되어야 하며, 이를 위해 취약점에 대한 분석 또한 꾸준히 진행되어야 한다.
심각한 보안 사고를 발생시키는 것에 비해 비교적 단순한 원인을 가지고 있는 취약점들은 실제 미디어 입력을 악용할 수 있는 변수를 검사하지 않고 사용하여 발생한 취약점들이다. 이 변수는 JNI에서 직접적으로 전달받은 사용자의 입력 데이터 값, 호출된 함수의 인자 값이 전달되어 정의되거나, 특정 헤더의 값이 저장되어 사용되는 변수이다.
안드로이드 미디어프레임워크의 매우 큰 소스코드를 분석하는데 있어서 변수가 연관된 부분의 정보를 제공하는 도구가 존재하지 않아 안드로이드 미디어프레임워크 소스코드 변수의 취약점 분석을 수동으로 분석하는 경우 매우 큰 소스코드를 분석하기 위해 많은 시간을 소모할 수 밖에 없는 실정이다.
안드로이드 보안이 이슈화됨에 따라 안드로이드 어플리케이션 취약점을 분석하기 위한 다양한 연구들이 진행되었으나, 안드로이드 어플리케이션은 본 발명에서 대상으로 하는 안드로이드 미디어프레임워크 소스코드보다 크기가 작고, 기존 연구는 취약점의 존재 유무를 분석하였기 때문에 분석가에게 심각도 분류를 위한 정보를 제공하는 도구로써 사용하기에는 부적합하다.
이처럼 수동으로 안드로이드 미디어프레임워크 소스코드의 취약점 분석을 진행해야하는 불편함과 소요되는 시간을 줄이기 위한 자동화 도구가 필요하다. 또한 취약점 분석가들이 심각도 분류를 진행하기 위해, 취약점이 발생한 변수가 어떤 지점에서 정의되어 있는지, 어떤 부분과 연관이 있는 지에 대한 정보를 제공해주는 도구가 필요하다.
1. 강진, 안드로이드 앱의 JNI에서 일어나는 개인정보 유출 탐지를 위한 ARM 바이너리 정적 오염 분석, 2015.
본 발명은 상기와 같은 문제를 해결하기 위한 것으로서, 대용량의 안드로이드 미디어프레임워크 소스코드의 취약점과 심각도 분석을 자동화한 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법을 제공하는데 그 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 발명은 안드로이드 미디어프레임워크 소스코드 파일을 입력 받아 기본 블록 단위로 나누어 순방향 정적 분석을 수행하는 순방향 정적 분석부; 상기 순방향 정적 분석부에서 이루어진 순방향 정적 분석 수행 결과를 이용하여 UD 체인 및 DU 체인을 생성하는 체인 생성부; 상기 체인 생성부에서 생성된 상기 UD 체인 및 DU 체인을 이용하여 상기 안드로이드 미디어프레임워크 소스코드의 변수에 태깅을 진행하는 순방향 변수 태그부; 및 취약점을 분석할 변수 위치로부터 그 사용된 값이 정의된 지점까지 역방향 정적 분석을 하면서 상기 순방향 변수 태그부에서 이루어진 변수의 태그를 이용하여 사용자 입력과의 관련성을 태깅하는 역방향 변수 태그부;를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 순방향 변수 태그부는, 각 변수에 대해 태깅을 할 때 parcel 헤더에 저장된 변수 일 경우, 파일 디스크립터 또는 URL 값 자체인 메타데이터 값을 가진 변수일 경우, mBuffer와 같은 값을 가진 변수일 경우, 이외의 경우로 분류하여 태깅하는 것이다.
다른 실시예에 따른 본 발명의 안드로이드 미디어프레임워크 취약점과 심각도 분석 방법은 순방향 정적 분석부가 안드로이드 미디어프레임워크 소스코드 파일을 입력 받아 기본 블록 단위로 나누어 순방향 정적 분석을 수행하는 단계; 체인 생성부가 상기 순방향 정적 분석 수행 단계에서 이루어진 순방향 정적 분석 결과를 이용하여 UD 체인 및 DU 체인을 생성하는 단계; 순방향 변수 태그부가 상기 체인 생성부에서 생성된 상기 UD 체인 및 DU 체인을 이용하여 상기 안드로이드 미디어프레임워크 소스코드의 변수에 태깅을 진행하는 단계; 및 역방향 변수 태그부가 취약점을 분석할 변수 위치로부터 그 사용된 값이 정의된 지점까지 역방향 정적 분석을 수행하면서 상기 순방향 변수 태그부에서 이루어진 변수의 태그를 이용하여 사용자 입력과의 관련성을 태깅하는 단계;를 포함하는 것을 특징으로 한다.
바람직하게는, 상기 순방향 변수 태그부가 상기 안드로이드 미디어프레임워크 소스코드의 변수에 태깅을 진행하는 단계는, 각 변수에 대해 태깅을 할 때 parcel 헤더에 저장된 변수 일 경우, 파일 디스크립터 또는 URL 값 자체인 메타데이터 값을 가진 변수일 경우, mBuffer와 같은 값을 가진 변수일 경우, 이외의 경우로 분류하여 태깅하는 것이다.
전술한 바와 같은 본 발명에 따르면, 안드로이드 미디어프레임워크 소스코드와 같은 대용량의 소스코드를 대상으로 취약점과 취약점의 심각도 분석을 자동화하여 취약점 분석 소요시간을 감소시킬 수 있는 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법을 제공할 수 있는 이점이 있다.
도 1은 안드로이드에서 미디어가 재생되는 과정을 나타내는 개념도를 도시한다.
도 2는 안드로이드 미디어프레임워크 계층 개념도를 도시한다.
도 3은 안드로이드에서의 미디어 서비스 처리과정을 나타내는 개념도를 도시한다.
도 4는 구글이 Android Bulletin에 업로드 한 안드로이드 미디어프레임워크 취약점 패치 업로드 목록을 도시한다.
도 5는 "높음"의 위험도를 가진 실제 CVE-2017-13280 소스코드를 도시한다.
도 6은 CVE-2017-13280 소스코드의 취약점 발생원인 변수 정의 및 연관 부분을 도시한다.
도 7은 안드로이드 미디어프레임워크 취약점이 자주 발생하는 지점을 나타낸 개념도를 도시한다.
도 8은 본 발명에 따른 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템의 블록도를 도시한다.
도 9는 리칭 디피니션 분석의 예를 도시한다.
도 10은 본 발명에서 적용한 리칭 디피니션 알고리즘을 도시한다.
도 11은 UD 체인 및 DU 체인의 예를 도시한다.
도 12는 라이브 변수 분석에서 USE/DEF 분석의 예를 도시한다.
도 13은 본 발명에 적용할 수 있는 변형된 라이브 변수 분석 알고리즘을 도시한다.
도 14는 본 발명의 다른 실시예에 따른 안드로이드 미디어프레임워크 취약점과 심각도 분석 방법의 흐름도를 도시한다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 이에 앞서 본 발명에 관련된 공지 기능 및 그 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 구체적인 설명을 생략하였음에 유의해야 할 것이다.
도 4는 구글이 Android Bulletin에 업로드 한 안드로이드 미디어프레임워크 취약점 패치 업로드 목록을 도시한다.
구글은 발생한 취약점들을 RCE(Remote Control Execution), EoP(Escalation of Privilege), DoS(Denial of Service), ID(Information Disclosure), 총 4가지로 분류했다. 취약점들의 심각도 또한 “낮음”, “보통”, “높음”, “심각”으로 나누어 분류했다.
도 5는 "높음"의 위험도를 가진 실제 CVE-2017-13280 소스코드를 도시한다. 이 취약점은 Java 소스코드 측에서 GIF 이미지를 제대로 전달 받지 않은 상태에서 DGifSavedExtensionToGCE() 함수를 호출하여 오버플로우가 발생한 취약점이다. GIF 파일의 프레임 시퀀스의 크기 유무를 검사하지 않아 117번째 라인에서 버퍼 오버플로우가 발생했다. 이 취약점은 변수 “mGif”를 검사하지 않고 사용한 것이 발생 원인이 되었으며, 이 변수가 사용된 곳은 117번째 라인과 114번째 라인이다.
도 6은 CVE-2017-13280 소스코드의 취약점 발생원인 변수 정의 및 연관 부분을 도시한다. 취약점 발생 원인에 대해 자세하게 분석하기 위해, “mGif” 변수가 정의된 지점을 확인하였다. 취약점 발생 지점부터 역으로 탐색하여 찾은 “mGif” 변수의 정의부분은 취약점이 발생한 함수의 상단 부분에 위치한다. “mGif” 변수는 DGifOpen()함수의 반환 값으로 정의되었으며, 그 중 함수 인자 값인 “stream” 변수와 연관 되어 있음을 확인하였다. 이에 더해 “stream” 변수는 취약점이 발생한 함수의 인자 값으로 들어온 변수임을 확인할 수 있었다. 이와 같은 여러 분석으로부터 상당수의 CVE들이 위와 비슷한 원인으로 취약점이 발생한 것임을 확인하였다.
안드로이드 미디어프레임워크 취약점은 평균적으로 “보통”이상의 위험도를 가지고 있다. 또한 안드로이드 미디어프레임워크 취약점들은 주로 버퍼 오버플로우(Buffer overflow), 정수형 오버플로우(Integer overflow), 메모리 오버플로우(Memory overflow), 초기화 되지 않은 변수(Not initialized value)와 같은 특정 취약점들이 주된 원인으로 나타난다. 이 취약점들은 대부분 어떤 값이 정의된 변수를 사용하는 위치에서 발생했다. 또한 “보통”이상의 위험도를 가진 대부분의 취약점들은 특정 부분과 연관된 변수가 심각한 보안 사고를 발생시킨 원인이 된다. 실제로 Android Bulletin에서 사용자 입력 또는 특정 헤더 부분과 연관된 변수에 대한 보안 패치가 자주 진행 되는 것을 확인할 수 있었다.
심각한 보안 사고를 발생시키는 것에 비해 비교적 단순한 원인을 가지고 있는 취약점들은 실제 미디어 입력을 악용할 수 있는 변수를 검사하지 않고 사용하여 발생한 취약점들이다. 이 변수는 JNI에서 직접적으로 전달받은 사용자의 입력 데이터 값, 호출된 함수의 인자 값이 전달되어 정의되거나, 특정 헤더의 값이 저장되어 사용되는 변수이다.
이처럼 안드로이드 미디어프레임워크 취약점들은 주로 정의된 변수의 검증이 제대로 진행되지 않아 발생하는 경우가 많다. “보통”이하의 심각도 또한 마찬가지이므로, 취약점 패치는 심각도와 관계없이 모두 진행되어야 한다. 그러나 구글은 모든 발생한 모든 취약점들에 대해서 패치를 진행하지 않는다. 주로 “보통”이상의 취약점에 대해서 패치를 진행하고, “낮음” 수준의 취약점은 추후 필요할 때 패치를 진행한다. 그 이유는 이는 안드로이드 미디어프레임워크가 다양한 계층으로 이루어져 있고, 복잡한 상호작용이 존재하여 쉽게 코드를 수정하기 어렵기 때문이다. 따라서 “보통”이상의 심각도를 가진 취약점을 먼저 패치하고, 이후에 “낮은” 취약점에 대해서 패치를 진행한다.
따라서 취약점 분석가들은 취약점이 존재하는 안드로이드 미디어프레임워크 소스코드를 대상으로 분석을 진행할 때, 취약점의 심각도 분류 또한 진행해야한다. 이를 위해서는 취약점이 발생한 변수들에 대한 자세한 정보가 필요하다. 취약점이 자주 발생하는 부분과의 연관된 변수들의 정보가 있을 경우, 수월하게 분석을 진행할 수 있기 때문이다.
도 7은 안드로이드 미디어프레임워크 취약점이 자주 발생하는 지점을 나타낸 개념도를 도시한다. 도 7을 참조하면, 취약점은 주로 Native 계층의 시스템 서버부분 해당한 위치에서 발생한다. 취약점은 JNI에서 직접적으로 전달받은 사용자의 입력 데이터 값, 호출된 함수의 인자 값이 전달되어 정의되거나, 특정 헤더의 값이 저장되어 사용되는 변수에서 발생한다. 즉, JNI와 바인더로 통해 들어온 사용자 입력 값이 저장된 변수에서 나타난다. 여기서 JNI와 바인더로 통해 들어온 값은 특정 헤더, 주로 Parcel 헤더에 저장된 값, file descriptor 또는 url 값 자체인 메타데이터(JNI 인자), mBuffer와 같은 값을 의미한다.
안드로이드 미디어프레임워크 취약점들은 주로 JNI와 연관된 변수, 즉 사용자 입력 값이 정의된 지점에서 빈번하게 발생한다고 볼 수 있다. 따라서 분석 시, 취약점 발생한 부분과 정의된 부분의 연관관계에 대한 정보가 필요하다. 그러나 미디어프레임워크 소스코드는 소스코드가 방대해 커 직접적으로 분석하기 어렵고, 미디어 서비스 처리의 복잡성으로 인해 퍼징(Fuzzing)에 매우 제한적이다. 이로 인해 앞 절에서 언급한 관련 연구들 또한 안드로이드 미디어프레임워크를 분석 대상으로 적용하는 데에 있어 한계가 존재한다.
도 8은 본 발명에 따른 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템의 블록도를 도시한다. 도 8을 참조하면 본 발명에 따른 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템은 순방향 정적 분석부(100), 체인 생성부(200), 순방향 변수 태그부(300) 및 역방향 변수 태그부(400)를 포함한다.
순방향 정적 분석부(100)는 안드로이드 미디어프레임워크 소스코드 파일을 입력 받아 기본 블록 단위로 나누어 순방향 정적 분석을 수행한다.
순방향 정적 분석은 소스코드의 상단에서부터 하단으로 분석을 진행하는 기법이다. 본 발명이 제공하는 자동화 도구는 1차적으로 순방향 정적 분석을 진행하며, 적용한 순방향 정적 분석 기법은 리칭 디피니션 분석(Reaching Definition analysis)이다. 리칭 디피니션 분석은 현재 지점에서 정의된 변수가 어느 지점까지 도달했는지에 대한 분석을 진행하는 기법이다.
도 9는 리칭 디피니션 분석의 예를 도시하고, 도 10은 본 발명에서 적용한 리칭 디피니션 알고리즘을 도시한다. 도 9를 참조하면, 리칭 디피니션은 소스코드를 베이직 블록(Basicblock) 단위로 나눈 후, 각 베이직 블록마다 GEN/KILL, IN/OUT을 계산한다.
GEN : 베이직 블록(Basicblock) 내부에서 정의된 인스트럭션
KILL : GEN을 제외한, 다른 곳에서 정의된 모든 인스트럭션
IN : 베이직 블록(Basicblock)으로 들어오는 인스트럭션
OUT : 베이직 블록(Basicblock)에서 빠져나가는 인스트럭션
체인 생성부(200)는 순방향 정적 분석부(100)에서 이루어진 순방향 정적 분석 수행 결과를 이용하여 UD 체인 및 DU 체인을 생성한다. 체인 생성부(200)는 순방향 정적 분석부(100)에서 순방향 정적 분석 수행 결과로서 계산된 GEN, KILL, IN, OUT 결과를 이용하여 UD 체인 및 DU 체인을 생성할 수 있다.
체인 생성부(200)는 리칭 디피니션을 진행하여 얻은 IN/OUT을 이용해 UD 체인(Use Def chain)과 DU 체인(Def Use chain)을 생성한다. IN을 이용해 UD 체인은 사용된 변수가 어느 곳에서 정의되었는지 찾아 연결한 체인이고, DU 체인은 IN과 OUT을 이용해 정의된 변수가 사용된 모든 지점을 찾아 연결한 것이다.
도 11은 UD 체인 및 DU 체인의 예를 도시한다.
순방향 변수 태그부(300)는 체인 생성부(200)에서 생성된 상기 UD 체인 및 DU 체인을 이용하여 상기 안드로이드 미디어프레임워크 소스코드의 변수에 태깅을 진행한다.
순방향 변수 태그부(300)는 각 변수에 대해 태깅을 할 때 parcel 헤더에 저장된 변수 일 경우, 파일 디스크립터 또는 URL 값 자체인 메타데이터 값을 가진 변수일 경우, mBuffer와 같은 값을 가진 변수일 경우, 이외의 경우로 분류하여 태깅하는 것일 수 있다.
예를 들면, 순방향 변수 태그부(300)는 UD 체인과 DU 체인을 이용하여 각 변수에 대해 태깅을 진행한다. Parcel 헤더에 저장된 변수일 경우 ‘p’, file descriptor 또는 url 값 자체인 메타데이터(JNI 인자) 값을 가진 변수일 경우 ‘j’, mBuffer와 같은 값을 가진 변수일 경우 ‘b’, 앞의 세 가지 경우에 해당하지 않을 경우 ‘non’을 태깅하는 것일 수 있다.
역방향 변수 태그부(400)는 취약점을 분석할 변수 위치로부터 그 사용된 값이 정의된 지점까지 역방향 정적 분석을 하면서 상기 순방향 변수 태그부에서 이루어진 변수의 태그를 이용하여 사용자 입력과의 관련성을 태깅한다.
역방향 정적 분석은 소스코드의 특정 지점에서부터 상단으로 분석을 진행하는 기법이다. 앞서 1차적으로 순방향 정적 분석을 진행한 이후, 역방향 정적 분석을 진행한다. 본 발명에 따른 역방향 정적 분석 기법은 예를 들면 라이브 변수 분석(Live Variable analysis) 기법일 수 있다. 라이브 변수 분석은 어떤 변수가 미래의 어느 지점에서의 사용될 때까지 다시 정의되지 않고 사용되었는지에 대한 분석을 진행하는 기법이다.
도 12는 라이브 변수 분석에서 USE/DEF 분석의 예를 도시한다.
라이브 변수 분석에서 계산하는 항목은 다음과 같다.
USE : 베이직 블록(Basicblock) 내부에서 LHS에 나타나 정의된 변수
DEF : 베이직 블록(Basicblock) 내부에서 사용된 변수
IN : 베이직 블록(Basicblock)으로 들어오는 인스트럭션
OUT : 베이직 블록(Basicblock)에서 빠져나가는 인스트럭션
도 13은 본 발명에 적용할 수 있는 변형된 라이브 변수 분석 알고리즘을 도시한다. 안드로이드 미디어프레임워크를 대상으로 분석하기 위해 OUT을 두 가지로 나누어 분석을 진행할 수 있다. 취약점이 발생한 변수에서부터 시작하여 해당 변수에 사용된 값이 정의된 지점까지 역방향으로 거슬러 올라가면서 태깅 작업을 진행할 수 있다. 예를 들면, 역방향 정적 분석에서의 태그는 3가지로 분류될 수 있다.
RUI(Relevant to User Input)
MUI(Maybe relevant to User Input)
No(Not a serve Vulnerability)
예를 들면, RUI(Relevant to User Input)태그는 j,b,p가 태깅 된 변수를 만나거나, get(), write(), read() 함수로 값이 정의된 경우 사용자의 직접적인 입력과 연관된 변수라고 판단되는 변수를 의미한다. MUI(Maybe relevant to User Input) 태그는 j,b,p가 태깅 되지 않았으나, 현재 변수가 속한 함수의 인자를 통해 외부의 값이 현재 변수로 정의될 경우 사용자 입력과 연관 가능성이 존재한다고 판단되는 변수를 의미한다. 사용자 입력의 가능성이 두 사용자의 직접적인 입력과 연관된 변수를 의미한다. No(Not a serve Vulnerability) 태그는 사용자 입력 지점 또는 사용자 입력 가능 지점이 해당 변수로부터 역추적 한 경로에 전혀 없다고 판단되는 변수를 의미한다.
도 14는 본 발명의 다른 실시예에 따른 안드로이드 미디어프레임워크 취약점과 심각도 분석 방법의 흐름도를 도시한다.
본 발명의 다른 실시예에 따른 안드로이드 미디어프레임워크 취약점과 심각도 분석 방법은 먼저, 순방향 정적 분석부(100)가 안드로이드 미디어프레임워크 소스코드 파일을 입력 받아 기본 블록 단위로 나누어 순방향 정적 분석을 수행한다(S100). 이어서, 체인 생성부(200)가 S100 단계에서 이루어진 순방향 정적 분석 결과를 이용하여 UD 체인 및 DU 체인을 생성한다. 이어서, 순방향 변수 태그부(300)가 체인 생성부(200)에서 생성된 상기 UD 체인 및 DU 체인을 이용하여 상기 안드로이드 미디어프레임워크 소스코드의 변수에 태깅을 진행한다(S300). 이어서, 역방향 변수 태그부(400)가 취약점을 분석할 변수 위치로부터 그 사용된 값이 정의된 지점까지 역방향 정적 분석을 하면서 순방향 변수 태그부(300)에서 이루어진 변수의 태그를 이용하여 사용자 입력과의 관련성을 태깅한다.
이 때, S300 단계는 각 변수에 대해 태깅을 할 때 parcel 헤더에 저장된 변수 일 경우, 파일 디스크립터 또는 URL 값 자체인 메타데이터 값을 가진 변수일 경우, mBuffer와 같은 값을 가진 변수일 경우, 이외의 경우로 분류하여 태깅하는 것일 수 있다.
본 발명은 순방향 정적 분석과 역방향 정적 분석을 적용하여 안드로이드 미디어프레임워크 취약점 분석 심각도 분류 정보 제공을 위한 정적 분석 자동화 도구를 제공한다. 취약점이 발생한 변수 정의에 사용된 변수가 위치하는 곳과 실제 사용자의 입력과 연관성에 대한 정보를 분석가에게 제공하여 취약점 분석 소요시간을 감소시킬 수 있다. 또한 미디어프레임워크와 같은 커다란 소스코드를 가진 취약점 분석에도 사용이 가능하다.
이상에서 설명된 시스템은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media),CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상으로 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및 작용에만 국한되는 것이 아니며, 기술적 사상의 범주를 일탈함이 없이 본 발명에 대해 다수의 변경 및 수정이 가능함을 잘 이해할 수 있을 것이다. 따라서, 그러한 모든 적절한 변경 및 수정과 균등물들도 본 발명의 범위에 속하는 것으로 간주되어야 할 것이다.

Claims (4)

  1. 안드로이드 미디어프레임워크 소스코드 파일을 입력 받아 기본 블록 단위로 나누어 순방향 정적 분석을 수행하는 순방향 정적 분석부;
    상기 순방향 정적 분석부에서 이루어진 순방향 정적 분석 수행 결과를 이용하여 UD 체인 및 DU 체인을 생성하는 체인 생성부;
    상기 체인 생성부에서 생성된 상기 UD 체인 및 DU 체인을 이용하여 상기 안드로이드 미디어프레임워크 소스코드의 변수에 태깅을 진행하는 순방향 변수 태그부; 및
    취약점을 분석할 변수 위치로부터 그 사용된 값이 정의된 지점까지 역방향 정적 분석을 하면서 상기 순방향 변수 태그부에서 이루어진 변수의 태그를 이용하여 사용자 입력과의 관련성을 태깅하는 역방향 변수 태그부;를 포함하는 것을 특징으로 하는 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템.
  2. 제1항에 있어서,
    상기 순방향 변수 태그부는, 각 변수에 대해 태깅을 할 때 parcel 헤더에 저장된 변수 일 경우, 파일 디스크립터 또는 URL 값 자체인 메타데이터 값을 가진 변수일 경우, mBuffer와 같은 값을 가진 변수일 경우, 이외의 경우로 분류하여 태깅하는 것을 특징으로 하는 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템.
  3. 순방향 정적 분석부가 안드로이드 미디어프레임워크 소스코드 파일을 입력 받아 기본 블록 단위로 나누어 순방향 정적 분석을 수행하는 단계;
    체인 생성부가 상기 순방향 정적 분석 수행 단계에서 이루어진 순방향 정적 분석 결과를 이용하여 UD 체인 및 DU 체인을 생성하는 단계;
    순방향 변수 태그부가 상기 체인 생성부에서 생성된 상기 UD 체인 및 DU 체인을 이용하여 상기 안드로이드 미디어프레임워크 소스코드의 변수에 태깅을 진행하는 단계; 및
    역방향 변수 태그부가 취약점을 분석할 변수 위치로부터 그 사용된 값이 정의된 지점까지 역방향 정적 분석을 하면서 상기 순방향 변수 태그부에서 이루어진 변수의 태그를 이용하여 사용자 입력과의 관련성을 태깅하는 단계;를 포함하는 것을 특징으로 하는 안드로이드 미디어프레임워크 취약점과 심각도 분석 방법.
  4. 제3항에 있어서,
    상기 순방향 변수 태그부가 상기 안드로이드 미디어프레임워크 소스코드의 변수에 태깅을 진행하는 단계는, 각 변수에 대해 태깅을 할 때 parcel 헤더에 저장된 변수 일 경우, 파일 디스크립터 또는 URL 값 자체인 메타데이터 값을 가진 변수일 경우, mBuffer와 같은 값을 가진 변수일 경우, 이외의 경우로 분류하여 태깅하는 것을 특징으로 하는 안드로이드 미디어프레임워크 취약점과 심각도 분석 방법.
KR1020190179648A 2019-12-31 2019-12-31 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법 KR102200666B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190179648A KR102200666B1 (ko) 2019-12-31 2019-12-31 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190179648A KR102200666B1 (ko) 2019-12-31 2019-12-31 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR102200666B1 true KR102200666B1 (ko) 2021-01-12

Family

ID=74129686

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190179648A KR102200666B1 (ko) 2019-12-31 2019-12-31 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102200666B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502726A (en) * 1992-01-31 1996-03-26 Nellcor Incorporated Serial layered medical network
KR101507469B1 (ko) * 2015-01-06 2015-04-03 (주)싸이버텍 소스 코드 분석 서비스 제공 방법
KR20180107932A (ko) * 2017-03-23 2018-10-04 한국과학기술원 소프트웨어 정의 네트워크에서의 악성 프로그램 탐지 장치, 방법 및 컴퓨터 프로그램
KR20190078545A (ko) * 2017-12-26 2019-07-04 충남대학교산학협력단 프로그램 동적 분석 장치 및 그 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502726A (en) * 1992-01-31 1996-03-26 Nellcor Incorporated Serial layered medical network
KR101507469B1 (ko) * 2015-01-06 2015-04-03 (주)싸이버텍 소스 코드 분석 서비스 제공 방법
KR20180107932A (ko) * 2017-03-23 2018-10-04 한국과학기술원 소프트웨어 정의 네트워크에서의 악성 프로그램 탐지 장치, 방법 및 컴퓨터 프로그램
KR20190078545A (ko) * 2017-12-26 2019-07-04 충남대학교산학협력단 프로그램 동적 분석 장치 및 그 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
1. 강진, 안드로이드 앱의 JNI에서 일어나는 개인정보 유출 탐지를 위한 ARM 바이너리 정적 오염 분석, 2015.

Similar Documents

Publication Publication Date Title
US10698742B2 (en) Operation efficiency management with respect to application compile-time
US10025659B2 (en) System and method for batch monitoring of performance data
US11182478B2 (en) Systems and methods for tracking and recording events in a network of computing systems
US9129058B2 (en) Application monitoring through continuous record and replay
US8910293B2 (en) Determining the vulnerability of computer software applications to privilege-escalation attacks
US20170372095A1 (en) Privacy detection of a mobile application program
KR101228899B1 (ko) 벡터량 산출을 이용한 악성코드의 분류 및 진단 방법과 장치
US20140075560A1 (en) Automatic classification of security vulnerabilities in computer software applications
Garg et al. Android security assessment: A review, taxonomy and research gap study
US9658948B2 (en) Workload mapper for potential problem areas using modules and defect data
CN111435391A (zh) 自动确定gui中待交互的交互式gui元素的方法和设备
US8705800B2 (en) Profiling activity through video surveillance
US10706102B2 (en) Operation efficiency management with respect to application run-time
Maasmi et al. Identifying applications' state via system calls activity: a pipeline approach
US20160078227A1 (en) Data processing system security device and security method
KR102200666B1 (ko) 안드로이드 미디어프레임워크 취약점과 심각도 분석 시스템 및 방법
Duby et al. Malware family classification via residual prefetch artifacts
CN115408667A (zh) 应用程序内容的侵权检测方法和系统
CN115080433A (zh) 基于流量回放的测试方法及装置
US20110247007A1 (en) Operators with request-response interfaces for data stream processing applications
Shafiei et al. Position paper: On advancing adversarial malware generation using dynamic features
Singh et al. A Comprehensive Study and Implementation of Memory Malware Analysis with Its Application for the Case Study of CRIDEX
EP3444740A1 (en) Checking for unnecessary privileges with entry point finder
Kim et al. Accelerating Face De-identification System for Real-time Video Surveillance Services
Martinelli et al. Identifying Insecure Features in Android Applications using Model Checking.

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant