디지털 라이브러리[ 검색결과 ]
기호 실행의 성능 극대화를 위한 최적의 시드 선택 기법
http://doi.org/10.5626/JOK.2025.52.7.578
기호 실행은 테스트 케이스를 효과적으로 생성하여 프로그램의 실행 경로를 최대한 넓게 탐색하고자 하는 유망한 소프트웨어 테스팅 기술이다. 그러나 경로-조건식 풀이에 사용되는 높은 비용은 기호 실행의 대표적 한계로 지적된다. 이를 극복하기 위한 방안 중 하나는, 이미 생성된 테스트 케이스를 기호 실행 도구의 시드 입력으로 재사용하여 그 도구의 경로-조건식 풀이 횟수를 줄이는 것이다. 이 접근법의 효과성은 어떤 테스트 케이스를 시드 입력으로 사용할지에 따라 결정된다. 본 논문에서는 생성된 테스트 케이스들을 군집화하고 각 군집들의 특성을 기반으로 가장 잠재력이 높은 군집을 골라 그 군집 내 최적의 시드 입력을 선택하는 기법을 통해 기호 실행의 분기 커버리지 성능을 높이는 방법을 제안한다. 그 결과, 제안한 기법은 동일한 테스팅 시간동안 기존 기호 실행 도구보다 평균적으로 42.0%의 더 높은 분기 커버리지를 달성하는 데 성공하였다.
RTL 수준 프로세서 구현으로부터의 ISA 명세 자동 추출 기법
http://doi.org/10.5626/JOK.2023.50.10.827
응용 특화 프로세서들은 목표 도메인에서의 성능 극대화를 위해 자주 쓰이는 연산들을 위한 특화 명령어들을 가진다. 응용 특화 프로세서를 위한 프로그램은 특화 명령어를 사용하기 때문에 이들의 의미명세가 있어야 기호 실행기 등 고급 소프트웨어 분석 도구를 적용하는 것이 가능해진다. 이에 이 연구에서는 프로세서 구현 과정에서 반드시 작성해야 하는 레지스터 전송 레벨(RTL) 수준 프로세서 구현으로 부터 명령어의 의미(semantics)을 자동으로 추출하는 시스템인 SemTracter를 개발하였다. SemTracter는 프로세서의 RTL을 기호 실행해서 각 명령어의 의미명세를 얻고 이를 ISA 명세 작성을 위해 개발된 언어인 Sail로 표현한다. 개발된 SemTracter는 간단한 구현된 5-stage RISC-V 프로세서로부터 몇 가지 명령어의 의미명세를 성공적으로 추출하였으며, 이는 직접 사람이 작성한 명세와 비교하여 일치하는 것을 확인하였다.
안드로이드 커널 모듈 취약점 탐지를 위한 자동화된 유닛 테스트 생성 기법
본 논문에서는 안드로이드 커널 모듈의 취약점을 탐지하기 위한 자동 유닛 테스트 생성 기법을 제안한다. 안드로이드 커널 모듈의 각 함수를 대상으로 테스트 드라이버/스텁 함수를 자동 생성하고 동적 기호 실행 기법을 사용하여 테스트 입력 값을 자동으로 생성한다. 또한 안드로이드 커널 모듈의 함수 포인터와 함수 선행 조건을 고려하지 않은 테스트 생성으로 인한 거짓 경보를 줄이기 위해 정적 분석을 통한 함수 포인터 매칭 기법과 def-use 분석을 사용한 함수 선행 조건 생성 기법을 개발하였다. 자동 유닛 테스트 생성 기법을 안드로이드 커널 3.4 버전의 세 모듈에 적용한 결과 기존에 존재하던 취약점을 모두 탐지할 수 있었으며 제안한 거짓 경보 감소 기법으로 평균 44.9%의 거짓 경보를 제거할 수 있었다.
효과적인 내장형 소프트웨어의 정수 확장 (Integer Promotion) 버그 검출 기법
세탁기, 냉장고 등의 가전제품에 탑재되는 8-bit MCU용 C 컴파일러는 소프트웨어 실행 속도를 높이기 위해 표준 C 언어 규칙을 따르지 않고 컴파일을 수행할 수 있다. 개발자가 일반 C 컴파일러와 8-bit MCU용 C 컴파일러의 차이를 정확하게 이해하지 못할 경우 표준 C 언어 환경에서는 발생하지 않으나 8-bit MCU를 사용하는 내장형 시스템에서는 발생하는 버그를 야기할 수 있으며 이런 버그는 표준 C언어 환경을 가정하는 버그 검출 도구로는 찾기 어렵다. 본 논문에서는 표준 C 정수 확장 규칙을 따르지 않는 8-bit MCU용 컴파일러를 사용할 때 발생하는 정수 확장 버그를 소개하고 정수 확장 버그를 탐지하기 위한 다섯 종류의 버그 패턴을 제안한다. 정수 확장 버그 패턴 검출 도구를 개발하여 LG전자 세탁기 소프트웨어를 분석한 결과 컴파일러 옵션을 잘못 선택한 경우 발생하는 27개의 정수 확장 버그를 발견하였다.