• 제목/요약/키워드: Concolic-Execution

검색결과 9건 처리시간 0.023초

목적 지향 콘콜릭 테스팅 (Goal-oriented Concolic Testing)

  • 정인상;박정규
    • 한국정보과학회논문지:소프트웨어및응용
    • /
    • 제37권10호
    • /
    • pp.768-772
    • /
    • 2010
  • 콘콜릭 테스트는 높은 테스트 커버리지를 달성하기 위해 실제 프로그램 수행과 심볼릭 수행을 결합하여 테스트 데이터를 생성한다. CREST는 콘콜릭 테스팅을 구현한 대표적인 open-source인 테스트 도구이다. 그러나 현재 CREST는 기본적으로 프로그램의 모든 가능한 실행 경로들을 탐색하는 것을 목적으로 한다. 이 때문에 특정 분기 또는 블록만을 테스트하는 경우에는 비효율적일 수 있다. 이 논문에서는 프로그램 상의 한 분기 또는 블록을 주고 이률 실행할 수 있는 테스트 데이터를 생성하는 목적 지향 콘콜릭 테스트 방법을 제안한다.

CRESTIVE-DX: 임베디드 소프트웨어에 대해 테스트케이스 생성을 지원하는 분산 Concolic 테스팅 도구 (CRESTIVE-DX: Design and Implementation of Distrusted Concolic Testing Tool for Embedded Software)

  • 임혜린;최한솔;김효림;홍신
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제9권8호
    • /
    • pp.229-234
    • /
    • 2020
  • 본 논문은 임베디드 소프트웨어에 대한 Concolic 테스팅을 효과적이고 효율적으로 지원하기 위해 임베디드 타겟(target) 시스템과 호스트(host) 시스템의 분산적이고 동시적으로 테스트 생성을 위한 작업을 수행하는 Concolic 테스팅 도구의 설계와 구현 사례를 소개한다. 소개하는 테스트 케이스 생성 도구는 Concolic 테스팅 과정 중 (1) 임베디드에 종속적인 특성을 갖는 테스트검증 대상 프로그램의 실행 부분은 임베디드 타겟 시스템에서 수행하고, (2) 시스템에 비종속적인 실행 부분인 탐색 전략, 제약식 해법기 실행 과정은 계산성능이 좋은 호스트 시스템에 분산하고, 독립적인 단계를 동시적으로 실행하도록 기존 Concolic 도구를 개선하였다. Arm Cortex A54 아키텍쳐의 임베디드 타겟 시스템과 x86-64 아키텍쳐의 호스트 시스템을 대상으로 본 기법을 구현하여 오픈소스 C 프로그램의 Grep, Busybox Awk, Busybox Ed를 대상으로 실험한 결과, 기존 도구 보다 1.59~2.64배 테스트케이스 생성속도가 향상됨을 확인할 수 있었다.

EPfuzzer: Improving Hybrid Fuzzing with Hardest-to-reach Branch Prioritization

  • Wang, Yunchao;Wu, Zehui;Wei, Qiang;Wang, Qingxian
    • KSII Transactions on Internet and Information Systems (TIIS)
    • /
    • 제14권9호
    • /
    • pp.3885-3906
    • /
    • 2020
  • Hybrid fuzzing which combines fuzzing and concolic execution, has proved its ability to achieve higher code coverage and therefore find more bugs. However, current hybrid fuzzers usually suffer from inefficiency and poor scalability when applied to complex, real-world program testing. We observed that the performance bottleneck is the inefficient cooperation between the fuzzer and concolic executor and the slow symbolic emulation. In this paper, we propose a novel solution named EPfuzzer to improve hybrid fuzzing. EPfuzzer implements two key ideas: 1) only the hardest-to-reach branch will be prioritized for concolic execution to avoid generating uninteresting inputs; and 2) only input bytes relevant to the target branch to be flipped will be symbolized to reduce the overhead of the symbolic emulation. With these optimizations, EPfuzzer can be efficiently targeted to the hardest-to-reach branch. We evaluated EPfuzzer with three sets of programs: five real-world applications and two popular benchmarks (LAVA-M and the Google Fuzzer Test Suite). The evaluation results showed that EPfuzzer was much more efficient and scalable than the state-of-the-art concolic execution engine (QSYM). EPfuzzer was able to find more bugs and achieve better code coverage. In addition, we discovered seven previously unknown security bugs in five real-world programs and reported them to the vendors.

