KR102682746B1 - 비휘발성 메모리 공격 취약점 탐지 장치 및 방법 - Google Patents

비휘발성 메모리 공격 취약점 탐지 장치 및 방법 Download PDF

Info

Publication number
KR102682746B1
KR102682746B1 KR1020210064288A KR20210064288A KR102682746B1 KR 102682746 B1 KR102682746 B1 KR 102682746B1 KR 1020210064288 A KR1020210064288 A KR 1020210064288A KR 20210064288 A KR20210064288 A KR 20210064288A KR 102682746 B1 KR102682746 B1 KR 102682746B1
Authority
KR
South Korea
Prior art keywords
volatile memory
data
memory write
fuzzing
write data
Prior art date
Application number
KR1020210064288A
Other languages
English (en)
Other versions
KR20220156355A (ko
Inventor
안개일
최양서
Original Assignee
한국전자통신연구원
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Priority to KR1020210064288A priority Critical patent/KR102682746B1/ko
Priority to US17/525,604 priority patent/US20220374525A1/en
Publication of KR20220156355A publication Critical patent/KR20220156355A/ko
Application granted granted Critical
Publication of KR102682746B1 publication Critical patent/KR102682746B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures

Abstract

비휘발성 메모리 공격 취약점 탐지 장치 및 방법이 개시된다. 본 발명의 실시예에 따른 비휘발성 메모리 공격 취약점 탐지 장치는, 적어도 하나의 프로그램이 기록된 메모리 및 프로그램을 실행하는 프로세서를 포함하며, 프로그램은, 퍼징 대상 소프트웨어에 퍼징 메시지를 전송하는 퍼저부, 퍼징 대상 소프트웨어로부터 비휘발성 메모리 데이터 쓰기 요청됨에 따라, 비휘발성 메모리 쓰기 데이터를 공격 취약점 탐지부에 전달하는 비휘발성 메모리 쓰기 제어부 및 비휘발성 메모리 쓰기 제어부로부터 비휘발성 메모리 쓰기 데이터가 수신됨에 따라, 정상 상태에서 미리 학습된 모델을 기반으로 비휘발성 메모리 쓰기 데이터의 정상 여부를 판단한 결과에 따라 휘발성 메모리 공격 취약점을 탐색하는 공격 취약점 탐지부를 포함할 수 있다.

Description

비휘발성 메모리 공격 취약점 탐지 장치 및 방법{Apparatus and Method for Detecting Non-volatile Memory Attack Vulnerability}
기재된 실시예는 컴퓨터 소프트웨어의 보안 취약점 탐지 기술에 관한 것으로, 세부적으로는 산업제어시스템 소프트웨어의 보안취약점을 테스트하는 퍼징(Fuzzing) 테스트 환경에서 비휘발성 메모리 공격 취약점을 효과적으로 탐지하는 방법 및 장치에 대한 것이다.
비휘발성 메모리 공격 취약점은 서비스 거부 공격(Denial of Service Attack)에 해당되며, 주로 산업제어시스템 기기에서 발견된다. 산업제어시스템 기기에서는 독자적인 산업제어기능을 수행하는 소프트웨어가 가장 핵심이기 때문에 그 소프트웨어의 업데이트 결과가 통상적으로 시스템 부팅에도 반영된다.
따라서, 소프트웨어 업데이트를 수행하는 실행코드에 비휘발성 메모리 공격 취약점이 존재한다면, 사이버 공격자는 이 취약점을 이용하여 시스템 부팅 프로그램을 저장하고 있는 비휘발성 메모리를 오염시켜 시스템을 영구적으로 손상시킬 수 있다.
기재된 실시예는 테스트 대상 시스템의 비휘발성 메모리를 오염시켜 시스템 부팅에 장애를 발생시키는 비휘발성 메모리 공격 취약점을 퍼징 테스트 중단없이 정확하게 탐지하는 데 그 목적이 있다.
실시예에 따른 비휘발성 메모리 공격 취약점 탐지 장치는, 적어도 하나의 프로그램이 기록된 메모리 및 프로그램을 실행하는 프로세서를 포함하며, 프로그램은, 퍼징 대상 소프트웨어에 퍼징 메시지를 전송하는 퍼저부, 퍼징 대상 소프트웨어로부터 비휘발성 메모리 데이터 쓰기 요청됨에 따라, 비휘발성 메모리 쓰기 데이터를 공격 취약점 탐지부에 전달하는 비휘발성 메모리 쓰기 제어부 및 비휘발성 메모리 쓰기 제어부로부터 비휘발성 메모리 쓰기 데이터가 수신됨에 따라, 정상 상태에서 미리 학습된 모델을 기반으로 비휘발성 메모리 쓰기 데이터의 정상 여부를 판단한 결과에 따라 휘발성 메모리 공격 취약점을 탐색하는 공격 취약점 탐지부를 포함할 수 있다.
이때, 공격 취약점 탐지부는, 비휘발성 메모리 쓰기 데이터가 수신됨에 따라, 퍼저부로터의 퍼징 수행 여부 알림에 따라 퍼징 수행 중인지의 여부를 판단하는 단계, 퍼징 테스트가 수행 중일 경우, 정상 상태에서 미리 학습된 모델을 기반으로 비휘발성 메모리 쓰기 데이터의 정상 유무를 판단하는 단계 및 비휘발성 메모리 쓰기 데이터가 비정상으로 판단될 경우, 비휘발성 메모리 공격 취약점으로 판단하는 단계를 수행할 수 있다.
이때, 공격 취약점 탐지부는, 퍼징 테스트가 수행 중일 경우, 비휘발성 메모리 쓰기 데이터를 테스트 데이터로 레이블하는 단계를 더 수행하고, 정상 유무를 판단하는 단계는, 테스트 데이터로 레이블된 비휘발성 메모리 쓰기 데이터를 입력받은 학습 모델의 출력에 따라 비휘발성 메모리 쓰기 데이터의 정상 유무를 판단할 수 있다.
이때, 공격 취약점 탐지부는, 퍼징 테스트가 수행 중이 아닐 경우, 비휘발성 메모리 쓰기 데이터를 정상 데이터로 레이블하는 단계를 더 수행하되, 정상 데이터는 모델의 학습 데이터로 사용될 수 있다.
이때, 모델은, 정상 데이터가 입력됨에 따라 정상이라는 결과를 출력하도록 학습될 수 있다.
이때, 비휘발성 메모리 쓰기 제어부는, 퍼징 대상 소프트웨어로부터 비휘발성 메모리 데이터 쓰기 요청됨에 따라 비휘발성 메모리 쓰기 데이터를 공격 취약점 탐지부에 전달하는 단계를 수행하고, 퍼징 테스트 수행 중인지의 여부를 판단하는 단계 및 퍼징 테스트 수행 중인지의 여부에 따라 비휘발성 메모리 쓰기 데이터의 비휘발성 메모리 쓰기를 제어하는 단계를 더 수행할 수 있다.
이때, 비휘발성 메모리 쓰기 제어부는, 후킹 프로그램을 기반으로 비활성 메모리 쓰기 데이터를 후킹할 수 있다.
이때, 비휘발성 메모리 쓰기 제어부는, 퍼징 테스트 수행 중일 경우, 비휘발성 메모리 쓰기 요청된 데이터 쓰기를 생략할 수 있다.
실시예에 따른 비휘발성 메모리 공격 취약점 탐지 방법은, 비휘발성 메모리 쓰기 데이터가 수신됨에 따라, 퍼징 테스트가 수행 중인지의 여부를 판단하는 단계, 퍼징 테스트가 수행 중일 경우, 정상 상태에서 미리 학습된 모델을 기반으로 비휘발성 메모리 쓰기 데이터의 정상 유무를 판단하는 단계 및 비휘발성 메모리 쓰기 데이터가 비정상으로 판단될 경우, 비휘발성 메모리 공격 취약점으로 판단하는 단계를 포함할 수 있다.
실시예에 따른 비휘발성 메모리 공격 취약점 탐지 방법은, 퍼징 테스트가 수행 중일 경우, 비휘발성 메모리 쓰기 데이터를 테스트 데이터로 레이블하는 단계를 더 포함하고, 정상 유무를 판단하는 단계는, 테스트 데이터로 레이블된 비휘발성 메모리 쓰기 데이터를 입력받은 학습 모델의 출력에 따라 비휘발성 메모리 쓰기 데이터의 정상 유무를 판단할 수 있다.
이때, 퍼징 테스트가 수행 중이 아닐 경우, 비휘발성 메모리 쓰기 데이터를 정상 데이터로 레이블하는 단계를 더 포함하되, 정상 데이터는 모델의 학습 데이터로 사용될 수 있다.
이때, 모델은, 정상 데이터가 입력됨에 따라 정상이라는 결과를 출력하도록 학습될 수 있다.
실시예에 따른 비휘발성 메모리 쓰기 제어 방법은, 퍼징 대상 소프트웨어로부터 비휘발성 메모리 데이터 쓰기 요청됨에 따라 비휘발성 메모리 쓰기 데이터를 공격 취약점 탐지부에 전달하는 단계를 포함하고, 퍼징 테스트 수행 중인지의 여부를 판단하는 단계 및 퍼징 테스트 수행 중인지의 여부에 따라 비휘발성 메모리 쓰기 데이터의 비휘발성 메모리 쓰기를 제어하는 단계를 더 포함할 수 있다.
이때, 전달하는 단계는, 후킹 프로그램을 기반으로 비활성 메모리 쓰기 데이터를 후킹할 수 있다.
이때, 제어하는 단계는, 퍼징 테스트 수행 중일 경우, 비휘발성 메모리 쓰기 요청된 데이터 쓰기를 생략할 수 있다.
실시예에 따라, 테스트 대상 시스템의 비휘발성 메모리를 오염시켜 시스템 부팅에 장애를 발생시키는 비휘발성 메모리 공격 취약점을 퍼징 테스트 중단 없이 탐지할 수 있기 때문에 퍼징 테스트를 자동으로 수행하는 퍼징 자동화를 제공하는 효과가 있다
실시예에 따라, 비휘발성 메모리 쓰기 데이터로 학습된 모델을 사용하여 비휘발성 메모리 공격 취약점 유무를 판단하기 때문에 단순히 시스템 부팅 장애 여부로 판단하는 방법보다 더 높은 탐지 성능을 제공하는 효과가 있다.
도 1은 산업제어시스템에서 비휘발성 메모리 공격 개념도이다.
도 2는 실시예에 따른 비휘발성 메모리 공격 취약점 탐지 장치의 개략적인 블록 구성도이다.
도 3은 실시예에 따른 비휘발성 메모리 쓰기 제어부를 상세히 설명하기 위한 블록도이다.
도 4는 실시예에 따른 비휘발성 메모리 공격 취약점 탐지 방법을 설명하기 위한 순서도이다.
도 5는 실시예에 따른 비휘발성 메모리 쓰기 제어부의 동작을 설명하기 위한 순서도이다.
도 6은 실시예에 따른 비휘발성 메모리 공격 취약점 탐지부의 동작을 설명하기 위한 순서도이다.
도 7은 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
비록 "제1" 또는 "제2" 등이 다양한 구성요소를 서술하기 위해서 사용되나, 이러한 구성요소는 상기와 같은 용어에 의해 제한되지 않는다. 상기와 같은 용어는 단지 하나의 구성요소를 다른 구성요소와 구별하기 위하여 사용될 수 있다. 따라서, 이하에서 언급되는 제1 구성요소는 본 발명의 기술적 사상 내에서 제2 구성요소일 수도 있다.
본 명세서에서 사용된 용어는 실시예를 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 또는 "포함하는(comprising)"은 언급된 구성요소 또는 단계가 하나 이상의 다른 구성요소 또는 단계의 존재 또는 추가를 배제하지 않는다는 의미를 내포한다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 해석될 수 있다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서는, 도 1 내지 도 7을 참조하여 실시예에 따른 장치 및 방법이 상세히 설명된다.
도 1은 산업제어시스템에서 비휘발성 메모리 공격 개념도이다.
도 1을 참조하면, 산업 제어 시스템 기기(1)는 휘발성 메모리(1a) 및 비휘발성 메모리(1b)를 포함하는데, 휘발성 메모리(1a)에서 보안 취약점을 포함한 프로그램(10)이 실행될 수 있다.
이때, 사이버 공격자가 보안 취약점을 포함한 프로그램(10)에 비휘발성 메모리 공격을 유발하는 통신 메시지를 전송하면, 전달된 통신 메시지에 포함된 데이터에 의해 공격 대상이 되는 보안 취약점을 포함하는 프로그램(10)에 예외 제어 흐름(exceptional control flow)이 발생되어 공유 메모리 영역이 오염될 수 있다.
이때, 부팅(booting) 코드 업데이트를 위해 오염된 메모리(1a)의 데이터가 비휘발성 메모리(1b)(예: FLASH 메모리)로 갱신하게 되면, 비휘발성 메모리(1b)도 오염되기 때문에 시스템 부팅이 수행되지 않는 영구적인 장애가 발생하게 된다.
따라서, 이러한 문제를 극복하기 위해 소프트웨어상에 보안 취약점을 미리 발견할 필요가 있는데, 가장 많이 사용되고 있는 소프트웨어 테스팅 방법 중의 하나가 퍼징(Fuzzing) 기술이다.
여기서, 퍼징이란, 컴퓨터 소프트웨어에 포함되어 있는 치명적인 오류 또는 결함을 발견하기 위하여 테스트 대상 소프트웨어에게 변형된 입력값을 전송하는 방법을 사용하는 일종의 블랙박스 테스팅 기술이다.
일반적으로, 퍼징 시스템은 퍼저(Fuzzer)와 퍼징 모니터링 모듈 및 테스트 대상 소프트웨어로 구성될 수 있다.
여기서, 퍼저는 변형된 입력값을 생성하여 테스트 대상 소프트웨어에게 전송하는 역할을 담당한다. 그리고, 퍼징 모니터링 모듈은 퍼징을 통해 테스트 대상 소프트웨어에서 충돌(crash), 즉, 소프트웨어가 멈추거나 사라지는 현상이 발생되면, 그 충돌 발생 위치(예, 메모리 주소값)와 상태정보(예, 레지스터 정보)를 수집하고, 계속해서 퍼징을 수행할 수 있도록 테스트 대상 소프트웨어를 재실행(또는 시스템을 재부팅)하는 기능을 수행한다.
이때, 퍼징 성능을 평가함에 있어, 가장 중요한 요소는 바로 퍼징 자동화와 코드 커버리지(code coverage)이다.
퍼징 수행 시간은 소프트웨어의 복잡도가 심한 경우는 수 십일도 소요될 수 있기 때문에, 퍼징 메시지 생성 충돌 발생시 재부팅 수행 결과 저장 등의 퍼징 동작이 자동으로 수행되는 퍼징 자동화가 반드시 제공되어야 한다. 또한 테스트 대상 소프트웨어에 포함된 모든 취약점을 발견할 수 있도록 테스트 대상 소프트웨어에서 테스트를 통해 실행된 코드의 비율을 뜻하는 코드 커버리지가 높아야 성능이 좋은 퍼징 시스템이라 할 수 있다.
퍼징 대상이 비휘발성 메모리 공격 취약점을 포함하는 소프트웨어인 경우에는 비휘발성 메모리 손상으로 인하여 다른 취약점을 발견하기 위한 추가적인 퍼징을 수행할 수 없게 된다. 즉, 비휘발성 메모리 공격 취약점을 포함하는 소프트웨어를 퍼징하는 경우에는 퍼징 자동화가 불가하며, 그로 인해 코드 커버리지도 낮게 되어 사실상 퍼징을 수행할 수 없는 문제가 있다.
또한, 비휘발성 메모리 공격 취약점을 정확하게 탐지하는 것이 어려운 문제도 있다. 예컨대, 퍼징 테스트 중에 시스템이 한번 부팅되지 않는다는 이유로 무조건 그 원인을 비휘발성 메모리 공격 취약점이라고 단정해버린다면 비휘발성 메모리 공격 취약점이 아닌 것을 취약점이라고 판단하는 오탐(False Positive) 문제가 발생할 것이다. 유사하게, 테스트 대상 소프트웨어가 비휘발성 메모리 공격을 당했지만 시스템이 정상적으로 부팅된다면 비휘발성 메모리 공격 취약점을 탐지하지 못하는 미탐(False Negative) 문제가 발생할 것이다.
종래에는 전술한 두 가지 문제점들을 해결하기 위한 자동화된 기술은 없고, 대신에 사람이 직접 비휘발성 메모리를 물리적으로 복구하는 원시적인 방법이 사용되고 있다. 이 방법은 퍼징을 수행하기 전에 비휘발성 메모리 원본을 미리 백업해 놓은 후, 만약 퍼징 수행 중에 시스템이 부팅되지 않으면 비휘발성 메모리를 시스템에서 물리적으로 분리한 후 외부 복사 장치를 통해 백업 원본을 비휘발성 메모리로 복사하는 방법으로 상당히 많이 시간이 소요되는 수 작업이다.
따라서, 전술한 바와 같은 종래의 문제점을 극복하기 위해, 실시예에서는 테스트 대상 시스템의 비휘발성 메모리를 오염시켜 시스템 부팅에 장애를 발생시키는 비휘발성 메모리 공격 취약점을 퍼징 테스트 중단없이 정확하게 탐지하는 장치 및 장치를 제공한다.
도 2는 실시예에 따른 비휘발성 메모리 공격 취약점 탐지 장치의 개략적인 블록 구성도이다.
도 2를 참조하면, 실시예에 따른 비휘발성 메모리 공격 취약점 탐지 장치는, 퍼저부(110), 비휘발성 메모리 쓰기 제어부(120) 및 공격 취약점 탐지부(130)를 포함할 수 있다.
퍼저부(110)는, 퍼징 대상 소프트웨어(10)에 퍼징 메시지를 전송함과 아울러 비휘발성 메모리 쓰기 제어부(120) 및 공격 취약점 탐지부(130)에 퍼징 수행 여부 알림을 전송한다.
이때, 퍼징 메시지는, 테스트 대상 소프트웨어(10)에 충돌을 발생시키기 위해 생성된 메시지일 수 있다.
비휘발성 메모리 쓰기 제어부(120)는, 퍼징 대상 소프트웨어(10)로부터 비휘발성 메모리 데이터 쓰기 요청됨에 따라, 비휘발성 메모리 쓰기 데이터를 공격 취약점 탐지부(130)에 전달할 수 있다.
아울러, 비휘발성 메모리 쓰기 제어부(120)는 휘발성 메모리(1a)에 상주하고 있는 테스트 대상 소프트웨어(10)가 비휘발성 메모리(1b)에 데이터를 쓰는 것을 제어할 수 있다.
즉, 실시예에 따라, 비휘발성 메모리 쓰기 제어부(120)는 퍼징 테스트가 수행되지 않을 때는 테스트 대상 소프트웨어(10)가 비휘발성 메모리(1b)를 접근하여 데이터를 쓰는 것을 허용하지만, 퍼징 테스트가 수행 중일 때는 테스트 대상 소프트웨어(10)가 비휘발성 메모리(1b)에 데이터를 쓰는 것을 허용하지 않는다.
공격 취약점 탐지부(130)는, 비휘발성 메모리 쓰기 제어부(120)로부터 비휘발성 메모리 쓰기 데이터가 수신됨에 따라, 정상 상태에서 미리 학습된 모델을 기반으로 비휘발성 메모리 쓰기 데이터의 정상 여부를 판단한 결과에 따라 휘발성 메모리 공격 취약점을 탐색한다.
이를 위해, 공격 취약점 탐지부(130)는 사전에 수신한 비휘발성 메모리 쓰기 데이터 학습을 통해 모델을 생성한다.
즉, 공격 취약점 탐지부(130)는 퍼징 테스트를 수행하지 않는 동안 수신한 비휘발성 메모리 쓰기 데이터를 정상 데이터로 학습하여 비휘발성 메모리 데이터 정상 유무 판단 모델을 생성한 후, 퍼징 테스트 수행 중 수신한 비휘발성 메모리 쓰기 데이터에 대해 비휘발성 메모리 데이터 정상 유무 판단 모델을 적용하여 수신 데이터가 정상인지 비정상인지를 판단함으로써 비휘발성 메모리 공격 취약점을 탐지하는 것이다.
도 3은 실시예에 따른 비휘발성 메모리 쓰기 제어부를 상세히 설명하기 위한 블록도이다.
도 3을 참조하면, 비휘발성 메모리 쓰기 제어부(120)는 후킹(hooking) 기술을 사용하여 구현될 수 있다.
컴퓨터 시스템 운영체제에서는 사용자가 비휘발성 메모리(1b)에 데이터 쓰는 것을 제공하기 위해 커널(kernel) 영역에 탑재되는 비휘발성 메모리 쓰기 함수(예, 플래시 메모리)에 데이터를 쓰기 위한 함수인 "nand_write"를 정의하고 있다.
후킹 기술은, 이러한 비휘발성 메모리 쓰기 함수 실행 코드가 호출되는 것을 가로채는 것이다.
즉, 실시예에 따른 비휘발성 메모리 쓰기 제어부(120)는 비휘발성 메모리 쓰기 함수 대신 후킹 프로그램(111)이 실행되도록 할 수 있다.
후킹 프로그램(111)은 비휘발성 메모리(1b)에 데이터 쓰기 요청을 받으면 비휘발성 쓰기 함수 실행 코드(112)를 호출하여 요청받은 데이터를 비휘발성 메모리(1b)에 쓸 수도 있고, 그 요청을 무시할 수도 있다.
따라서, 비휘발성 메모리 쓰기 제어부(120)는 후킹 프로그램(111)을 이용하여 비휘발성 메모리 쓰기를 제어할 수 있게 된다.
도 4는 실시예에 따른 비휘발성 메모리 공격 취약점 탐지 방법을 설명하기 위한 순서도이다.
도 4를 참조하면, 실시예에 따른 비휘발성 메모리 공격 취약점을 탐지하는 방법은 크게 정상 상태에서 수집된 비휘발성 메모리 쓰기 데이터로 학습 모델을 생성하는 과정(S210~S220)과, 생성된 학습 모델을 기반으로 퍼징 테스트 수행 시 수집된 비휘발성 메모리 쓰기 데이터로 테스트 데이터를 생성하는 과정(S230~S250)을 포함할 수 있다.
이때, 정상 상태에서 수집된 비휘발성 메모리 쓰기 데이터로 학습 모델을 생성하는 과정(S210~S220)은 퍼징 테스트를 수행 하기 전에 수행될 수 있다.
상세하게는, 비휘발성 메모리 쓰기를 허용하고 비휘발성 메모리 쓰기 데이터를 수집하는 단계(S210)에서 테스트 대상 시스템의 비휘발성 메모리에 데이터 쓰는 것을 허용하면서 비휘발성 메모리에 쓴 데이터를 수집할 수 있다.
또한, 비휘발성 메모리 쓰기 데이터 학습을 통해 비휘발성 메모리 데이터 정상 유무 판단 학습 모델을 생성하는 단계(S220)에서 수집한 비휘발성 메모리 쓰기 데이터를 정상 데이터로 학습하여 비휘발성 메모리 데이터 정상 유무 판단 모델을 생성할 수 있다.
이때, 생성된 학습 모델을 기반으로 퍼징 테스트 수행 시 수집된 비휘발성 메모리 쓰기 데이터로 테스트 데이터를 생성하는 과정(S230~S250)은 퍼징 테스트가 진행 중이므로 비휘발성 메모리 공격 취약점을 탐지할 때라는 알림에 따라 개시될 수 있다.
상세하게는, 비휘발성 메모리 쓰기를 허용하지 않고 비휘발성 메모리 쓰기 데이터를 수집하는 단계(S240)에서 퍼징 테스트가 진행중이므로 테스트 대상 시스템의 비휘발성 메모리에 데이터 쓰는 것을 허용하지 않으면서 비휘발성 메모리에 쓴 데이터를 수집한다.
또한, 학습된 모델을 사용하여 비휘발성 메모리 공격 취약점을 탐지하는 단계(S250)에서 퍼징 수행중에 수집한 비휘발성 메모리 쓰기 데이터에 대해 비휘발성 메모리 데이터 정상 유무 판단 모델을 적용하여 수집한 데이터가 정상인지 비정상인지를 판단함으로써 비휘발성 메모리 공격 취약점을 탐지할 수 있다.
전술한 과정을 통해, 테스트 대상 시스템 부팅에 장애를 발생시키는 비휘발성 메모리 공격 취약점을 퍼징 테스트 중단없이 탐지할 수 있다.
도 5는 실시예에 따른 비휘발성 메모리 쓰기 제어부의 동작을 설명하기 위한 순서도이다.
도 5를 참조하면, 비휘발성 메모리 쓰기 제어부(120)는, 호출 대기(S310) 중에 퍼징 대상 소프트웨어를 포함하는 외부 프로그램으로부터 비휘발성 메모리 데이터 쓰기 요청됨(S320)에 따라, 퍼징 수행 중인지의 여부를 판단한다(S330).
S330의 판단 결과 퍼징 수행 중이 아닐 경우 비휘발성 메모리 쓰기 제어부(120)는, 비휘발성 메모리를 접근하여 데이터를 쓰는 것을 허용(S340)하고, 공격 취약점 탐지부(120)에게 비휘발성 메모리 쓰기 요청된 데이터를 전달한다(S350).
반면, S330의 판단 결과 퍼징 수행 중일 경우 비휘발성 메모리 쓰기 제어부(120)는, 비휘발성 메모리를 접근하여 데이터를 쓰는 것을 허용하지 않고 바로 공격 취약점 탐지부(120)에게 비휘발성 메모리 쓰기 요청된 데이터를 전달한다(S350).
도 6은 실시예에 따른 공격 취약점 탐지부의 동작을 설명하기 위한 순서도이다.
도 6을 참조하면, 공격 취약점 탐지부(130)는, 비휘발성 메모리 쓰기 데이터를 수신함(S410)에 따라 퍼징 테스트 중인지 확인한다(S420).
S420의 확인 결과 만약 퍼징 테스트가 수행 중이 아닐 경우 공격 취약점 탐지부(130)는, 수신한 비휘발성 메모리 쓰기 데이터를 정상 데이터로 레이블한다(S430).
반면, S420의 확인 결과 만약 퍼징 테스트가 수행 중일 경우 공격 취약점 탐지부(130)는, 수신한 비휘발성 메모리 쓰기 데이터를 테스트 데이터로 레이블한다(S440).
다음으로, 공격 취약점 탐지부(130)는 사용자로부터의 요청이 머신 러닝 또는 취약점 탐지 중 무엇인지를 확인한다(S450).
S450의 확인 결과 사용자로부터 머신러닝이 요청된 경우 공격 취약점 탐지부(130)는 정상데이터로 레이블된 데이터를 학습(S460)하여, 비휘발성 메모리 데이터 정상유무 판단 학습 모델을 생성한다(S470).
반면, S450의 확인 결과 사용자로부터 취약 탐지가 요청된 경우 공격 취약점 탐지부(130)는 테스트 데이터로 레이블된 데이터에 대해 비휘발성 메모리 데이터 정상유무 판단 학습 모델을 적용(S480)하여 테스트 데이터가 비정상 데이터로 분류되는지를 확인한다(S490).
S490의 확인 결과 테스트 데이터가 비정상 데이터로 분류될 경우, 공격 취약점 탐지부(130)는 비휘발성 메모리 공격 취약점으로 판단한다(S500).
도 7은 실시예에 따른 컴퓨터 시스템 구성을 나타낸 도면이다.
실시예에 따른 비휘발성 메모리 공격 취약점 탐지 장치 또는 퍼저부(110), 비휘발성 메모리 쓰기 제어부(120), 공격 취약점 탐지부(130) 각각은 컴퓨터로 읽을 수 있는 기록매체와 같은 컴퓨터 시스템(1000)에서 구현될 수 있다.
컴퓨터 시스템(1000)은 버스(1020)를 통하여 서로 통신하는 하나 이상의 프로세서(1010), 메모리(1030), 사용자 인터페이스 입력 장치(1040), 사용자 인터페이스 출력 장치(1050) 및 스토리지(1060)를 포함할 수 있다. 또한, 컴퓨터 시스템(1000)은 네트워크(1080)에 연결되는 네트워크 인터페이스(1070)를 더 포함할 수 있다. 프로세서(1010)는 중앙 처리 장치 또는 메모리(1030)나 스토리지(1060)에 저장된 프로그램 또는 프로세싱 인스트럭션들을 실행하는 반도체 장치일 수 있다. 메모리(1030) 및 스토리지(1060)는 휘발성 매체, 비휘발성 매체, 분리형 매체, 비분리형 매체, 통신 매체, 또는 정보 전달 매체 중에서 적어도 하나 이상을 포함하는 저장 매체일 수 있다. 예를 들어, 메모리(1030)는 ROM(1031)이나 RAM(1032)을 포함할 수 있다.
이상에서 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
1 : 테스트 대상 시스템 1a : 휘발성 메모리
1b : 비휘발성 메모리 10 : 테스트 대상 소프트웨어
110 : 퍼저부 120 : 비휘발성 메모리 쓰기 제어부
130 : 공격 취약점 탐지부

Claims (15)

  1. 적어도 하나의 프로그램이 기록된 메모리; 및
    프로그램을 실행하는 프로세서를 포함하며,
    프로그램은,
    퍼징 대상 소프트웨어에 퍼징 메시지를 전송하는 퍼저부;
    퍼징 대상 소프트웨어로부터 비휘발성 메모리 데이터 쓰기 요청됨에 따라, 비휘발성 메모리 쓰기 데이터를 공격 취약점 탐지부에 전달하는 비휘발성 메모리 쓰기 제어부; 및
    비휘발성 메모리 쓰기 제어부로부터 비휘발성 메모리 쓰기 데이터가 수신됨에 따라, 정상 상태에서 미리 학습된 모델을 기반으로 비휘발성 메모리 쓰기 데이터의 정상 여부를 판단한 결과에 따라 휘발성 메모리 공격 취약점을 탐색하는 공격 취약점 탐지부를 포함하되,
    공격 취약점 탐지부는,
    퍼징 테스트를 수행하지 않는 동안 수신한 비휘발성 메모리 쓰기 데이터를 정상 데이터로 학습하여 비휘발성 메모리 데이터 정상 유무 판단하는 모델을 생성하는, 비휘발성 메모리 공격 취약점 탐지 장치.
  2. 제1 항에 있어서, 공격 취약점 탐지부는,
    비휘발성 메모리 쓰기 데이터가 수신됨에 따라, 퍼저부로터의 퍼징 수행 여부 알림에 따라 퍼징 수행 중인지의 여부를 판단하는 단계;
    퍼징 테스트가 수행 중일 경우, 정상 상태에서 미리 학습된 모델을 기반으로 비휘발성 메모리 쓰기 데이터의 정상 유무를 판단하는 단계; 및
    비휘발성 메모리 쓰기 데이터가 비정상으로 판단될 경우, 비휘발성 메모리 공격 취약점으로 판단하는 단계를 수행하는, 비휘발성 메모리 공격 취약점 탐지 장치.
  3. 제2 항에 있어서, 공격 취약점 탐지부는,
    퍼징 테스트가 수행 중일 경우, 비휘발성 메모리 쓰기 데이터를 테스트 데이터로 레이블하는 단계를 더 수행하고,
    정상 유무를 판단하는 단계는,
    테스트 데이터로 레이블된 비휘발성 메모리 쓰기 데이터를 입력받은 학습 모델의 출력에 따라 비휘발성 메모리 쓰기 데이터의 정상 유무를 판단하는, 비휘발성 메모리 공격 취약점 탐지 장치.
  4. 제1 항에 있어서, 공격 취약점 탐지부는,
    퍼징 테스트가 수행 중이 아닐 경우, 비휘발성 메모리 쓰기 데이터를 정상 데이터로 레이블하는 단계를 더 수행하되,
    정상 데이터는 모델의 학습 데이터로 사용되는, 비휘발성 메모리 공격 취약점 탐지 장치.
  5. 제1 항에 있어서, 모델은,
    정상 데이터가 입력됨에 따라 정상이라는 결과를 출력하도록 학습되는, 비휘발성 메모리 공격 취약점 탐지 장치.
  6. 제1 항에 있어서, 비휘발성 메모리 쓰기 제어부는,
    퍼징 대상 소프트웨어로부터 비휘발성 메모리 데이터 쓰기 요청됨에 따라 비휘발성 메모리 쓰기 데이터를 공격 취약점 탐지부에 전달하는 단계를 수행하고,
    퍼징 테스트 수행 중인지의 여부를 판단하는 단계; 및
    퍼징 테스트 수행 중인지의 여부에 따라 비휘발성 메모리 쓰기 데이터의 비휘발성 메모리 쓰기를 제어하는 단계를 더 수행하는, 비휘발성 메모리 공격 취약점 탐지 장치.
  7. 제6 항에 있어서, 비휘발성 메모리 쓰기 제어부는,
    후킹 프로그램을 기반으로 비활성 메모리 쓰기 데이터를 후킹하는, 비휘발성 메모리 공격 취약점 탐지 장치.
  8. 제7 항에 있어서, 비휘발성 메모리 쓰기 제어부는,
    퍼징 테스트 수행 중일 경우, 비휘발성 메모리 쓰기 요청된 데이터 쓰기를 생략하는, 비휘발성 메모리 공격 취약점 탐지 장치.
  9. 비휘발성 메모리 쓰기 데이터가 수신됨에 따라, 퍼징 테스트가 수행 중인지의 여부를 판단하는 단계;
    퍼징 테스트가 수행 중일 경우, 정상 상태에서 미리 학습된 모델을 기반으로 비휘발성 메모리 쓰기 데이터의 정상 유무를 판단하는 단계; 및
    비휘발성 메모리 쓰기 데이터가 비정상으로 판단될 경우, 비휘발성 메모리 공격 취약점으로 판단하는 단계를 포함하되,
    퍼징 테스트를 수행하지 않는 동안 수신한 비휘발성 메모리 쓰기 데이터를 정상 데이터로 학습하여 비휘발성 메모리 데이터 정상 유무 판단하는 모델을 생성하는 단계를 더 수행하는, 비휘발성 메모리 공격 취약점 탐지 방법.
  10. 제9 항에 있어서,
    퍼징 테스트가 수행 중일 경우, 비휘발성 메모리 쓰기 데이터를 테스트 데이터로 레이블하는 단계를 더 포함하고,
    정상 유무를 판단하는 단계는,
    테스트 데이터로 레이블된 비휘발성 메모리 쓰기 데이터를 입력받은 모델의 출력에 따라 비휘발성 메모리 쓰기 데이터의 정상 유무를 판단하는, 비휘발성 메모리 공격 취약점 탐지 방법.
  11. 제10 항에 있어서,
    퍼징 테스트가 수행 중이 아닐 경우, 비휘발성 메모리 쓰기 데이터를 정상 데이터로 레이블하는 단계를 더 포함하되,
    정상 데이터는 모델의 학습 데이터로 사용되는, 비휘발성 메모리 공격 취약점 탐지 방법.
  12. 제9 항에 있어서, 모델은,
    정상 데이터가 입력됨에 따라 정상이라는 결과를 출력하도록 학습되는, 비휘발성 메모리 공격 취약점 탐지 방법.
  13. 퍼징 대상 소프트웨어로부터 비휘발성 메모리 데이터 쓰기 요청됨에 따라 비휘발성 메모리 쓰기 데이터를 공격 취약점 탐지부에 전달하는 단계를 포함하고,
    퍼징 테스트 수행 중인지의 여부를 판단하는 단계; 및
    퍼징 테스트 수행 중인지의 여부에 따라 비휘발성 메모리 쓰기 데이터의 비휘발성 메모리 쓰기를 제어하는 단계를 더 포함하되,
    비휘발성 메모리 쓰기 데이터는,
    공격 취약점 탐지부에 의해 정상 상태에서 미리 학습된 모델을 기반으로 정상 여부를 판단한 결과에 따라 휘발성 메모리 공격 취약점을 탐색하는데 사용되되,
    모델은,
    퍼징 테스트를 수행하지 않는 동안 수신한 비휘발성 메모리 쓰기 데이터를 정상 데이터로 학습하여 비휘발성 메모리 데이터 정상 유무 판단하는데 사용되는, 비휘발성 메모리 쓰기 제어 방법.
  14. 제13 항에 있어서, 전달하는 단계는,
    후킹 프로그램을 기반으로 비활성 메모리 쓰기 데이터를 후킹하는, 비휘발성 메모리 쓰기 제어 방법.
  15. 제13 항에 있어서, 제어하는 단계는,
    퍼징 테스트 수행 중일 경우, 비휘발성 메모리 쓰기 요청된 데이터 쓰기를 생략하는, 비휘발성 메모리 쓰기 제어 방법.
KR1020210064288A 2021-05-18 2021-05-18 비휘발성 메모리 공격 취약점 탐지 장치 및 방법 KR102682746B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210064288A KR102682746B1 (ko) 2021-05-18 비휘발성 메모리 공격 취약점 탐지 장치 및 방법
US17/525,604 US20220374525A1 (en) 2021-05-18 2021-11-12 Apparatus and method for detecting vulnerability to nonvolatile memory attack

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210064288A KR102682746B1 (ko) 2021-05-18 비휘발성 메모리 공격 취약점 탐지 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20220156355A KR20220156355A (ko) 2022-11-25
KR102682746B1 true KR102682746B1 (ko) 2024-07-12

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018195288A (ja) * 2017-05-16 2018-12-06 富士通株式会社 ファジングテスト装置、ファジングテスト方法及びファジングテストプログラム
KR101963756B1 (ko) * 2018-11-19 2019-03-29 세종대학교산학협력단 소프트웨어 취약점 예측 모델 학습 장치 및 방법, 소프트웨어 취약점 분석 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018195288A (ja) * 2017-05-16 2018-12-06 富士通株式会社 ファジングテスト装置、ファジングテスト方法及びファジングテストプログラム
KR101963756B1 (ko) * 2018-11-19 2019-03-29 세종대학교산학협력단 소프트웨어 취약점 예측 모델 학습 장치 및 방법, 소프트웨어 취약점 분석 장치 및 방법

Similar Documents

Publication Publication Date Title
US7845006B2 (en) Mitigating malicious exploitation of a vulnerability in a software application by selectively trapping execution along a code path
JP6333410B2 (ja) 障害処理方法、関連装置、およびコンピュータ
US8910172B2 (en) Application resource switchover systems and methods
US9058265B2 (en) Automated fault and recovery system
US7865782B2 (en) I/O device fault processing method for use in virtual computer system
US20080065577A1 (en) Distributed autonomic solutions repository
US20080115012A1 (en) Method and infrastructure for detecting and/or servicing a failing/failed operating system instance
JP5965076B2 (ja) 訂正不能メモリエラー処理方法及びその可読媒体
TW201828071A (zh) 開關裝置及偵測積體電路匯流排之方法
US20170132102A1 (en) Computer readable non-transitory recording medium storing pseudo failure generation program, generation method, and generation apparatus
JP5425720B2 (ja) 仮想化環境監視装置とその監視方法およびプログラム
US20050204199A1 (en) Automatic crash recovery in computer operating systems
CN110704228A (zh) 一种固态硬盘异常处理方法及系统
US6976191B2 (en) Method and apparatus for analyzing hardware errors in a logical partitioned data processing system
KR102682746B1 (ko) 비휘발성 메모리 공격 취약점 탐지 장치 및 방법
JP2017061045A (ja) 画像処理装置、画像処理プログラム及び画像処理システム
JP3711871B2 (ja) Pciバスの障害解析容易化方式
JP5452336B2 (ja) 周辺機器障害模擬システム、周辺機器障害模擬方法および周辺機器障害模擬プログラム
KR20220156355A (ko) 비휘발성 메모리 공격 취약점 탐지 장치 및 방법
US20050278789A1 (en) Anomaly-driven software switch to capture event responses and automate recovery
US8533539B2 (en) Fault handling systems and methods
TWI529525B (zh) 處理系統錯誤之方法及系統
KR20090010521A (ko) 화상형성방법 및 장치와 호스트
US20210173689A1 (en) Associating security tags to continuous data protection checkpoints/snapshots/point-in-time images
US8065567B1 (en) Systems and methods for recording behavioral information of an unverified component