• 제목/요약/키워드: Fuzzer

검색결과 11건 처리시간 0.021초

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.

비 문서화 명령어 탐색 퍼저의 명령어 실행 정보 기반 길이 결정 방법 (A Method of Instruction Length Determination Based on Execution Information in Undocumented Instruction Fuzzer)

  • 이유석;송원준
    • 정보보호학회논문지
    • /
    • 제33권5호
    • /
    • pp.775-785
    • /
    • 2023
  • 프로세서 기술의 발전은 ISA 확장의 가속화와 마이크로아키텍처의 복잡성을 증가시켰으며, 이에 따라서 다양한 프로세서 검증 기법에 대한 관심이 계속해서 증가하고 있다. 최근 비 문서화 명령어를 찾기 위한 다양한 퍼징 기술이 소개되고 있으며, 본 연구에서는 기존의 비 문서화 퍼징 기술의 문제점과 Intel 및 AMD의 최신 프로세서에서의 오류사례를 소개한다. 특히, 퍼저가 CPU 명령어 길이를 잘못 판단하여 발생하는 긍정오류 문제의 원인을 분석하고, 명령어 실행 정보 기반의 길이 결정 기법을 제안함으로써 정확도를 향상시킨다.

SNMP 대상 퍼징기술 개발 (Fuzzer for Private MIB in SNMP)

  • 김수훈;강병훈
    • 한국컴퓨터정보학회:학술대회논문집
    • /
    • 한국컴퓨터정보학회 2023년도 제67차 동계학술대회논문집 31권1호
    • /
    • pp.405-406
    • /
    • 2023
  • 일반적으로 네트워크 장비는 원활한 장비 관리를 위해 SNMP라는 프로토콜을 활용한다. SNMP를 활용함에 있어, 각 장비 제조사에서는 고유 기능을 정의하여 사용하기도 하는데 이를 Private MIB이라고 한다. 본 연구에서는 이러한 Private MIB을 대상으로 하는 퍼징(Fuzzing) 기술을 고안하였다. 본 논문에서는 특정 제조사의 Private MIB에 대해 페이로드를 만드는 전략과 실제 페이로드의 생성을 보인다. 이는 수많은 소프트웨어 혹은 장비들의 초기 안전성 평가를 수행하는 데 응용될 수 있을 것으로 기대한다.

  • PDF

VxWorks 환경에서 효과적인 퍼징 테스트를 위한 보안취약점 분석대상 모니터링 기능 설계 (Design of Security Vulnerability Analysis Target Monitoring Function for Effective Fuzzing Test in VxWorks Environment)

  • 안개일;송원준;최양서
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2019년도 추계학술발표대회
    • /
    • pp.407-408
    • /
    • 2019
  • 산업제어시스템에서 사용되는 소프트웨어의 보안취약점을 테스트하기 위한 방법으로 퍼징(Fuzzing)이 사용되고 있다. 퍼징 시스템은 크게 퍼징 대상을 테스트하는 퍼저(fuzzer)와 퍼징 대상을 모니터링하는 모니터링 모듈로 구성된다. 본 논문에서는 VxWorks 환경에서 효과적인 퍼징을 제공하기 위해 요구되는 퍼징 대상 모니터링 기능을 정의하고 모니터링 모듈을 설계한다.

커버리지 기반 웹어셈블리 퍼저의 분류와 한계점 (The Classification and Limitation of Coverage-based WebAssembly Fuzzer)

  • 강하영;송수현;권동현
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2023년도 춘계학술발표대회
    • /
    • pp.154-155
    • /
    • 2023
  • WebAssembly(Wasm)은 웹에서 네이티브에 가까운 속도로 실행 가능하고, 고성능 어플리케이션의 구현도 가능하기 때문에 브라우저 및 기타 플랫폼에서 활발히 사용되고 있다. 이로 인해 Wasm에 대한 보안성이 대두되고 있는데, 이때 취약점을 탐지하는 Fuzzing 기법을 적용한 연구들이 있다. Fuzzing 기법에 대한 분류 및 대표적인 도구를 소개하고 각 기법 간 차이점 및 한계점과 향후 연구 방향을 제시한다.