다단계 스택 지향 포인터가 있는 프로그램 테스트를 위한 테스트 데이터 자동 생성 (Automated Test Data Generation for Testing Programs with Multi-level Stack-directed Pointers)

  • 정인상
    • 정보처리학회논문지D
    • /
    • 제17D권4호
    • /
    • pp.297-310
    • /
    • 2010
  • 최근에 콘콜릭 테스트이라 불리는 새로운 테스팅 방법이 많은 관심을 받고 있다. 콘콜릭 테스팅은 높은 테스트 커버리지를 달성하기 위해 실제 프로그램 수행과 심볼릭 수행을 결합하여 테스트 데이터를 생성한다. CREST는 콘콜릭 테스팅을 구현한 대표적인 open-source 테스트 도구이다. 그러나 현재 CREST는 입력으로 정수형만 다룬다. 이 논문은 포인터형인 입력이 존재하는 경우에 자동 테스트 데이터 생성을 위한 새로운 규칙을 제안한다. 이 규칙들은 C 프로그램에서 주로 사용되는 다단계 스택 지향 포인터를 효과적으로 처리한다. 또한, 이 논문에서는 제안 된 규칙을 구현한 vCREST라 불리는 도구에 대해 기술하고 C 프로그램에 적용한 결과도 함께 기술한다.

Icefex: Protocol Format Extraction from IL-based Concolic Execution

  • Pan, Fan;Wu, Li-Fa;Hong, Zheng;Li, Hua-Bo;Lai, Hai-Guang;Zheng, Chen-Hui
    • KSII Transactions on Internet and Information Systems (TIIS)
    • /
    • 제7권3호
    • /
    • pp.576-599
    • /
    • 2013
  • Protocol reverse engineering is useful for many security applications, including intelligent fuzzing, intrusion detection and fingerprint generation. Since manual reverse engineering is a time-consuming and tedious process, a number of automatic techniques have been proposed. However, the accuracy of these techniques is limited due to the complexity of binary instructions, and the derived formats have missed constraints that are critical for security applications. In this paper, we propose a new approach for protocol format extraction. Our approach reasons about only the evaluation behavior of a program on the input message from concolic execution, and enables field identification and constraint inference with high accuracy. Moreover, it performs binary analysis with low complexity by reducing modern instruction sets to BIL, a small, well-specified and architecture-independent language. We have implemented our approach into a system called Icefex and evaluated it over real-world implementations of DNS, eDonkey, FTP, HTTP and McAfee ePO protocols. Experimental results show that our approach is more accurate and effective at extracting protocol formats than other approaches.

MC/DC 커버리지를 만족하는 콘콜릭 테스팅 연구 (Concolic testing research to satisfy the MC/DC coverage)

  • 최석원;구근회;최진영
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2016년도 추계학술발표대회
    • /
    • pp.423-425
    • /
    • 2016
  • 콘콜릭 테스팅(Concolic testing)은 프로그램 실행을 실제 구체적인 입력 값(Concrete Values)을 입력하며, 동시에 심볼릭 실행 (Syrnbolic execution)을 진행하는 테스팅 기법이다. 콘콜릭 테스팅은 모든 실행 가능 경로를 탐색하여, 테스트 케이스를 자동 생생한다. 그래서 높은 분기 커버리지를 나타내지만, 안전성을 목표로 하는 MC/DC 커버리지는 만족하지 못한다. 본 논문에서는 분기 커버리지와 MC/DC 커버리지를 만족하는 테스트 케이스를 자동생성하는 CREST 도구 개선을 제안한다.

