Publications

Detailed Information

파이썬 프로그램에서의 처리되지 않은 예외 분석: 디지털 포렌식 소프트웨어 중점으로 : Analyzing Uncaught Exceptions in Python program: Focusing on Digital Forensic software

Cited 0 time in Web of Science Cited 0 time in Scopus
Authors

이서우

Advisor
이광근
Issue Date
2023
Publisher
서울대학교 대학원
Keywords
처리되지 않은 예외정적 분석디지털 포렌식 소프트웨어파이썬 프로그램
Description
학위논문(석사) -- 서울대학교대학원 : 공과대학 컴퓨터공학부, 2023. 2. 이광근.
Abstract
본 논문에서는 파이썬 프로그램 중 대검찰청의 디지털 포렌식 소프트웨어의 신뢰성을 높이기 위하여 해당 소프트웨어에서 처리되지 않은 예외를 사전에 검출하는 방안을 설계하고 성능을 측정한다. 대검찰청의 디지털 포렌식 소프트웨어는
파이썬으로 개발되고 있으며 파이썬 라이브러리 자체 내에서 발생할 수 있는 예외 상황과 포렌식 프로그램 자체의 예외 상황이 발생할 수 있는데 본 연구에서는 포렌식 프로그램 내의 오류에 집중한다. 기본적으로 집합 제약식 기반 분석 방법을 사용하여 expression과 statement으로 구분된 프로그램의 지점마다 발생할 수 있는 예외들의 집합을 구하기 위한 제약
조건을 정의하여 이들간 방정식의 해를 구한다. 이 과정에서 발생할 수 있는 허위 경보를 줄이기 위하여 Pyright의 타입 분석 결과를 결합하여 리스트나 딕셔너리 등 타입별로 발생할 수 없는 KeyError나 IndexError 등의 예외들을 제거하여 허
위 경보를 줄인다. 또한, 프로그램의 구성을 프로그램 지점들의 포함 관계에 따라 트리 형태로 나타내고 전위 순회를 하면서 중복되는 허위 경보를 제거한다. 개발한 정적 분석기를 대검에서 제공한 9 개의 벤치마크에서 수행시킨 결과
대검찰청에서 찾지 못한 KeyError, IndexError, ZeroDivisionError 등 3 가지 패턴에 속하는 예외 발생 지점 10여 개를 찾을 수 있었다. 또한, 9 개의 벤치마크에 대하여 평균 84%, 최대 89%의 허위 경보를 제거하였다. 이와 아울러 반복되는
허위 경보를 부모 자식 관계를 활용하여 더욱 허위 경보를 줄일 수 있는 여지도 발견하였다.
This thesis designs a novel scheme for detecting uncaught exceptions from thedigital forensic software is under development in the supreme prosecutors office and measures its performance, aiming at enhancing the forensic softwares reliability. The target forensic software is being coded in Python, while exceptions can be raised from the built-in python library as well as from the faults embedded in the forensic program itself.
Our analyzer design is built on the set constraint-based analysis scheme to detect the uncaught exception statically. This static analysis method begins with the identification of the sets of exceptions that can be raised at each observation point of the program, defines the set constraints between those sets, which finally solves the equations derived from the set constraint. To lower the false alarm rate, we also integrate the Pyright type checker, eliminating the false alarms such as KeyError and IndexError, which cannot be raised in the list and dictionary type simultaneously. Additionally, our analyzer reorganizes the given code based on the inclusion relationships between each program point into a tree form and traverses it in preorder to remove repeated false alarms. Our static analyzer has found more than ten spots in the nine benchmarks, while each case belongs to one of three patterns of KeyError, IndexError, and ZeroDivisionError. In addition, our scheme cuts down false alarms by up to 84% on average and 89% at maximum in the nine benchmarks. However, there is still room for improvement by removing the repeated exceptions in the program.
Language
kor
URI
https://hdl.handle.net/10371/193368

https://dcollection.snu.ac.kr/common/orgView/000000174150
Files in This Item:
Appears in Collections:

Altmetrics

Item View & Download Count

  • mendeley

Items in S-Space are protected by copyright, with all rights reserved, unless otherwise indicated.

Share