커버리지 기반 CoAP 퍼저 개발 및 취약점 점검 (Development of Coverage-based CoAP Fuzzer and Vulnerability Inspection)

  • 임세창;구형준
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2023년도 춘계학술발표대회
    • /
    • pp.111-112
    • /
    • 2023
  • IoT 산업의 규모가 커짐에 따라서 IoT 디바이스 간의 통신 프로토콜에 대한 위협도 증가하고 있으며, 이에 따라 IoT 프로토콜에 대한 보안의 중요성이 대두되고 있다. 하지만 IoT 프로토콜 중 비교적 최근에 등장한 프로토콜인 CoAP 프로토콜에 대한 연구는 아직 충분하지 않으며, CoAP에 대한 기존의 연구는 커버리지를 고려하지 않은 퍼저를 사용하였다. 따라서 이번 연구에서는 커버리지를 고려한 CoAP대상 퍼저를 개발하고 CoAP의 잠재적인 취약성을 점검한다. CoAP의 c 구현체인 libcoap 라이브러리를 대상으로 퍼징한 결과, 총 2개의 힙 버퍼 오버 플로우 취약점을 발견하였다.

ER-Fuzz : Conditional Code Removed Fuzzing

  • Song, Xiaobin;Wu, Zehui;Cao, Yan;Wei, Qiang
    • KSII Transactions on Internet and Information Systems (TIIS)
    • /
    • 제13권7호
    • /
    • pp.3511-3532
    • /
    • 2019
  • Coverage-guided fuzzing is an efficient solution that has been widely used in software testing. By guiding fuzzers through the coverage information, seeds that generate new paths will be retained to continually increase the coverage. However, we observed that most samples follow the same few high-frequency paths. The seeds that exercise a high-frequency path are saved for the subsequent mutation process until the user terminates the test process, which directly affects the efficiency with which the low-frequency paths are tested. In this paper, we propose a fuzzing solution, ER-Fuzz, that truncates the recording of a high-frequency path to influence coverage. It utilizes a deep learning-based classifier to locate the high and low-frequency path transfer points; then, it instruments at the transfer position to promote the probability low-frequency transfer paths while eliminating subsequent variations of the high-frequency path seeds. We implemented a prototype of ER-Fuzz based on the popular fuzzer AFL and evaluated it on several applications. The experimental results show that ER-Fuzz improves the coverage of the original AFL method to different degrees. In terms of the number of crash discoveries, in the best case, ER-Fuzz found 115% more unique crashes than did AFL. In total, seven new bugs were found and new CVEs were assigned.

최적화 컴파일된 자바스크립트 함수에 대한 최적화 해제 회피를 이용하는 런타임 가드 커버리지 유도 퍼저 (Runtime-Guard Coverage Guided Fuzzer Avoiding Deoptimization for Optimized Javascript Functions)

  • 김홍교;문종섭
    • 정보보호학회논문지
    • /
    • 제30권3호
    • /
    • pp.443-454
    • /
    • 2020
  • 자바스크립트 엔진은 주로 웹 브라우저에 적재되어 웹 페이지를 표시하는 여러 기능 중 자바스크립트 코드를 입력으로 받아 처리하는 모듈이다. 자바스크립트 엔진 내 취약점은 종단 사용자의 시스템 보안을 위협할 수 있어 많은 퍼징 테스트 연구가 수행되었다. 그중 일부 연구는 자바스크립트 엔진 내 테스트 커버리지를 유도하는 방식으로 퍼징 효율을 높였으나, 최적화되어 동적으로 생성된 기계어 코드에 대한 커버리지 유도 퍼징은 시도되지 않았다. 최적화된 자바스크립트 코드는 예외적인 흐름 발생 시 코드를 해제하는 런타임 가드의 기능으로 인해 퍼징을 통한 충분한 반복 테스트가 어렵다. 본 논문은 이러한 문제점을 해결하기 위해 최적화 해제를 회피하여 최적화된 기계어 코드에 대해 퍼징 테스트를 수행하는 방법을 제안한다. 또한, 동적 바이너리 계측 방식으로 수행된 런타임 가드의 커버리지를 계측하고 커버리지 증가를 유도하는 방식을 제안한다. 실험을 통해, 본 연구가 제안하는 방식이 런타임 가드 커버리지, 시간당 테스트 횟수의 두가지 척도에서 기존의 방식보다 뛰어남을 보인다.

