KR102314829B1 - 애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치 - Google Patents

애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치 Download PDF

Info

Publication number
KR102314829B1
KR102314829B1 KR1020210013283A KR20210013283A KR102314829B1 KR 102314829 B1 KR102314829 B1 KR 102314829B1 KR 1020210013283 A KR1020210013283 A KR 1020210013283A KR 20210013283 A KR20210013283 A KR 20210013283A KR 102314829 B1 KR102314829 B1 KR 102314829B1
Authority
KR
South Korea
Prior art keywords
file
dex
code
application
information
Prior art date
Application number
KR1020210013283A
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 KR1020210013283A priority Critical patent/KR102314829B1/ko
Priority to PCT/KR2021/004034 priority patent/WO2022163908A1/ko
Priority to US17/420,036 priority patent/US11928220B2/en
Application granted granted Critical
Publication of KR102314829B1 publication Critical patent/KR102314829B1/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data

Landscapes

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

Abstract

애플리케이션 내부의 데이터 유출 위험성 평가 방법은, 모바일 애플리케이션의 APK 파일을 압축 해제하여 DEX(Dalvik Executable) 파일과 so(Shared Object) 파일을 추출하는 단계; DEX 파일을 파싱하여 DEX 파일로부터 DEX 코드 정보를 추출하는 단계; so 파일의 내용을 IR(Intermediate Representation)로 번역하는 단계; 번역된 IR로부터 IR 코드 정보를 추출하는 단계; 추출된 DEX 코드 정보 및 IR 코드 정보를 가공하여 DEX 파일과 so 파일 간의 호출 구조(Call-reference Structure)를 생성하는 단계: 및 생성된 호출 구조를 기초로 사전에 지정한 위험도에 따라 취약점 정보를 출력하는 단계;를 포함한다. 이에 따라, 안드로이드 애플리케이션의 호출 구조 커버리지(Call-reference Coverage)를 확장할 수 있다.

Description

