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

검색결과 63건 처리시간 0.032초

Non-Random CAN Fuzzing을 통한 효율적인 ECU 분석 기술 (An Efficient ECU Analysis Technology through Non-Random CAN Fuzzing)

  • 김형훈;정연선;최원석;조효진
    • 정보보호학회논문지
    • /
    • 제30권6호
    • /
    • pp.1115-1130
    • /
    • 2020
  • 최근 출시된 차량에는 다수의 ECU(Electronic Control Unit)가 탑재되어 있고, 각 ECU들은 CAN(Controller Area Network)을 통해 통신함으로써 차량을 효율적으로 제어할 수 있다. 하지만 CAN 통신에는 암호화 및 인증 기술이 적용되어 있지 않고, 접근 제어가 없는 Broadcast 방식으로 통신이 이루어지므로 보안에 취약하다는 문제점이 존재한다. 이러한 취약점을 이용하여 차량 제어 등의 수많은 차량 해킹 공격이 이루어지고 있으며 그에 대응하기 위한 연구 또한 진행되고 있다. 차량 해킹 대응 기술들 중에는 완성차에 탑재된 ECU의 취약점을 분석할 수 있는 CAN Fuzzing 기술이 존재한다. 하지만 기존의 CAN Fuzzing 기술들은 ECU들이 전송하는 CAN 메시지 구조를 고려하지 않고 Random한 방식으로 Fuzzing을 진행하기 때문에 많은 시간이 소요된다. 또한, 기존 CAN Fuzzing 기술은 Fuzzing 결과를 모니터링하는 방법에도 한계점이 존재한다. 이러한 CAN Fuzzing 기술의 한계를 해결하고자 본 논문에서는 CAN 메시지의 구조를 분석하고, 이를 바탕으로 ECU의 이상 작동 현상을 유발시킬 수 있는 Fuzzing 입력값을 생성하는 Non-Random CAN Fuzzing 기법을 제안한다. Non-Random CAN Fuzzing은 기존 Random CAN Fuzzing에 비해 소요되는 시간을 절약할 수 있고, 이를 통해 SW 구현 오류 혹은 CAN DBC(Database CAN) 설계 오류 등으로 인해 존재할 수 있는 ECU의 이상 작동 현상과 연관된 CAN 메시지들을 빠르게 발견할 수 있다. 제안하는 Non-Random CAN Fuzzing의 성능을 평가하기 위해 제안 기법을 실제 차량에 적용하였으며 ECU에 이상 작동 현상을 일으킬 수 있는 CAN 메시지를 확인하였다.

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

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

라이브러리 퍼징의 커버리지 향상 방법 연구 (A Study of Coverage Improvement for Library Fuzzing)

  • 김서영;조민기;김종신;권태경
    • 정보보호학회논문지
    • /
    • 제30권6호
    • /
    • pp.1079-1085
    • /
    • 2020
  • 라이브러리 구현의 결함을 발견하기 위해 동적 분석 방법인 퍼징(fuzzing)이 사용되고 있다. 라이브러리 대상 퍼징은 구현된 함수만 테스트를 할 수 있으므로 더 높은 코드 커버리지를 달성하기 위해서는 구현되지 않은 함수들을 추가로 구현해주어야 한다. 하지만 라이브러리 함수들의 호출 관계를 고려하지 않고 함수를 추가하면 이미 테스트를 수행한 함수가 추가되는 문제가 발생할 수 있다. 본 논문에서는 라이브러리 퍼징의 코드 커버리지 성능을 향상시키기 위한 개선 방법을 제안한다. 먼저, 라이브러리 퍼징의 대상 함수를 효율적으로 추가하기 위해 라이브러리의 함수 호출 그래프 분석하고 구현되지 않은 라이브러리 함수를 추가 구현한다. 그리고 라이브러리의 해결하기 어려운 제약조건을 가진 분기를 탐색하는 방법으로 하이브리드 퍼징을 적용한다. OpenSSL, mbedTLS, Crypto++을 대상으로 실험한 결과, 제안한 방법이 코드 커버리지를 증가에 효과적인 것을 확인하였다.

