• 제목/요약/키워드: 동적 기호 실행

검색결과 7건 처리시간 0.019초

동적 기호 실행을 이용한 윈도우 시스템 콜 Use-After-Free 취약점 자동 탐지 방법 (Automated Method for Detecting Use-After-Free Vulnerability of Windows System Calls Using Dynamic Symbolic Execution)

  • 강상용;이권왕;노봉남
    • 정보보호학회논문지
    • /
    • 제27권4호
    • /
    • pp.803-810
    • /
    • 2017
  • 최근 소프트웨어 산업의 발달에 따른 사회적 보안 문제가 지속적으로 발생하고 있으며, 소프트웨어 안정성 검증을 위해 다양한 자동화 기법들이 사용되고 있다. 본 논문에서는 소프트웨어 테스팅 기법 중 하나인 동적 기호 실행을 이용해 윈도우 시스템 콜 함수를 대상으로 Use-After-Free 취약점을 자동으로 탐지하는 방법을 제안한다. 먼저, 목표 지점을 선정하기 위한 정적 분석 기반 패턴 탐색을 수행한다. 탐지된 패턴 지점을 바탕으로 관심 밖의 영역으로의 분기를 차단하는 유도된 경로 탐색 기법을 적용한다. 이를 통해 기존 동적 기호 실행 기술의 한계점을 극복하고, 실제 목표 지점에서의 취약점 발생 여부를 검증한다. 제안한 방법을 실험한 결과 기존에 수동으로 분석해야 했던 Use-After-Free 취약점을 제안한 자동화 기법으로 탐지할 수 있음을 확인하였다.

동적 기호 실행을 이용한 힙 메모리 OOB 취약점 자동 탐지 방법 (Automated Method for Detecting OOB Vulnerability of Heap Memory Using Dynamic Symbolic Execution)

  • 강상용;박성현;노봉남
    • 정보보호학회논문지
    • /
    • 제28권4호
    • /
    • pp.919-928
    • /
    • 2018
  • OOB(Out-Of-Bounds)는 힙 메모리에서 발생하는 취약점 중 가장 강력한 취약점 중 하나이다. OOB 취약점을 이용하면 Array의 길이를 속여 해당 길이만큼의 메모리를 읽기 혹은 쓰기가 가능하기 때문에 공격자는 기밀 정보에 대한 무단 액세스를 악용할 수 있다. 본 논문에서는 동적 기호 실행과 쉐도우 메모리 테이블을 활용하여 힙 메모리에서 발생하는 OOB 취약점을 자동으로 탐지하는 방법을 제안한다. 먼저, 힙 메모리 할당 및 해제 함수 후킹을 통해 쉐도우 메모리 테이블을 구축한다. 이후 메모리 액세스가 발생할 때, 쉐도우 메모리를 참조하여 OOB가 발생할 수 있는지를 판단하고, 발생 가능성이 존재할 경우 크래시를 유발하는 테스트케이스를 자동으로 생성한다. 제안하는 방법을 활용할 경우, 취약한 블록 탐색에 성공한다면 반드시 OOB를 유발하는 테스트케이스를 생성할 수 있다. 뿐만 아니라 전통적인 동적 기호 실행과는 다르게 명확한 목표 지점을 설정하지 않더라도 취약점 탐색이 가능하다.

동적 기호 실행을 이용한 그래프 기반 바이너리 코드 실행 경로 탐색 플랫폼 (Graph based Binary Code Execution Path Exploration Platform for Dynamic Symbolic Execution)

  • 강병호;임을규
    • 정보보호학회논문지
    • /
    • 제24권3호
    • /
    • pp.437-444
    • /
    • 2014
  • 본 논문에서는 그래프 기반의 바이너리 코드 동적 실행 경로 탐색 플랫폼을 제안한다. 바이너리 코드의 조건 분기 명령어를 노드(Node), 그 외의 명령어를 에지(Edge)로 구성된 그래프를 정의하며, 이 그래프를 기반으로 하여 실행 경로 탐색을 수행하는 방안을 제안한다. 실험을 통해 제안하는 그래프 기반 바이너리 코드 실행 경로 탐색 플랫폼의 프로토타입이 실행 경로 탐색을 올바르게 수행함을 확인하였으며, 본 논문에서 제안하는 방안을 통해 소프트웨어 테스팅을 보다 효과적으로 수행하여 소프트웨어 보증, 시큐어 프로그래밍 및 악성 프로그램 분석 등을 보다 효과적으로 수행할 수 있을 것으로 기대한다.

안드로이드 커널 모듈 취약점 탐지를 위한 자동화된 유닛 테스트 생성 기법 (Automated Unit-test Generation for Detecting Vulnerabilities of Android Kernel Modules)

  • 김윤호;김문주
    • 정보과학회 논문지
    • /
    • 제44권2호
    • /
    • pp.171-178
    • /
    • 2017
  • 본 논문에서는 안드로이드 커널 모듈의 취약점을 탐지하기 위한 자동 유닛 테스트 생성 기법을 제안한다. 안드로이드 커널 모듈의 각 함수를 대상으로 테스트 드라이버/스텁 함수를 자동 생성하고 동적 기호 실행 기법을 사용하여 테스트 입력 값을 자동으로 생성한다. 또한 안드로이드 커널 모듈의 함수 포인터와 함수 선행 조건을 고려하지 않은 테스트 생성으로 인한 거짓 경보를 줄이기 위해 정적 분석을 통한 함수 포인터 매칭 기법과 def-use 분석을 사용한 함수 선행 조건 생성 기법을 개발하였다. 자동 유닛 테스트 생성 기법을 안드로이드 커널 3.4 버전의 세 모듈에 적용한 결과 기존에 존재하던 취약점을 모두 탐지할 수 있었으며 제안한 거짓 경보 감소 기법으로 평균 44.9%의 거짓 경보를 제거할 수 있었다.