동적오염분석과 SMT 해석기를 이용한 소프트웨어 보안 취약점 분석 연구 (Analyzing Vulnerable Software Code Using Dynamic Taint and SMT Solver)

  • 김성호;박용수
    • 정보과학회 컴퓨팅의 실제 논문지
    • /
    • 제21권3호
    • /
    • pp.257-262
    • /
    • 2015
  • 소프트웨어가 복잡해짐에 따라 개발자가 인지하지 못하는 버그가 증가하고 있다. 공격자들은 시스템을 공격하거나 악성코드를 유포하기 위해 이와 같은 소프트웨어 버그 중 보안에 취약한 버그를 이용한다. 대표적인 방법으로 문서, 멀티미디어 등의 파일을 조작하여 보안에 취약한 버그를 발생시키는 방법으로 최근 지능적 지속 공격 빈번하게 사용되었다. 이에, 본 논문에서는 소프트웨어의 보안 취약점을 찾기 위한 프로그램 자동 분석 방법을 제안한다. 제안 방법은 문서, 멀티미디어 등 입력 값에 의해 발생되는 소프트웨어의 보안에 취약한 버그를 찾는 것을 목표로 한다. 먼저, 동적 오염 분석을 통해 입력 데이터가 취약 코드 지점까지 전파되는 과정을 추적하고 입력데이터 전파와 관련이 있는 명령어를 추출한다. 추출된 연관 명렁어를 수식화하고 이를 SMT 해석기를 이용하여 보안 취약점이 발생할 수 있는 입력 값을 찾는다. 제안 방법을 통해 아래아 한글, 곰 플레이어에서 크래시가 발생할 수 있는 입력값과 취약 코드 6개를 찾았다.

커스텀 파서와 SMT 솔버를 활용한 모델 기반 테스트 데이터 생성 기법 (Model-Based Automatic Test Data Generation Method Using Custom Parser and SMT Solver)

  • 신기욱;임동진
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제6권8호
    • /
    • pp.385-390
    • /
    • 2017
  • 지속적으로 증가하는 소프트웨어 복잡성으로 인해, 모델 기반 개발 기법은 소프트웨어 개발에 있어 거의 필수적인 기법이 되고 있다. 그러나, 모델 기반 기법을 활용한다 하더라도 복잡한 소프트웨어를 위한 테스트 케이스 생성은 여전히 풀어야 할 숙제이다. 본 논문에서는, 커스텀 파서와 SMT 솔버를 이용해 UML 모델 기반에서 자동 테스트 데이터를 생성하는 기법을 제안한다. 제안된 기법을 이용하면, 모델이 액션 언어(action language)와 같은 플랫폼 독립적인 언어로 구현되어 있거나, 플랫폼 종속적인 언어로 기술되어 있더라도 테스트 입력을 생성할 수 있다. 또한, 모델에서 테스트 케이스를 효율적으로 생성하기 위해 콘콜릭 수행 기법을 적용하였다. 본 논문에서는, 제안된 테스트 데이터 생성 기법을 통해 현대 산타페의 파워윈도우 스위치 모델에 활용된 사례를 기술한다.

SW 보안 취약점 자동 탐색 및 대응 기술 분석 (Technology Analysis on Automatic Detection and Defense of SW Vulnerabilities)

  • 오상환;김태은;김환국
    • 한국산학기술학회논문지
    • /
    • 제18권11호
    • /
    • pp.94-103
    • /
    • 2017
  • 자동으로 해킹을 수행하는 도구 및 기법의 발전으로 인해 최근 신규 보안 취약점들이 증가하고 있다. 대표적인 취약점 DB인 CVE를 기준으로 2010년부터 2015년까지 신규 취약점이 약 8만건이 등록되었고, 최근에도 점차 증가하는 추세이다. 그러나 이에 대응하는 방법은 많은 시간이 소요되는 전문가의 수동 분석에 의존하고 있다. 수동 분석의 경우 취약점을 발견하고, 패치를 생성하기까지 약 9개월의 시간이 소요된다. 제로데이와 같은 빠른 대응이 필요한 취약점에 대한 위험성이 더 부각되는 이유이다. 이와 같은 문제로 인해 최근 자동화된 SW보안 취약점 탐색 및 대응 기술에 대한 관심이 증가하고 있다. 2016년에는 바이너리를 대상으로 사람의 개입을 최소화하여 자동화된 취약점 분석 및 패치를 수행하는 최초의 대회인 CGC가 개최 되었다. 이 외에도 세계적으로 Darktrace, Cylance 등의 프로젝트를 통해 인공지능과 머신러닝을 활용하여 자동화된 대응 기술들을 발표하고 있다. 그러나 이러한 흐름과는 달리 국내에서는 자동화에 대한 기술 연구가 미비한 상황이다. 이에 본 논문에서는 자동화된 SW 보안 취약점 탐색 및 대응 기술을 개발하기 위한 선행 연구로서 취약점 탐색과 대응 기술에 대한 선행 연구 및 관련 도구들을 분석하고, 각 기술들을 비교하여 자동화에 용이한 기술 선정과 자동화를 위해 보완해야 할 요소를 제안한다.