테스트 프레임워크를 활용한 라이브러리 퍼징 환경 구축 자동화 (Automated Building Fuzzing Environment Using Test Framework)

  • 류민수;김동영;전상훈;김휘강
    • 정보보호학회논문지
    • /
    • 제31권4호
    • /
    • pp.587-604
    • /
    • 2021
  • 라이브러리는 독립적으로 실행되지 않고 많은 응용 프로그램에서 사용되므로, 라이브러리의 취약점을 사전에 탐지하는 것은 중요하다. 라이브러리 취약점을 탐지하기 위해 동적 분석 방법인 퍼징이 사용되고 있다. 퍼징 기술은 코드 커버리지 및 크래시 발생 횟수 측면에서 개선된 결과를 보여주지만, 그 효과를 라이브러리 퍼징에 적용하기는 쉽지 않다. 특히, 라이브러리의 다양한 상태를 재현하려면 특정 함수 시퀀스를 호출하고 퍼저의 입력을 전달하여 라이브러리 코드를 실행하는 퍼징 대상 파일과 시드 코퍼스가 필요하다. 그러나 퍼징 환경(시드 코퍼스, 퍼징 대상 파일)을 준비하는 것은 라이브러리에 대한 이해와 퍼징에 대한 이해가 동시에 필요한 어려운 일이다. 이에, 본 논문에서는 테스트 프레임워크를 활용하여 라이브러리 퍼징의 용이성을 확보하고, 코드 커버리지와 크래시 탐지 성능을 향상하기 위한 개선 방법을 제안한다. 본 논문에서 제안한 시스템은 9개의 오픈 소스 라이브러리에 적용하여 기존 연구들과 비교를 통한 개선 효과를 검증하였다. 실험 결과 코드 커버리지 31.2%, 크래시 탐지 기준 58.7%의 개선효과를 확인하였고, 3개의 알려지지 않는 취약점을 탐지하였다.

ROAD(RPC Object vulnerability Automatic Detector) 도구의 설계 및 구현 (A Design and Implementation of ROAD(RPC Object vulnerability Automatic Detector))

  • 양진석;김태균;김형천;홍순좌
    • 정보보호학회논문지
    • /
    • 제17권2호
    • /
    • pp.51-59
    • /
    • 2007
  • 소프트웨어 테스팅은 소프트웨어의 버그 및 잘못 구현된 부분 등을 찾아내는 과정을 통해 품질을 평가하는 방법이다. 퍼징(fuzzing)은 소프트웨어 테스팅 기술의 여러 가지 방법 중 하나로써 난수를 발생시켜 테스팅하고자 하는 소프트웨어에 주입하는 방법으로써 보안에 중점을 두어 테스팅하는 방법이다. 퍼징은 단위 시간 당 테스팅 효율성, 비용 절감 등 여러 가지 장점을 이유로 다수 사용되고 있으나 퍼징 수행 시 전문가의 개입이 많은 단점이 존재한다. 예를 들면 해당 소프트웨어가 사용하는 프로토콜 혹은 퍼징 대상이 파일인 경우 파일 포맷에 대한 분석을 수행한 후에야 가능하기 때문에 테스팅 기간이 길어질 수 있으며 퍼징 도구를 이용해도 퍼징 대상의 프로토콜 및 포맷에 대한 분석이 난해한 경우 테스팅 대상에 대한 퍼징을 수행하지 못할 수도 있다. 본 논문에서 설계한 ROAD는 RPC 기반 프로토콜 및 소프트웨어를 자동으로 퍼징할 수 있는 도구이다. RPC는 다수의 취약점이 발견된 구성요소로써 본 논문에서는 이를 자동으로 퍼징할 수 있는 도구의 구현을 목표로 하였다. 기존의 도구 중 RPC 기반 소프트웨어를 퍼징하는 도구가 존재하지만 자동화되어 있지 않을 뿐만 아니라 소프트웨어에 따라 도구를 수정해야만 사용이 가능하다. 본 논문은 이러한 단점을 극복하고자 자동화 도구를 설계 및 구현하여 실제 RPC 기반 프로토콜 및 소프트웨어에 적용하였다. 또한 실험을 통해 도구의 효용성을 검증하였다.