웹 브라우저 취약성 검증을 위한 이벤트 및 커맨드 기반 퍼징 방법 (Event and Command based Fuzzing Method for Verification of Web Browser Vulnerabilities)

  • 박성빈;김민수;노봉남
    • 정보보호학회논문지
    • /
    • 제24권3호
    • /
    • pp.535-545
    • /
    • 2014
  • 최근 소프트웨어 산업의 발전과 더불어 소프트웨어 취약점을 이용한 공격이 사회적으로 많은 이슈가 되고 있다. 특히, 웹 브라우저 취약점을 이용한 공격은 윈도우 보호메커니즘을 우회할 수 있기 때문에 주요 공격 대상이 될 수 있다. 이러한 보안위협으로부터 웹 브라우저를 보호하기 위한 퍼징 연구가 지속적으로 수행되어 왔다. 하지만 기존 웹 브라우저 퍼징 도구에서는 대부분 DOM 트리를 무작위로 변형시키는 단순한 형태의 퍼징 방법을 사용하고 있다. 본 논문에서는 알려진 취약점에 대한 패턴 분석과 기존 웹 브라우저 퍼징 도구의 분석을 통해 최신 웹 브라우저 취약점을 보다 효과적으로 탐지하기 위한 이벤트 및 커맨드 기반 퍼징 방법을 제안한다. 기존 퍼징 도구 3종과 제안하는 방법을 비교한 결과 이벤트 및 커맨드 기반의 퍼징 도구가 더욱 효과적이라는 것을 볼 수 있었다.

Variational Autoencoder를 활용한 필드 기반 그레이 박스 퍼징 방법 (A Method for Field Based Grey Box Fuzzing with Variational Autoencoder)

  • 이수림;문종섭
    • 정보보호학회논문지
    • /
    • 제28권6호
    • /
    • pp.1463-1474
    • /
    • 2018
  • 퍼징이란 유효하지 않은 값이나 임의의 값을 소프트웨어 프로그램에 입력하여, 보안상의 결함을 찾아내는 소프트웨어 테스팅 기법 중 하나로 이러한 퍼징의 효율성을 높이기 위한 여러 방법들이 제시되어 왔다. 본 논문에서는 필드를 기반으로 퍼징을 수행하면서 커버리지, 소프트웨어 크래쉬와 연관성이 높은 필드가 존재한다는 것에 착안하여, 해당 필드 부분을 집중적으로 퍼징하는 새로운 방식을 제안한다. 이 때, Variational Autoencoder(VAE)라는 딥 러닝 모델을 사용하여 커버리지가 높게 측정된 입력 값들의 특징을 학습하고, 이를 통해 단순 변이보다 학습된 모델을 통해 재생성한 파일들의 커버리지가 균일하게 높다는 것을 보인다. 또한 크래쉬가 발생한 파일들의 특징을 학습하고 재생성 시 드롭아웃을 적용하여 변이를 줌으로써 새로운 크래쉬를 발견할 수 있음을 보인다. 실험 결과 커버리지가 퍼징 도구인 AFL의 큐의 파일들보다 약 10% 정도 높은 것을 확인할 수 있었고 Hwpviewer 바이너리에서 초기 퍼징 단계 시 발생한 두 가지의 크래쉬를 사용하여 새로운 크래쉬 두 가지를 더 발견할 수 있었다.

자연어 처리 모델을 활용한 퍼징 시드 생성 기법 (A Fuzzing Seed Generation Technique Using Natural Language Processing Model)

  • 김동영;전상훈;류민수;김휘강
    • 정보보호학회논문지
    • /
    • 제32권2호
    • /
    • pp.417-437
    • /
    • 2022
  • Fuzzing에서 seed corpus의 품질은 취약점을 보다 빠르게 찾기 위해서 중요한 요소 중 하나라고 할 수 있다. 이에 dynamic taint analysis와 symbolic execution 기법 등을 활용하여 효율적인 seed corpus를 생성하는 연구들이 진행되어왔으나, 높은 전문 지식이 요구되고, 낮은 coverage로 인해 광범위한 활용에 제약이 있었다. 이에 본 논문에서는 자연어 처리 모델인 Sequence-to-Sequence 모델을 기반으로 seed corpus를 생성하는 DDRFuzz 시스템을 제안한다. 본 논문에서 제안하는 시스템은 멀티미디어 파일을 입력값으로 하는 5개의 오픈소스 프로젝트를 대상으로 관련 연구들과 비교하여 효과를 검증하였다. 실험 결과, DDRFuzz가 coverage와 crash count 측면에서 가장 뛰어난 성능을 나타냄을 확인할 수 있었고, 또한 신규 취약점을 포함하여 총 3개의 취약점을 탐지하였다.