소프트웨어 안전성 검증을 위한 입력 파일 기반 동적 기호 실행 방법 (Input File Based Dynamic Symbolic Execution Method for Software Safety Verification)

  • 박성현;강상용;김휘성;노봉남
    • 정보보호학회논문지
    • /
    • 제27권4호
    • /
    • pp.811-820
    • /
    • 2017
  • 최근 소프트웨어 자동화 기술 연구는 단일 경로의 테스트 케이스 생성뿐만 아니라, 다양한 테스트 케이스를 통해 취약점으로 도달할 수 있는 최적화된 경로를 파악하는 것에 중점을 두고 있다. 이러한 자동화 기술 중 Dynamic Symbolic Execution(이하, DSE) 기술이 각광 받고 있지만, 현재 대부분의 DSE 기술 적용 연구는 리눅스 바이너리 혹은 특정 모듈 자체만을 대상으로 적용하는 데 그치고 있는 실정이다. 하지만 대부분의 소프트웨어의 경우 입력 파일을 기반으로 작업이 수행되고, 또 이러한 과정에서 취약점이 다수 발생하고 있다. 따라서 본 논문은 소프트웨어 안전성 검증을 위한 입력 파일 기반 동적 기호 실행 방법을 제안한다. 실제 바이너리 소프트웨어 3종에 적용한 결과 제안하는 방법을 통해 효과적으로 해당 지점에 도달하는 테스트 케이스를 생성할 수 있었다. 이는 DSE 기술이 실제 소프트웨어 분석의 자동화에 활용될 수 있음을 보여준다.

Ad-hoc라우팅 계층에서의 서비스 디스커버리 프로토콜 구현 (Implementation of service discovery protocol on routing layer in Ad-hoc network environment)

  • 김보성;고영배;노용성
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2004년도 가을 학술발표논문집 Vol.31 No.2 (3)
    • /
    • pp.292-294
    • /
    • 2004
  • 향후 세상의 모습을 그려볼 때 흔히들 유비쿼터스 시대를 언급한다. 이를 위해서는 다양한 서비스 공급자들과 사용자들이 서로 네트워크로 묶여 있어야 하며, 이때의 네트워크는 선이 없는 무선 환경이고, 국소 지역을 커버하는 Ad-hoc망이 기본 네트워크 망이 될 것이다. 이러한 네트워크로 이루어진 다양한 장소, 임의의 시간에 존재하는 다수의 서비스들 중에서 원하는 서비스를 찾는 일을 service discovery라고 하며, 이를 위해서 기존의 wired 망에서는 네트워크 계층 위에서 이를 수행하는 작업이 이루어져 왔다. 본 논문에서는 service discovery 실행을 별도의 에이전트나 응용 레벨에 두지 않고, 이를 Ad-hoc 라우팅 계층에서 수행 함으로써 오버헤드 트래픽이 줄어들고, 응답 시간이 짧아지는 성능 향상이 있음을 제시하고 있다. E한 동적/부분 caching 기법에 대해서도 제시하고 있다. 아울러 다양한 사용자의 기호(User Preference)를 표현하고, 이를 바탕으로 서비스를 검색하기 위한 새로운 서비스 표현/검색 모델을 제시하였다. 실제로 이러한 service discovery 기능을 Ad-hoc 라우팅 계층에서 처리하도록 하는 Ad-hoc 라우팅 데몬을 구현하고, 테스트 베드를 구축하여 동작 시킴으로써 실제 상황에서도 얼마나 효율적인가를 구체적으로 제시하고 있다.

  • PDF

효과적인 내장형 소프트웨어의 정수 확장 (Integer Promotion) 버그 검출 기법 (Effective Integer Promotion Bug Detection Technique for Embedded Software)

  • 김윤호;김태진;김문주;이호정;장훈;박민규
    • 정보과학회 논문지
    • /
    • 제43권6호
    • /
    • pp.692-699
    • /
    • 2016
  • 세탁기, 냉장고 등의 가전제품에 탑재되는 8-bit MCU용 C 컴파일러는 소프트웨어 실행 속도를 높이기 위해 표준 C 언어 규칙을 따르지 않고 컴파일을 수행할 수 있다. 개발자가 일반 C 컴파일러와 8-bit MCU용 C 컴파일러의 차이를 정확하게 이해하지 못할 경우 표준 C 언어 환경에서는 발생하지 않으나 8-bit MCU를 사용하는 내장형 시스템에서는 발생하는 버그를 야기할 수 있으며 이런 버그는 표준 C언어 환경을 가정하는 버그 검출 도구로는 찾기 어렵다. 본 논문에서는 표준 C 정수 확장 규칙을 따르지 않는 8-bit MCU용 컴파일러를 사용할 때 발생하는 정수 확장 버그를 소개하고 정수 확장 버그를 탐지하기 위한 다섯 종류의 버그 패턴을 제안한다. 정수 확장 버그 패턴 검출 도구를 개발하여 LG전자 세탁기 소프트웨어를 분석한 결과 컴파일러 옵션을 잘못 선택한 경우 발생하는 27개의 정수 확장 버그를 발견하였다.