애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치{METHOD FOR EVALUATING RISK OF DATA LEAKAGE IN APPLICATION, RECORDING MEDIUM AND DEVICE FOR PERFORMING THE METHOD}
본 발명은 애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치에 관한 것으로서, 더욱 상세하게는 모바일 애플리케이션의 데이터 흐름을 정적 분석 기법을 이용하여 분석하기 위해 바이트코드 및 네이티브 코드 로직 흐름을 통합하여 추출하는 기술에 관한 것이다.
안드로이드 모바일 기기에서 기기 정보 혹은 사용자의 개인화 정보 등 중요한 정보는 대부분 제조사에서 제공하는 프레임워크 코드로부터 수집할 수 있다. 악성코드는 이러한 정보를 분석하기 힘들게끔 복잡한 데이터 흐름을 추가하여 탈취할 수 있다.
또한, 일반 애플리케이션이라도 데이터 흐름을 분석하여, 애플리케이션 내의 중요 정보가 누수되는 지점을 파악할 필요성이 있다. 이를 파악하는 분석을 소위 데이터 흐름 분석이라 부른다.
소프트웨어 분석기법은 크게 정적 분석기법과 동적 분석기법으로 2가지 방식이 있다. 두 기법의 대표적인 차이점은 애플리케이션을 실행하는지에 대한 여부이다. 정적 분석기법은 애플리케이션을 실행하지 않고 파일로부터 추출할 수 있는 정보를 통해 분석을 진행하는 방법이다. 반면, 동적 분석기법은 조건에 맞는 실행 환경에서 애플리케이션을 실행하여, 원하는 정보를 얻도록 분석을 진행하는 방법이다.
그러나, 동적 분석은 정적 분석 대비, 전체적인 흐름 및 정보를 수집하는 데에 한계가 있다. 반면, 기존의 정적 분석기법은 모바일 애플리케이션의 일부만 분석 가능하다는 한계가 있다. DEX 파일만 지원하거나 Shared Object 형태의 ELF 파일만으로 분석할 수 있도록 지원하는 등의 한계점이다. 따라서, DEX 파일과 ELF 파일 간의 상호작용을 분석할 수 없는 문제점을 안고 있다.
KR 10-1623096 B1 KR 10-1872104 B1 KR 10-1926142 B1
이에, 본 발명의 기술적 과제는 이러한 점에서 착안된 것으로 본 발명의 목적은 애플리케이션 내부의 데이터 유출 위험성 평가 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 애플리케이션 내부의 데이터 유출 위험성 평가 방법을 수행하기 위한 컴퓨터 프로그램이 기록된 기록 매체를 제공하는 것이다.
본 발명의 또 다른 목적은 상기 애플리케이션 내부의 데이터 유출 위험성 평가 방법을 수행하기 위한 장치를 제공하는 것이다.
상기한 본 발명의 목적을 실현하기 위한 일 실시예에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 방법은, 모바일 애플리케이션의 APK 파일을 압축 해제하여 DEX(Dalvik Executable) 파일과 so(Shared Object) 파일을 추출하는 단계; DEX 파일을 파싱하여 DEX 파일로부터 DEX 코드 정보를 추출하는 단계; so 파일의 내용을 IR(Intermediate Representation)로 번역하는 단계; 번역된 IR로부터 IR 코드 정보를 추출하는 단계; 추출된 DEX 코드 정보 및 IR 코드 정보를 가공하여 DEX 파일과 so 파일 간의 호출 구조(Call-reference Structure)를 생성하는 단계: 및 생성된 호출 구조를 기초로 사전에 지정한 위험도에 따라 취약점 정보를 출력하는 단계;를 포함한다.
본 발명의 실시예에서, 상기 가공하여 DEX 파일과 so 파일 간의 호출 구조를 생성하는 단계는, JNI(Java Native Interface)를 이용하여 DEX 파일과 so 파일 간의 호출을 추출할 수 있다.
본 발명의 실시예에서, 상기 DEX 코드 정보를 추출하는 단계는, 클래스, 메소드, 접근 제한자, byte 코드, smali 코드 및 java 소스 코드 중 적어도 하나의 정보를 추출할 수 있다.
본 발명의 실시예에서, 상기 IR 코드 정보를 추출하는 단계는, 번역된 IR로부터 함수, 리턴 형식, 인자 및 IR 코드 중 적어도 하나의 정보를 추출할 수 있다.
본 발명의 실시예에서, 상기 DEX 파일과 so 파일 간의 호출 구조를 생성하는 단계는, 추출된 DEX 코드 및 IR 코드에서 다른 메소드 혹은 함수를 호출하는 코드가 존재하면, 호출되는 대상을 찾는 과정을 반복 수행할 수 있다.
본 발명의 실시예에서, 상기 취약점 정보를 출력하는 단계는, 위험도별로 분류된 특정 함수 및 메소드 리스트를 생성된 호출 구조와 비교하여 해당하는 함수가 존재하는지 검사하는 단계; 생성된 호출 구조에 해당하는 함수가 존재하는 경우, 추적하여 도달 가능한 모든 경로를 생성하는 단계; 시스템의 I/O(Input/Output, L)로 이동하는 지점이 존재하는지 탐색하는 단계; I/O 로 이동하는 지점이 존재하는 경우, 사전에 지정한 위험도에 따라 취약점 정보를 생산하는 단계; 및 취약점 정보를 표준 포맷에 따라 문서화 하여 최종 산출물로 출력하는 단계;를 포함할 수 있다.
상기한 본 발명의 다른 목적을 실현하기 위한 일 실시예에 따른 컴퓨터로 판독 가능한 저장 매체에는, 상기 애플리케이션 내부의 데이터 유출 위험성 평가 방법을 수행하기 위한 컴퓨터 프로그램이 기록되어 있다.
상기한 본 발명의 또 다른 목적을 실현하기 위한 일 실시예에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 장치는, 모바일 애플리케이션의 APK 파일을 압축 해제하여 DEX(Dalvik Executable) 파일과 so(Shared Object) 파일을 추출하는 파일 추출부; DEX 파일을 파싱하여 DEX 파일로부터 DEX 코드 정보를 추출하는 DEX 파싱부; so 파일의 내용을 IR(Intermediate Representation)로 번역하는 ELF 번역부; 번역된 IR로부터 IR 코드 정보를 추출하는 IR 파싱부; 추출된 DEX 코드 정보 및 IR 코드 정보를 가공하여 DEX 파일과 so 파일 간의 호출 구조(Call-reference Structure)를 생성하는 호출 구조 생성부: 및 생성된 호출 구조를 기초로 사전에 지정한 위험도에 따라 취약점 정보를 출력하는 위험도 분석부;를 포함한다.
본 발명의 실시예에서, 상기 호출 구조 생성부는, JNI(Java Native Interface)를 이용하여 DEX 파일과 so 파일 간의 호출을 추출할 수 있다.
본 발명의 실시예에서, 상기 DEX 파싱부는 클래스, 메소드, 접근 제한자, byte 코드, smali 코드 및 java 소스 코드 중 적어도 하나의 정보를 추출하고, 상기 IR 파싱부는 번역된 IR로부터 함수, 리턴 형식, 인자 및 IR 코드 중 적어도 하나의 정보를 호출을 추출할 수 있다.
본 발명의 실시예에서, 상기 호출 구조 생성부는, 추출된 DEX 코드 및 IR 코드에서 다른 메소드 혹은 함수를 호출하는 코드가 존재하면, 호출되는 대상을 찾는 과정을 반복 수행할 수 있다.
본 발명의 실시예에서, 상기 위험도 분석부는, 위험도별로 분류된 특정 함수 및 메소드 리스트를 생성된 호출 구조와 비교하여 해당하는 함수가 존재하는지 검사하는 검사부; 생성된 호출 구조에 해당하는 함수가 존재하는 경우, 추적하여 도달 가능한 모든 경로를 생성하는 경로 생성부; 시스템의 I/O(Input/Output, L)로 이동하는 지점이 존재하는지 탐색하는 유출 탐색부; I/O 로 이동하는 지점이 존재하는 경우, 사전에 지정한 위험도에 따라 취약점 정보를 생산하는 정보 생산부; 및 취약점 정보를 표준 포맷에 따라 문서화 하여 최종 산출물로 출력하는 출력부;를 포함할 수 있다.
이와 같은 애플리케이션 내부의 데이터 유출 위험성 평가 방법에 따르면, DEX 파일 뿐 아니라 so 파일까지 하나의 호출 구조 묶음으로 생성하여 안드로이드 애플리케이션의 호출 구조 커버리지(Call-reference Coverage)를 확장할 수 있다. 특히, JNI 호출 등을 통해 DEX 파일과 ELF 파일 즉, so 파일과의 상호작용을 분석할 수 있다.
또한, 중요 데이터에 따른 위험도 및 유출 지점을 알려줄 수 있기 때문에 유지 보수량을 줄여 생산성 증대에도 효과적이다. 따라서, 애플리케이션 관리자 혹은 개발자에게 보안이 강화된 애플리케이션을 개발하도록 도움을 줄 수 있는 유용한 도구로 제공될 수 있다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 장치의 블록도이다.
도 2는 도 1의 DEX 파싱부에서 추출하는 정보 형식의 예를 보여주는 도면이다.
도 3은 도 1의 IR 파싱부에서 추출하는 정보 형식의 예를 보여주는 도면이다.
도 4는 도 1의 호출 구조 생성부에서 추출하는 정보 형식의 예를 보여주는 도면이다.
도 5는 본 발명의 DEX 파일 내 코드와 so 파일 내 코드 호출 구조를 보여주는 도면이다.
도 6은 본 발명의 호출 구조와 도달 경로의 예를 보여주는 도면이다.
도 7은 도 1의 위험도 분석부에서 출력하는 최종 산출물 형식의 예를 보여주는 도면이다.
도 8은 본 발명의 일 실시예에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 방법의 흐름도이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 도면들을 참조하여 본 발명의 바람직한 실시예들을 보다 상세하게 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 장치의 블록도이다.
본 발명에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 장치(10, 이하 장치)는 애플리케이션 내부의 데이터 유출 위험성 평가하기 위해, DEX 파일과 so 파일을 이용하여 산출물을 도출한다.
도 1을 참조하면, 본 발명에 따른 장치(10)는 파일 추출부(110), DEX 파싱부(130), ELF 번역부(140), IR 파싱부(150), 호출 구조 생성부(170) 및 위험도 분석부(190)를 포함한다.
본 발명의 상기 장치(10)는 애플리케이션 내부의 데이터 유출 위험성 평가를 수행하기 위한 소프트웨어(애플리케이션)가 설치되어 실행될 수 있으며, 상기 파일 추출부(110), 상기 DEX 파싱부(130), 상기 ELF 번역부(140), 상기 IR 파싱부(150), 상기 호출 구조 생성부(170) 및 상기 위험도 분석부(190)의 구성은 상기 장치(10)에서 실행되는 상기 애플리케이션 내부의 데이터 유출 위험성 평가를 수행하기 위한 소프트웨어에 의해 제어될 수 있다.
상기 장치(10)는 별도의 단말이거나 또는 단말의 일부 모듈일 수 있다. 또한, 상기 파일 추출부(110), 상기 DEX 파싱부(130), 상기 ELF 번역부(140), 상기 IR 파싱부(150), 상기 호출 구조 생성부(170) 및 상기 위험도 분석부(190)의 구성은 통합 모듈로 형성되거나, 하나 이상의 모듈로 이루어 질 수 있다. 그러나, 이와 반대로 각 구성은 별도의 모듈로 이루어질 수도 있다.
상기 장치(10)는 이동성을 갖거나 고정될 수 있다. 상기 장치(10)는, 서버(server) 또는 엔진(engine) 형태일 수 있으며, 디바이스(device), 기구(apparatus), 단말(terminal), UE(user equipment), MS(mobile station), 무선기기(wireless device), 휴대기기(handheld device) 등 다른 용어로 불릴 수 있다.
본 발명은 데이터 흐름 분석을 정적 분석기법에 해당하는 형태로 진행한다. 또한, 모바일 애플리케이션 대상으로 하여 적용할 수 있다. APK를 입력으로 넣으면, 중요한 정보가 누출될 수 있는 지점과 위험성을 결과로 산출한다.
중요한 정보는 애플리케이션이 사용하는 암호화 키 혹은 서명 키, 난수 생성기의 시드 값 등을 예로 들 수 있다. 그리고, 이 정보가 런타임(실행 중)에 계산으로 생성될 것인지, 사용자가 입력할 순수 값인지, 애플리케이션에 사전 정의된 값인지에 따라 위험도가 순차적으로 높게 책정될 수 있다.
상기 파일 추출부(110)는 모바일 애플리케이션의 APK 파일을 압축 해제하여 DEX(Dalvik Executable) 파일과 so(Shared Object) 파일을 추출한다.
APK 파일은 Zip 파일로 취급할 수 있으므로, Unzip 도구 등을 통해 압축 해제하여, 필요한 데이터인 Dalvik Executable(.dex), Shared Object(.so) 파일을 탐색 및 수집한다.
모바일 애플리케이션은 APK(Android Application Package) 파일 형태로 배포된다. APK는 하나 또는 그 이상의 DEX(Dalvik Executable) 파일과 추가 리소스 파일로 구성된다. 추가 리소스 파일 일부로는 so(Shared Object) 파일이 해당한다. 이는 운영체제에 종속된 다양한 기능을 사용하기 위해 JNI(JAVA Native Interface)를 지원하기 위한 파일이며, 일반적으로 C나 C++ 언어로 컴파일된다. 본 발명은 DEX 파일과 so 파일을 이용하여 산출물을 도출한다.
상기 DEX 파싱부(130)는 DEX 파일을 파싱하여 DEX 파일로부터 DEX 코드 정보를 추출한다.
상기 DEX 파싱부(130)는 DEX 파일을 파싱하여 클래스, 메소드, 접근 제한자, bytecode 및 smali 코드, java 소스코드 정보 등을 추출할 수 있다. 추출된 DEX 코드 정보 형식의 예는 도 2와 같다. bytecode는 안드로이드 애플리케이션이 동작하기 위한 코드로 쓰이며, smali 코드는 bytecode를 사람이 읽을 수 있도록 표현한 언어이다.
상기 ELF 번역부(140)는 so 파일의 내용을 IR(Intermediate Representation)로 번역한다.
so 파일은 ELF(Executable and Linkable Format) 파일 포맷으로 구성되어 있고, 필요한 정보 추출을 쉽게 하기 위해서는 IR로 번역하는 작업이 필요하기 때문이다. ELF 파일은 기계어(Machine code)와 대응되므로, 각각에 해당하는 어셈블리 언어로 표현 가능하다.
그러나, 실행 기계의 CPU Architecture(예: x86, x86-64, amd64, armeabi-v7a, arm64-v8a, mips 등)에 종속적이므로, 원하는 정보를 추출하기에는 어려움이 있다. 따라서, 어셈블리 언어를 IR로 번역할 필요성이 있는 것이다. 이는 어셈블리 언어 대비, CPU Architecture에 대한 종속성이 낮고 사람이 읽기 편한 언어라는 장점이 있어 파싱을 더 쉽게 할 수 있다.
상기 IR 파싱부(150)는 번역된 IR로부터 IR 코드 정보를 추출한다.
상기 IR 파싱부(150)는 변환된 IR로부터 함수, 리턴 형식, 인자, IR 코드 정보를 추출할 수 있다. 추출된 IR 코드 정보 형식의 예는 도 3과 같다. 예를 들어, IR에서 “define i32 @main(void (i64*)* %func, i64* %arg, i64 %dso_handle) local_unnamed_addr {”라는 줄을 발견하면, 맨 앞 'define' 토큰으로 함수 선언임을 식별한다. 다음 토큰인 'i32'는 함수의 returnType이 된다. ‘@main’은 함수의 이름이 되고, 그 뒤에 오는 괄호 내의 내용은 각각 ‘,’(쉼표)로 구분하고 공백 기준 앞은 함수 인자 형식(void (i64*)*), 뒤는 명칭(func)으로 추출한다.
상기 호출 구조 생성부(170)는 추출된 DEX 코드 정보 및 IR 코드 정보를 가공하여 DEX 파일과 so 파일 간의 호출 구조(Call-reference Structure)를 생성한다.
상기 호출 구조 생성부(170)는 메소드 및 함수 간의 호출 구조(Call-reference Structure)를 생성하고, 상기 DEX 파싱부(130) 및 상기 IR 파싱부(150)를 거쳐서 나온 산출물을 가공한다. 추출된 호출 구조 정보 형식의 예는 도 4와 같다.
상기 호출 구조 생성부(170)는 코드에서 다른 메소드 혹은 함수를 호출하는 코드가 존재하면, 호출되는 대상을 찾는다. 이 과정을 반복하여 애플리케이션 전체에 해당하는 호출 구조를 생성한다.
또한, 본 발명은 DEX 파일과 so 파일 간의 호출은 JNI(Java Native Interface)를 이용할 수 있다. 따라서, System.loadLibrary와 JNI_OnLoad 메소드 등의 JNI 호출 구조를 추가로 찾는 과정을 진행한다. 이를 통해 안드로이드 애플리케이션의 호출 구조 커버리지(Call-reference Coverage)를 확장할 수 있다.
도 5는 DEX 파일 내의 코드를 실행하는 중 so 파일의 코드를 실행하는 과정의 예시이다. 도 5 및 도 6에서 중요 정보(seed, key 값 등)를 다루는 함수 및 I/O 작업이 있는 함수는 볼드체로 표기하였다.
도 5를 참조하면, System.loadLibrary()를 통해 so 파일 내의 JNI_OnLoad() 함수를 호출하고, so 파일 내의 서브루틴이 동작한 후에 DEX 파일 실행 흐름으로 돌아온다.
이 과정에서, 종래기술은 DEX 파일 또는 so 파일을 각각 별도로 분석할 수밖에 없기 때문에, User.getRand()가 중요 정보(rnd)를 다루고 User.check(rnd)를 통해 중요 정보가 User.check()로 전해지는 경로를 생성한다. 그리고, 화면 출력(예시: System.out.println()) 함수가 User.check() 내에서 발생하여 중요 정보를 I/O를 통해 나간다는 경로를 생성할 수 있으면 탐지되는 형식이다.
도 6은 함수가 도달하는 경로의 예시이다. 도 6을 참조하면, 종래 기술의 문제는 jni_func_set_key()는 중요 정보를 DEX 파일 코드에서 뽑아내지만, 유출되는(I/O를 통해 나가는) 경로가 so 파일 코드에 있을 때 탐지하지 못한다는 문제점이 있다.
반면, 본 발명이 생성하는 호출 구조(Call-reference)는 DEX와 so 파일 간의 호출 구조를 파악할 수 있기 때문에 종래 기술의 문제를 해결할 수 있다.
본 발명은 호출 구조를 비롯한 함수 내부의 코드도 보유하고 있으며, 이러한 특징은 데이터 참조만을 이용하여 호출 구조에 드러나지 않는 경우를 해결할 수 있다. 즉, 호출 구조(DEX, DEX ↔ so, so)와 함수 내부 코드 분석까지 가능하다는 장점이 있다.
상기 위험도 분석부(190)는 생성된 호출 구조를 기초로 사전에 지정한 위험도에 따라 취약점 정보를 출력한다.
상기 위험도 분석부(190)는 위험도별로 분류된 특정 함수 및 메소드 리스트(
Figure 112021012172178-pat00001
,
Figure 112021012172178-pat00002
)를 호출 구조(Call-reference,
Figure 112021012172178-pat00003
)에서 비교하여 해당하는 함수가 존재하는지 검사한다. V에는 타겟 애플리케이션 내에 중요 정보라고 판단되는 데이터에 접근하는 함수 등이 포함된다. 이러한 함수(
Figure 112021012172178-pat00004
)가
Figure 112021012172178-pat00005
내에 존재하면(
Figure 112021012172178-pat00006
), 추적하여 도달 가능한 모든 경로(
Figure 112021012172178-pat00007
)를 생성한다.
System I/O(Input/Output, L,
Figure 112021012172178-pat00008
)로 이동하는 지점이 존재하는지 탐색한다(
Figure 112021012172178-pat00009
). 해당 지점이 존재하면, 사전에 지정한 위험도에 맞춰 취약점 정보를 생산한다.
이후, 최종 산출물로 표준 포맷에 맞는 문서화하여 생산한다. 산출물에 담기는 정보는 중요 정보가 I/O를 통해 화면 출력, 파일 출력 등으로 이동 가능한 지점, 및 위험도가 어느 정도인지를 포함할 수 있다. 최종 산출물 형식의 예는 도 7과 같다.
일 실시예에서, 특정 지점에 대한 그래프 도달 가능성의 계산은, IFDS 알고리즘을 통해 중요 정보가 I/O(화면 출력, 파일 저장 등)로 나가는 함수에 도달 가능한지 계산하여 분석할 수 있다.
본 발명은 기존 기술의 허점을 보완할 수 있다. DEX 파일 뿐 아니라 so 파일까지 하나의 호출 구조 묶음으로 생성하기 때문이다. 기존 기술이 갖고 있던 문제점인 DEX 파일과 ELF 파일 즉, so 파일과의 상호작용을 분석할 수 없다는 점을 해결할 수 있다.
도 8은 본 발명의 일 실시예에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 방법의 흐름도이다.
본 실시예에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 방법은, 도 1의 장치(10)와 실질적으로 동일한 구성에서 진행될 수 있다. 따라서, 도 1의 장치(10)와 동일한 구성요소는 동일한 도면부호를 부여하고, 반복되는 설명은 생략한다.
또한, 본 실시예에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 방법은 애플리케이션 내부의 데이터 유출 위험성 평가를 수행하기 위한 소프트웨어(애플리케이션)에 의해 실행될 수 있다.
본 발명에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 방법은 애플리케이션 내부의 데이터 유출 위험성 평가하기 위해, DEX 파일과 so 파일을 이용하여 산출물을 도출한다.
본 발명은 데이터 흐름 분석을 정적 분석기법에 해당하는 형태로 진행한다. 또한, 모바일 애플리케이션 대상으로 하여 적용할 수 있다. APK를 입력으로 넣으면, 중요한 정보가 누출될 수 있는 지점과 위험성을 결과로 산출한다.
중요한 정보는 애플리케이션이 사용하는 암호화 키 혹은 서명 키, 난수 생성기의 시드 값 등을 예로 들 수 있다. 그리고, 이 정보가 런타임(실행 중)에 계산으로 생성될 것인지, 사용자가 입력할 순수 값인지, 애플리케이션에 사전 정의된 값인지에 따라 위험도가 순차적으로 높게 책정될 수 있다.
도 8을 참조하면, 본 실시예에 따른 애플리케이션 내부의 데이터 유출 위험성 평가 방법은, 모바일 애플리케이션의 APK 파일을 압축 해제하여 DEX(Dalvik Executable) 파일과 so(Shared Object) 파일을 추출한다(단계 S10).
APK 파일은 Zip 파일로 취급할 수 있으므로, Unzip 도구 등을 통해 압축 해제하여, 필요한 데이터인 Dalvik Executable(.dex), Shared Object(.so) 파일을 탐색 및 수집한다.
모바일 애플리케이션은 APK(Android Application Package) 파일 형태로 배포된다. APK는 하나 또는 그 이상의 DEX(Dalvik Executable) 파일과 추가 리소스 파일로 구성된다. 추가 리소스 파일 일부로는 so(Shared Object) 파일이 해당한다. 이는 운영체제에 종속된 다양한 기능을 사용하기 위해 JNI(JAVA Native Interface)를 지원하기 위한 파일이며, 일반적으로 C나 C++ 언어로 컴파일된다. 본 발명은 DEX 파일과 so 파일을 이용하여 산출물을 도출한다.
DEX 파일을 파싱하여 DEX 파일로부터 DEX 코드 정보를 추출한다(단계 S20).
추출되는 DEX 코드 정보는 클래스, 메소드, 접근 제한자, byte 코드, smali 코드 및 java 소스 코드 등일 수 있다. bytecode는 안드로이드 애플리케이션이 동작하기 위한 코드로 쓰이며, smali 코드는 bytecode를 사람이 읽을 수 있도록 표현한 언어이다.
so 파일의 내용을 IR(Intermediate Representation)로 번역한다(단계 S30).
so 파일은 ELF(Executable and Linkable Format) 파일 포맷으로 구성되어 있고. 필요한 정보 추출을 쉽게 하기 위해서는 IR로 번역하는 작업이 필요하기 때문이다. ELF 파일은 기계어(Machine code)와 대응되므로, 각각에 해당하는 어셈블리 언어로 표현 가능하다.
그러나, 실행 기계의 CPU Architecture(예: x86, x86-64, amd64, armeabi-v7a, arm64-v8a, mips 등)에 종속적이므로, 원하는 정보를 추출하기에는 어려움이 있다. 따라서, 어셈블리 언어를 IR로 번역할 필요성이 있는 것이다. 이는 어셈블리 언어 대비, CPU Architecture에 대한 종속성이 낮고 사람이 읽기 편한 언어라는 장점이 있어 파싱을 더 쉽게 할 수 있다.
번역된 IR로부터 IR 코드 정보를 추출한다(단계 S40).
추출되는 IR 코드 정보는 함수, 리턴 형식, 인자 및 IR 코드 등일 수 있다. 예를 들어, IR에서 “define i32 @main(void (i64*)* %func, i64* %arg, i64 %dso_handle) local_unnamed_addr {”라는 줄을 발견하면, 맨 앞 'define' 토큰으로 함수 선언임을 식별한다. 다음 토큰인 'i32'는 함수의 returnType이 된다. ‘@main’은 함수의 이름이 되고, 그 뒤에 오는 괄호 내의 내용은 각각 ‘,’(쉼표)로 구분하고 공백 기준 앞은 함수 인자 형식(void (i64*)*), 뒤는 명칭(func)으로 추출한다.
추출된 DEX 코드 정보 및 IR 코드 정보를 가공하여 DEX 파일과 so 파일 간의 호출 구조(Call-reference Structure)를 생성한다(단계 S50).
일 실시예에서, JNI(Java Native Interface)를 이용하여 DEX 파일과 so 파일 간의 호출을 추출할 수 있다. 추출된 DEX 코드 및 IR 코드에서 다른 메소드 혹은 함수를 호출하는 코드가 존재하면, 호출되는 대상을 찾는 과정을 반복 수행하여 애플리케이션의 전체 호출 구조를 생성할 수 있다.
본 발명은 DEX 파일과 so 파일 간의 호출은 JNI(Java Native Interface)를 이용할 수 있다. 따라서, System.loadLibrary와 JNI_OnLoad 메소드 등의 JNI 호출 구조를 추가로 찾는 과정을 진행한다. 이를 통해 안드로이드 애플리케이션의 호출 구조 커버리지(Call-reference Coverage)를 확장할 수 있다.
본 발명은 호출 구조를 비롯한 함수 내부의 코드도 보유하고 있으며, 이러한 특징은 데이터 참조만을 이용하여 호출 구조에 드러나지 않는 경우를 해결할 수 있다. 즉, 호출 구조(DEX, DEX ↔ so, so)와 함수 내부 코드 분석까지 가능하다는 장점이 있다.
생성된 호출 구조를 기초로 사전에 지정한 위험도에 따라 취약점 정보를 출력한다(단계 S60).
상기 취약점 정보를 출력하는 단계(단계 S60)는, 위험도별로 분류된 특정 함수 및 메소드 리스트를 생성된 호출 구조와 비교하여 해당하는 함수가 존재하는지 검사한다. 생성된 호출 구조에 해당하는 함수가 존재하는 경우, 추적하여 도달 가능한 모든 경로를 생성한다.
이후, 시스템의 I/O(Input/Output, L)로 이동하는 지점이 존재하는지 탐색하고, I/O 로 이동하는 지점이 존재하는 경우, 사전에 지정한 위험도에 따라 취약점 정보를 생산한다.
최종적으로, 취약점 정보를 표준 포맷에 따라 문서화 하여 산출물로 출력할 수 있다. 산출물에 담기는 정보는 중요 정보가 I/O를 통해 화면 출력, 파일 출력 등으로 이동 가능한 지점, 그리고 위험도가 어느 정도인지를 포함할 수 있다.
본 발명은 DEX 파일 뿐 아니라 so 파일까지 하나의 호출 구조 묶음으로 생성하여 안드로이드 애플리케이션의 호출 구조 커버리지(Call-reference Coverage)를 확장할 수 있다. 특히, JNI 호출 등을 통해 DEX 파일과 ELF 파일 즉, so 파일과의 상호작용을 분석할 수 있다.
또한, 중요 데이터에 따른 위험도 및 유출 지점을 알려줄 수 있기 때문에 유지 보수량을 줄여 생산성 증대에도 효과적이다. 따라서, 애플리케이션 관리자 혹은 개발자에게 보안이 강화된 애플리케이션을 개발하도록 도움을 줄 수 있는 유용한 도구로 제공될 수 있다.
이와 같은, 애플리케이션 내부의 데이터 유출 위험성 평가 방법은 애플리케이션으로 구현되거나 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거니와 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서는 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
본 발명은 JNI 호출 등을 통한 DEX 파일과 ELF 파일 즉, so 파일과의 상호작용을 분석할 수 없다는 기존 기술의 문제점을 해결할 수 있다. 이에 따라, 애플리케이션 관리자 혹은 개발자에게 보안이 강화된 애플리케이션을 개발하는데 도움을 줄 수 있을 것으로 기대된다.
10: 애플리케이션 내부의 데이터 유출 위험성 평가 장치
110: 파일 추출부
130: DEX 파싱부
140: ELF 번역부
150: IR 파싱부
170: 호출 구조 생성부
190: 위험도 분석부

Claims (12)

  1. 모바일 애플리케이션의 APK 파일을 압축 해제하여 DEX(Dalvik Executable) 파일과 so(Shared Object) 파일을 추출하는 단계;
    DEX 파일을 파싱하여 DEX 파일로부터 DEX 코드 정보를 추출하는 단계;
    so 파일의 내용을 IR(Intermediate Representation)로 번역하는 단계;
    번역된 IR로부터 IR 코드 정보를 추출하는 단계;
    추출된 DEX 코드 정보 및 IR 코드 정보를 가공하여 DEX 파일과 so 파일 간의 호출 구조(Call-reference Structure)를 생성하는 단계: 및
    생성된 호출 구조를 기초로 사전에 지정한 위험도에 따라 취약점 정보를 출력하는 단계;를 포함하고,
    상기 취약점 정보를 출력하는 단계는,
    위험도별로 분류된 특정 함수 및 메소드 리스트를 생성된 호출 구조와 비교하여 해당하는 함수가 존재하는지 검사하는 단계;
    생성된 호출 구조에 해당하는 함수가 존재하는 경우, 추적하여 도달 가능한 모든 경로를 생성하는 단계;
    시스템의 I/O(Input/Output, L)로 이동하는 지점이 존재하는지 탐색하는 단계;
    I/O 로 이동하는 지점이 존재하는 경우, 사전에 지정한 위험도에 따라 취약점 정보를 생산하는 단계; 및
    취약점 정보를 표준 포맷에 따라 문서화 하여 최종 산출물로 출력하는 단계;를 포함하는, 애플리케이션 내부의 데이터 유출 위험성 평가 방법.
  2. 제1항에 있어서, 상기 가공하여 DEX 파일과 so 파일 간의 호출 구조를 생성하는 단계는,
    JNI(Java Native Interface)를 이용하여 DEX 파일과 so 파일 간의 호출을 추출하는, 애플리케이션 내부의 데이터 유출 위험성 평가 방법.
  3. 제1항에 있어서, 상기 DEX 코드 정보를 추출하는 단계는,
    클래스, 메소드, 접근 제한자, byte 코드, smali 코드 및 java 소스 코드 중 적어도 하나의 정보를 추출하는, 애플리케이션 내부의 데이터 유출 위험성 평가 방법.
  4. 제1항에 있어서, 상기 IR 코드 정보를 추출하는 단계는,
    번역된 IR로부터 함수, 리턴 형식, 인자 및 IR 코드 중 적어도 하나의 정보를 추출하는, 애플리케이션 내부의 데이터 유출 위험성 평가 방법.
  5. 제1항에 있어서, 상기 DEX 파일과 so 파일 간의 호출 구조를 생성하는 단계는,
    추출된 DEX 코드 및 IR 코드에서 다른 메소드 혹은 함수를 호출하는 코드가 존재하면, 호출되는 대상을 찾는 과정을 반복 수행하는, 애플리케이션 내부의 데이터 유출 위험성 평가 방법.
  6. 삭제
  7. 제1항에 따른 상기 애플리케이션 내부의 데이터 유출 위험성 평가 방법을 수행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 저장 매체.
  8. 모바일 애플리케이션의 APK 파일을 압축 해제하여 DEX(Dalvik Executable) 파일과 so(Shared Object) 파일을 추출하는 파일 추출부;
    DEX 파일을 파싱하여 DEX 파일로부터 DEX 코드 정보를 추출하는 DEX 파싱부;
    so 파일의 내용을 IR(Intermediate Representation)로 번역하는 ELF 번역부;
    번역된 IR로부터 IR 코드 정보를 추출하는 IR 파싱부;
    추출된 DEX 코드 정보 및 IR 코드 정보를 가공하여 DEX 파일과 so 파일 간의 호출 구조(Call-reference Structure)를 생성하는 호출 구조 생성부: 및
    생성된 호출 구조를 기초로 사전에 지정한 위험도에 따라 취약점 정보를 출력하는 위험도 분석부;를 포함하고,
    상기 위험도 분석부는,
    위험도별로 분류된 특정 함수 및 메소드 리스트를 생성된 호출 구조와 비교하여 해당하는 함수가 존재하는지 검사하는 검사부;
    생성된 호출 구조에 해당하는 함수가 존재하는 경우, 추적하여 도달 가능한 모든 경로를 생성하는 경로 생성부;
    시스템의 I/O(Input/Output, L)로 이동하는 지점이 존재하는지 탐색하는 유출 탐색부;
    I/O 로 이동하는 지점이 존재하는 경우, 사전에 지정한 위험도에 따라 취약점 정보를 생산하는 정보 생산부; 및
    취약점 정보를 표준 포맷에 따라 문서화 하여 최종 산출물로 출력하는 출력부;를 포함하는, 애플리케이션 내부의 데이터 유출 위험성 평가 장치.
  9. 제8항에 있어서, 상기 호출 구조 생성부는,
    JNI(Java Native Interface)를 이용하여 DEX 파일과 so 파일 간의 호출을 추출하는, 애플리케이션 내부의 데이터 유출 위험성 평가 장치.
  10. 제8항에 있어서,
    상기 DEX 파싱부는 클래스, 메소드, 접근 제한자, byte 코드, smali 코드 및 java 소스 코드 중 적어도 하나의 정보를 추출하고,
    상기 IR 파싱부는 번역된 IR로부터 함수, 리턴 형식, 인자 및 IR 코드 중 적어도 하나의 정보를 추출하는, 애플리케이션 내부의 데이터 유출 위험성 평가 장치.
  11. 제8항에 있어서, 상기 호출 구조 생성부는,
    추출된 DEX 코드 및 IR 코드에서 다른 메소드 혹은 함수를 호출하는 코드가 존재하면, 호출되는 대상을 찾는 과정을 반복 수행하는, 애플리케이션 내부의 데이터 유출 위험성 평가 장치.
  12. 삭제
KR1020210013283A 2021-01-29 2021-01-29 애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치 KR102314829B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020210013283A KR102314829B1 (ko) 2021-01-29 2021-01-29 애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치
PCT/KR2021/004034 WO2022163908A1 (ko) 2021-01-29 2021-04-01 애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치
US17/420,036 US11928220B2 (en) 2021-01-29 2021-04-01 Method for evaluating risk of data leakage in application, recording medium and device for performing the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210013283A KR102314829B1 (ko) 2021-01-29 2021-01-29 애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치

Publications (1)

Publication Number Publication Date
KR102314829B1 true KR102314829B1 (ko) 2021-10-18

Family

ID=78271126

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210013283A KR102314829B1 (ko) 2021-01-29 2021-01-29 애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치

Country Status (2)

Country Link
KR (1) KR102314829B1 (ko)
WO (1) WO2022163908A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102636698B1 (ko) * 2023-08-02 2024-02-15 (주)아스트론시큐리티 서버리스 함수의 취약점 점검 방법 및 점검 서버

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101623096B1 (ko) 2015-05-13 2016-05-23 주식회사 에스이웍스 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
KR20180060497A (ko) * 2016-11-29 2018-06-07 한국전력공사 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법
KR101872104B1 (ko) 2016-08-30 2018-06-28 한남대학교 산학협력단 Apk 파일 동적로딩 기법을 이용한 뱅킹 어플리케이션 무결성 검증 시스템 및 무결성 검증방법
KR101920597B1 (ko) * 2017-11-16 2018-11-21 숭실대학교산학협력단 동적 코드 추출 기반 자동 분석 방지 우회 및 코드 로직 해석 장치
KR101926142B1 (ko) 2016-07-19 2018-12-07 주식회사 스패로우 프로그램 분석 장치 및 방법
KR20200060180A (ko) * 2018-11-21 2020-05-29 숭실대학교산학협력단 안드로이드 앱의 호출 관계도 생성 방법, 이를 수행하기 위한 기록매체 및 장치

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101666176B1 (ko) * 2015-06-25 2016-10-14 한국전자통신연구원 안드로이드 플랫폼 기반의 어플리케이션 모니터링 장치 및 방법
KR101875866B1 (ko) * 2017-11-06 2018-07-06 주식회사 엠시큐어 모바일 어플리케이션의 취약점 점검 방법 및 서버

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101623096B1 (ko) 2015-05-13 2016-05-23 주식회사 에스이웍스 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
KR101926142B1 (ko) 2016-07-19 2018-12-07 주식회사 스패로우 프로그램 분석 장치 및 방법
KR101872104B1 (ko) 2016-08-30 2018-06-28 한남대학교 산학협력단 Apk 파일 동적로딩 기법을 이용한 뱅킹 어플리케이션 무결성 검증 시스템 및 무결성 검증방법
KR20180060497A (ko) * 2016-11-29 2018-06-07 한국전력공사 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법
KR101920597B1 (ko) * 2017-11-16 2018-11-21 숭실대학교산학협력단 동적 코드 추출 기반 자동 분석 방지 우회 및 코드 로직 해석 장치
KR20200060180A (ko) * 2018-11-21 2020-05-29 숭실대학교산학협력단 안드로이드 앱의 호출 관계도 생성 방법, 이를 수행하기 위한 기록매체 및 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102636698B1 (ko) * 2023-08-02 2024-02-15 (주)아스트론시큐리티 서버리스 함수의 취약점 점검 방법 및 점검 서버

Also Published As

Publication number Publication date
WO2022163908A1 (ko) 2022-08-04

Similar Documents

Publication Publication Date Title
US11436337B2 (en) System and method for application security profiling
KR102415971B1 (ko) 악성 모바일 앱 감지 장치 및 방법
US9747187B2 (en) Simulating black box test results using information from white box testing
US11048798B2 (en) Method for detecting libraries in program binaries
US8387017B2 (en) Black box testing optimization using information from white box testing
US11403207B2 (en) Detection of runtime errors using machine learning
KR102011725B1 (ko) 악성코드 검출을 위한 화이트리스트 구축 방법 및 이를 수행하기 위한 기록매체 및 장치
US9405906B1 (en) System and method for enhancing static analysis of software applications
WO2021175053A1 (zh) 一种在虚拟机中执行功能模块的方法和装置
Socała et al. Automatic profile generation for live Linux Memory analysis
US20180032735A1 (en) System and method for enhancing static analysis of software applications
CN111488573A (zh) 链接库检测方法、装置、电子设备和计算机可读存储介质
CN113419960A (zh) 用于可信操作系统内核模糊测试的种子生成方法及系统
KR102314829B1 (ko) 애플리케이션 내부의 데이터 유출 위험성 평가 방법, 이를 수행하기 위한 기록 매체 및 장치
CN105786465A (zh) 一种脚本语言执行方法及装置
CN113138797A (zh) 面向Intel SGX的程序自动化移植系统
CN116880847A (zh) 基于开源项目的溯源方法、装置电子设备及存储介质
CN116361793A (zh) 代码检测方法、装置、电子设备及存储介质
US11928220B2 (en) Method for evaluating risk of data leakage in application, recording medium and device for performing the method
JP7552865B2 (ja) シンボル絞り込み装置、プログラム解析装置、シンボル抽出方法、プログラム解析方法、及び、プログラム
JPWO2018116522A1 (ja) 判定装置、判定方法及び判定プログラム
CN114417347A (zh) 应用程序的漏洞检测方法、装置、设备、存储介质和程序
Liu et al. Reunify: A step towards whole program analysis for react native android apps
CN112926058B (zh) 代码处理方法、污点分析方法和装置
US12050687B1 (en) Systems and methods for malware detection in portable executable files

Legal Events

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