자바스크립트 엔진에 대한 시맨틱 보존적 변이기반 퍼징 (Semantics-Preserving Mutation-Based Fuzzing on JavaScript Interpreters)

  • 오동현;최재승;차상길
    • 정보보호학회논문지
    • /
    • 제30권4호
    • /
    • pp.573-582
    • /
    • 2020
  • 퍼징은 입력값을 무작위로 생성해 소프트웨어를 테스팅하는 방법으로, 처음 고안된 이래로 다양한 방식의 퍼징이 연구되고 있다. 그중 변이기법을 적용한 퍼징은 확률에 따른 비트 반전이나 특별 값 치환과 같이 비교적 간단한 접근법을 사용함에도, 많은 버그를 발견해온 만큼 효율적인 방법이라고 할 수 있다. 하지만 인터프리터는 문법, 시맨틱이 올바른 입력값을 요구하기 때문에 일반적인 변이기법을 적용하기에는 어려움이 있다. 이에 본 연구에서는 동적 데이터 흐름 분석을 통해 변이기법을 인터프리터 퍼징에 적용할 수 있는 방법에 대해 제시하고자 한다. 본 연구에서 제시하는 JMFuzzer는 문법, 시맨틱의 올바름을 고려해 자바스크립트 인터프리터에서 오류 없이 정상적으로 동작하는 다양한 유형의 테스트케이스를 생성할 수 있다. 최종적으로 본 연구에서는 최신 버전의 자바스크립트 인터프리터에서 알려지지 않은 취약점들을 찾았으며, 이를 각 회사에 제보했다.

Peach 퍼징을 위한 파일 분석 데이터 자동 생성 모델 (File Analysis Data Auto-Creation Model For Peach Fuzzing)

  • 김민호;박성빈;윤지노;김민수;노봉남
    • 정보보호학회논문지
    • /
    • 제24권2호
    • /
    • pp.327-333
    • /
    • 2014
  • 소프트웨어가 산업 및 사회전반으로 저변을 확대함에 따라 소프트웨어의 취약점으로 인한 위험이 증가하고 있으며, 소프트웨어의 취약점을 악용하는 사례도 빈번하게 나타나고 있다. 스마트 퍼징은 이러한 소프트웨어 취약점을 발견하기 위한 자동화된 방법이다. 그러나 스마트 퍼징을 위해서는 우선 퍼징을 수행하고자 하는 대상 소프트웨어에 대한 데이터 모델을 생성해야하며, 데이터 파일 및 소프트웨어 자체에 대한 분석이 필요하기 때문에 많은 자원이 소모된다. 따라서 효율적인 스마트 퍼징을 위해서 데이터 모델을 자동으로 생성하기 위한 방법이 필요하다. 본 논문에서는 데이터 입력 파일에 대한 분석을 통해서 스마트 퍼징을 위한 데이터 모델을 자동으로 생성하기 위한 프레임워크를 제안하고 이를 구현함으로서 소프트웨어 취약점 발견에 도움을 줄 것으로 기대한다.

유닛테스트를 활용한 c/c++ 라이브러리 그레이박스 퍼징 적용 자동화 (Automated Applying Greybox Fuzzing to C/C++ Library Using Unit Test)

  • 장준언;김휘강
    • 정보보호학회논문지
    • /
    • 제29권4호
    • /
    • pp.807-819
    • /
    • 2019
  • 그레이박스 퍼징은 소프트웨어에 존재하는 알려지지 않은 보안 취약점을 찾는 효과적인 방법으로 최근까지 활발하게 연구되고 있다. 단, 대부분의 그레이박스 퍼징 도구들은 실행파일을 필요로 하기 때문에 직접 실행할 수 없는 라이브러리는 별도의 실행파일을 준비해야 한다. 이러한 실행파일을 만드는 것은 라이브러리에 대한 이해 및 퍼징에 대한 이해가 동시에 필요한 어려운 일이다. 본 연구에서는 라이브러리를 위한 실행파일을 자동으로 생성하는 방법을 제안하고 이를 LLVM 기반의 도구로 구현한다. 제안하는 방법은 대상 라이브러리 프로젝트에 존재하는 유닛테스트에 대한 정적/동적 분석을 통해 라이브러리를 테스트할 수 있는 실행파일 및 시드파일을 자동으로 생성한다. 생성한 실행파일은 기존 그레이박스 퍼징 도구들이 주로 사용하는 인터페이스를 보유하여 AFL과 같은 다양한 그레이박스 퍼징 도구와 호환된다. 우리는 이 도구를 사용해 오픈소스 프로젝트로부터 생성한 실행파일과 시드파일을 바탕으로 코드 커버리지 및 알려지지 않은 취약점을 찾음으로써 제안하는 방법의 성능을 보인다.

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.