KR20220118937A - 퍼즈 테스팅을 위한 합성 테스트 케이스 생성 - Google Patents

퍼즈 테스팅을 위한 합성 테스트 케이스 생성 Download PDF

Info

Publication number
KR20220118937A
KR20220118937A KR1020220020784A KR20220020784A KR20220118937A KR 20220118937 A KR20220118937 A KR 20220118937A KR 1020220020784 A KR1020220020784 A KR 1020220020784A KR 20220020784 A KR20220020784 A KR 20220020784A KR 20220118937 A KR20220118937 A KR 20220118937A
Authority
KR
South Korea
Prior art keywords
dnn
test cases
generator
training data
discriminator
Prior art date
Application number
KR1020220020784A
Other languages
English (en)
Inventor
존 맥쉐인
티모시 스콧 아른트슨
자카리아 펠레티에
Original Assignee
로베르트 보쉬 게엠베하
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 로베르트 보쉬 게엠베하 filed Critical 로베르트 보쉬 게엠베하
Publication of KR20220118937A publication Critical patent/KR20220118937A/ko

Links

Images

Classifications

    • 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/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템. 한 예는 전자 프로세서를 포함한다. 전자 프로세서는 트레이닝 데이터를 사전 처리하고, 트레이닝 데이터를 사용하여 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지를 결정하기 위해 테스트 케이스를 평가하도록 판별자 DNN을 트레이닝하고, 판별자 DNN을 사용하여 소프트웨어 취약성을 노출할 가능성이 있는 테스트 케이스를 생성하기 위해 생성자 DNN을 트레이닝하도록 구성된다. 전자 프로세서는 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지를 결정하고 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지에 대한 결정을 생성자 DNN에 전송함으로써 판별자 DNN을 사용하여 생성자 DNN을 트레이닝한다. 전자 프로세서는 또한 생성자 DNN이 트레이닝될 때 하나 이상의 테스트 케이스들을 생성하도록 구성된다.

Description

퍼즈 테스팅을 위한 합성 테스트 케이스 생성{GENERATING SYNTHETIC TEST CASES FOR FUZZ TESTING}
관련 출원
본 출원은 2021년 2월 19일에 출원된 미국 가특허출원 63/151,384에 대한 우선권을 주장하며, 그 전체 내용은 여기에 참조로 포함된다.
실시예들은 퍼즈 테스팅(fuzz testing), 예를 들어 CAN(Controller Area Network) 버스 퍼즈 테스팅을 위한 합성 테스트 케이스들(synthetic test cases)을 생성하기 위한 시스템 및 방법에 관한 것이다.
많은 현대 차량에는 다양한 차량 관련 기능들을 수행하기 위해 복잡한 계산 시스템들(예를 들어, 전자 제어 유닛들(ECU))이 장착되어 있다. ECU들은 통신 네트워크(예를 들어, CAN 버스)에서 전송되는 메시지들(예를 들어, 일련의 비트들)을 통해 서로 통신할 수 있다. ECU들은 프로그램 충돌, 메모리 손상, 및 극단적인 리소스 사용 문제들과 같은 문제들에 취약할 수 있다. 이러한 문제들 또는 소프트웨어 취약성은 ECU가 손상된 메시지를 수신할 때 발생할 수 있다. 소프트웨어 에러 및 해커 등의 고의적인 공격으로 인해 손상된 메시지가 전송될 수 있다. 결과적으로, 장비 제조업체, 차량 소유자, 유지 보수 및 수리 기술자, 및 기타 사람들은 퍼징(fuzzing)과 같은 기술을 사용하여 잠재적인 취약성이 악용되기 전에 이들을 식별한다. 퍼징은, ECU에서 실행되는 소프트웨어가 다양한 유형의 테스트 케이스들(예를 들어, 손상된 메시지)을 처리하도록 강화할 수 있다. 예를 들어, 취약성이 식별되면, 소프트웨어 기술자는 식별된 취약성을 해결하기 위해 소프트웨어 코드를 변경할 수 있다.
여기에 설명된 시스템들 및 방법들은 퍼즈 테스팅을 위한 합성 테스트 케이스들의 생성을 허용한다. 차량 제조업체와 기술자가 ECU 취약성을 식별할 수 있도록 지원하기 위해, 시스템은 취약성을 식별할 가능성이 있지만 다소 무작위적인 퍼징에 대한 합성 테스트 케이스들을 생성한다. 합성 테스트 케이스들은 기술자가 아닌 기계 학습 모델에 의해 생성되는 것들이며, ECU를 퍼징하는 데 필요한 시간을 줄여준다. 새로운 유형들의 테스트 케이스들 또는 손상된 메시지들을 식별하기 위해 테스트 케이스들이 무작위 요소(element of randomness)를 갖는 것이 중요하다. 많은 기계 학습 모델들은 단지, 에러를 생성하는 것으로 이미 알려진 테스트 케이스들에 기초하여 새로운 테스트 케이스들을 생성하도록 트레이닝되며, 따라서 무작위 요소가 없으면 이러한 기계 학습 모델들은 해커들이 ECU들에서 악용하려고 하는 알려지지 않은 취약성을 찾기 위한 새로운 유형의 테스트 케이스들을 생성할 가능성이 낮다(이러한 문제는 때때로 과적합(overfitting)이라고도 한다). 취약성을 식별할 가능성이 있지만 다소 무작위적인 퍼징을 위한 합성 테스트 케이스들을 생성하기 위해, 여기에 설명된 시스템들 및 방법들은 무엇보다도 일반 적대적 네트워크(general adversarial network)(GAN)를 활용한다.
한 가지 예는 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템을 제공한다. 상기 시스템은 전자 프로세서를 포함한다. 전자 프로세서는 트레이닝 데이터를 사전 처리하고 트레이닝 데이터를 사용하여 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지를 결정하기 위해 테스트 케이스를 평가하도록 판별자(discriminator) DNN을 트레이닝하도록 구성된다. 전자 프로세서는 또한 판별자 DNN을 사용하여 소프트웨어 취약성을 노출할 가능성이 있는 테스트 케이스를 생성하기 위해 생성자(generator) DNN을 트레이닝하도록 구성된다. 전자 프로세서는 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지를 결정하고 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지에 대한 결정을 생성자 DNN에 전송함으로써 판별자 DNN을 사용하여 생성자 DNN을 트레이닝한다. 전자 프로세서는 또한 생성자 DNN이 트레이닝될 때 생성자 DNN을 사용하여 하나 이상의 테스트 케이스들을 생성하도록 구성된다.
또 다른 예는 퍼즈 테스팅을 위한 합성 테스트 케이스를 생성하는 방법을 제공한다. 이 방법은 트레이닝 데이터를 사전 처리하는 단계, 트레이닝 데이터를 사용하여 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지를 결정하기 위해 테스트 케이스를 평가하도록 판별자 DNN을 트레이닝하는 단계, 및 판별자 DNN을 사용하여 소프트웨어 취약성을 노출할 가능성이 있는 테스트 케이스를 생성하도록 생성자 DNN을 트레이닝하는 단계를 포함한다. 판별자 DNN은 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지 여부를 결정하고 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지 여부에 대한 결정을 생성자 DNN에 전송함으로써 생성자 DNN을 트레이닝한다. 방법은 생성자 DNN이 트레이닝될 때 생성자 DNN을 사용하여 하나 이상의 테스트 케이스들을 생성하는 단계를 더 포함한다.
다른 양태들, 특징들, 및 실시예들은 상세한 설명 및 첨부 도면들을 고려함으로써 명백해질 것이다.
도 1은 일부 실시예들에 따라 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 예시적인 시스템을 도시한다.
도 2는 일부 실시예들에 따라 퍼즈 테스팅을 위한 예시적인 시스템의 블록도이다.
도 3은 일부 실시예들에 따라 도 1의 시스템에 포함된 테스트 도구의 예시적인 예이다.
도 4는 일부 실시예들에 따라 도 1의 시스템에 포함된 판별자 DNN을 트레이닝, 컴파일링 및 피팅하기 위한 의사 코드의 예시적인 예이다.
도 5는 일부 실시예들에 따라 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하는 방법을 예시하는 흐름도이다.
임의의 실시예들이 상세히 설명되기에 앞서, 개시 내용은 다음의 상세한 설명에 설명되거나 다음의 도면들에서 도시된 구성의 세부 사항들 및 구성 요소들의 배열에 대한 그 적용에 제한되도록 의도되지 않는다는 것을 이해해야 한다. 실시예들은 다른 구성들이 가능하고 다양한 방법들로 실시되거나 수행될 수 있다.
복수의 하드웨어 및 소프트웨어 기반 장치들뿐만 아니라 복수의 상이한 구조적 구성 요소들이 다양한 실시예들을 구현하는데 사용될 수 있다. 또한, 실시예들은 하드웨어, 소프트웨어, 및 전자 구성 요소들 또는 모듈들을 포함할 수 있으며, 이러한 구성 요소들은 논의의 목적으로, 구성 요소들 대부분이 마치 하드웨어로만 구현된 것으로 도시되고 설명될 수도 있다. 그러나, 당업자는 본 상세한 설명을 읽은 것에 기초하여, 적어도 하나의 실시예에서, 본 발명의 전자 기반 양태들이 하나 이상의 전자 프로세서들에 의해 실행 가능한 소프트웨어(예를 들면, 비일시적 컴퓨터 판독 가능한 매체에 저장됨)로 구현될 수 있다는 것을 인식할 것이다. 예를 들어, 본 명세서에서 기술된 "제어 유닛" 및 "컨트롤러"는 하나 이상의 전자 프로세서들, 비일시적 컴퓨터 판독 가능한 매체를 포함하는 하나 이상의 메모리 모듈들, 하나 이상의 입력/출력 인터페이스들, 하나 이상의 애플리케이션 특정 집적 회로들(ASICs), 및 다양한 구성 요소들을 연결하는 다양한 연결부들(예를 들면, 시스템 버스)을 포함할 수 있다.
도 1은 퍼즈 테스팅를 위한 합성 테스트 케이스들을 생성하기 위한 예시적인 시스템(100)을 도시한다. 시스템(100)은 정보를 획득 및 제공하도록 구성된 다양한 하드웨어 및 소프트웨어 구성요소들을 포함하고, 예를 들어 하나 이상의 소프트웨어 명령들 또는 프로그램들을 실행함으로써 정보를 처리한다. 예시된 예에서, 시스템(100)은 테스트 도구(110)를 포함한다. 일부 실시예들에서, 테스트 도구(110)는 네트워크(예를 들어, CAN(controller area network) 버스)에 전기적으로 결합되고 네트워크로부터 정보를 얻고 네트워크에 정보를 제공하도록 구성된다.
일부 실시예들에서, 테스트 도구는 테스트 도구(110)와 연관된 메모리에 저장된 소프트웨어로 구현될 수 있고 테스트 툴(110)과 연관된 전자 프로세서에 의해 실행가능한 퍼저 소프트웨어(fuzzer software)(120)를 포함한다. 일부 실시예들에서, 퍼저 소프트웨어(120)는 통신 네트워크를 통해 테스트 케이스들을 하나 이상의 ECU들(예를 들어, 타겟 디바이스(140))로 전송하여 ECU들과 연관된 소프트웨어의 취약성을 식별하도록 구성된다.
일부 실시예들에서, 타겟 디바이스(140)는 전자 프로세서(예를 들어, 전자 마이크로프로세서, 마이크로컨트롤러, 또는 다른 적절한 프로그램 가능 디바이스), 메모리, 및 입력/출력 인터페이스를 포함한다. 일부 실시예들에서, 타겟 디바이스(140)와 연관된 전자 프로세서는 테스트 케이스(130)를 수신하는 데 응답하여 데이터를 생성한다. 일부 실시예들에서, 테스트 케이스(130)를 수신하는 데 응답하여 타겟 디바이스(140)에 의해 생성된 데이터는 타겟 디바이스(140)의 에러를 나타내는 정보를 포함한다. 예를 들어, 타겟 디바이스(140)에 의해 실행되고 있는 소프트웨어 코드는 테스트 케이스에 대한 응답으로 예외를 일으킬(throw) 수 있고, 타겟 디바이스(140)는 일어난(thrown) 예외의 표시 및 예외를 일으킨 테스트 케이스를 포함하는 출력 로그(output log)를 생성할 수 있다. 일부 실시예들에서, 타겟 디바이스(140)에 의해 생성된 데이터는 암호화되고, 이력 데이터 데이터베이스(165)와 같은 데이터베이스 또는 구조화된 쿼리 언어(SQL) 서버에 저장된다. 일부 실시예들에서, 타겟 디바이스(140)에 의해 생성된 데이터는 퍼저 소프트웨어(120)로 전송되고, 퍼저 소프트웨어(120)는 타겟 디바이스(140)에 의해 생성된 데이터를 이력 데이터 데이터베이스(165)로 전송한다. 일부 실시예들에서, 타겟 디바이스(140)에 의해 생성된 데이터는 후술되는 판별자 고밀도 신경망(dense neural network)(DNN)으로 전송된다.
시스템(100)은 또한 전자 프로세서에 의해 실행 가능한 소프트웨어로 구현될 수 있는 GAN(145)을 포함한다. 일부 실시예들에서, GAN(145)은 도 1 및 도 3과 관련하여 도시되고 설명된 테스트 도구(110)에서 구현된다. 다른 실시예들에서, GAN(145)은 테스트 툴(110)에 원격이지만 (예를 들어, 유선 또는 무선 통신 네트워크를 통해) 테스트 툴과 통신하는 전자 컨트롤러에서 구현된다. 일부 실시예들에서, GAN(145)은 판별자 DNN(Dense Neural Network)(150), 및 생성자 DNN(Dense Neural Network)(160)을 포함한다. 고밀도 신경망(DNN)은 또한 순환 신경망(RNN)으로서 당업계에 알려져 있다.
일부 실시예들에서, 판별자 DNN(150)은 이력 데이터 데이터베이스(165), 타겟 디바이스(140), 또는 둘 모두로부터 트레이닝 데이터(170)를 수신한다. 일부 실시예들에서, 판별자 DNN(150)은 테스트 케이스가 ECU의 취약성을 테스트할지를 결정하기 위해 트레이닝 데이터(170)를 사용하여 트레이닝된다. 예를 들어, 판별자 DNN(150)은 테스트 케이스가 ECU의 취약성을 테스트하지 않을 것이라고 결정하는 경우 테스트 케이스를 "통과 케이스(pass case)"로 라벨링하고(label), 테스트 케이스가 ECU의 취약점을 테스트할 것으로 결정하는 경우 "실패 케이스(fail case)"로 라벨링할 수 있다. 일부 실시예들에서, 0과 1 사이의 값인 스코어가 판별자 DNN(150)에 의해 생성되고, 테스트 케이스를 "통과 케이스" 또는 "실패 케이스"로 분류하는 데 사용된다. 예를 들어, 테스트 케이스를 "실패 케이스"로 라벨링하기 위한 임계값은 .7일 수 있고, 판별자 DNN(150)은 테스트 케이스에 대해 0.986의 숫자 값(또는 스코어)을 생성할 수 있다. 값 0.986이 .7보다 크기 때문에, 판별자 DNN(150)은 테스트 케이스를 "실패 케이스"로 라벨링할 수 있다.
일부 실시예들에서, 판별자 DNN(150)은 TensorFlow®와 같은 인공 지능 알고리즘 라이브러리를 사용하여 구현된다. 일부 실시예들에서, 판별자 DNN(150)은 예측을 하기 위한 순차적인 모델이며, 여기서 판별자 DNN(150)의 각 계층은 하나의 입력 텐서 및 하나의 출력 텐서를 갖는다. 일부 실시예들에서, 테스트 케이스의 모든 피처에 대해 별개의 상관 모델이 구축되고, 4개의 별개의 고밀도 계층들이 각각의 상관 모델에 추가된다. 일부 실시예들에서, 판별자 DNN(150)은 0.001의 학습률로 확률적 기울기 하강법(예를 들어, TensorFlow® 라이브러리의 Adam 최적화기)을 사용하여 컴파일된다. 일부 실시예들에서, 손실 함수가 판별자 DNN(150)이 트레이닝 데이터 모델링에서 얼마나 잘 진행되고 있는지를 결정하기 위해 사용된다. 일부 실시예들에서, 판별자 DNN(150)은 페이로드의 평균 절대 오차를 사용하여 컴파일되며, 그에 따라 스코어가 판별자 DNN(150)에 의해 생성된다. 일부 실시예들에서, 판별자 DNN(150)은, 판별자 DNN(150)에 다수의 학습 상호작용들(트레이닝 에포크(training epochs)), 라벨링된 트레이닝 데이터, 및 0.2의 검증 분할(트레이닝 데이터(170)의 20%가 판별자 DNN(150)을 검증하는 데 사용)을 공급함으로써 TensorFlow ®을 사용하여 트레이닝된다.
일부 실시예들에서, 판별자 DNN(150)이 컴파일되고 데이터에 피팅된 후, 판별자 DNN(150)은 앞서 설명된 바와 같이 테스트 케이스가 실패를 야기할 가능성이 있는지 또는 타겟 디바이스(140)의 취약성을 테스트할 것인지 여부를 예측하는 데 사용된다. 일부 실시예들에서, 예측은 TensorFlow ® "Predict" 기능을 사용하여 입력 트레이닝 데이터의 형태와 일치하는 예시 벡터를 사용하고 입력 값이 주어진 라벨과 일치할 확률(또는 백분율) 기회를 나타내는 부동 소수점 정수를 출력함으로써 달성된다.
일부 실시예들에서, 생성자 DNN(160)은 소프트웨어 취약성을 노출할 가능성이 있는 테스트 케이스들을 생성하기 위해 판별자 DNN(150)에 의해 트레이닝된다. 생성자 DNN이 트레이닝되면, 하나 이상의 테스트 케이스들을 생성하고 하나 이상의 테스트 케이스들을 퍼저 소프트웨어(120)로 전송한다. 일부 실시예들에서, 차례로, 퍼저 소프트웨어(120)는 생성자 DNN(160)으로부터 수신된 테스트 케이스(예를 들어, 테스트 케이스(130))를 타겟 디바이스(140)에 제공한다.
도 2는 네트워크 테스팅을 위한 예시적인 시스템(200)을 도시한다. 도시된 예에서, 시스템(200)은 통신 네트워크(230)를 통해 연결된, 전자 컨트롤러(210), 타겟 디바이스(140), 제2 ECU(220), 및 테스트 도구(110)를 포함한다. 도시된 예에서, 통신 네트워크(230)는 CAN(Controller Area Network)이고, CAN 프로토콜이 활용된다. 여기에 설명된 기술들은 예를 들어 CAN 이외의 네트워크의 전송 계층에 적용될 수 있다. 예를 들어, 통신 네트워크(230)는 예를 들어 인터넷과 같은 광역 네트워크, Wi-Fi 네트워크와 같은 로컬 영역 네트워크, Bluetooth™ 네트워크와 같은 근거리 무선 네트워크, 근거리 통신 연결 및 이들의 조합 또는 파생물들을 포함하는 다른 네트워크 방식들을 사용하여 구현될 수 있다. CAN 프로토콜을 사용하는 대신, TCP(Transmission Control Protocol), 이더넷, IPv4(Internet Protocol version 4) 등과 같은 다른 네트워크 프로토콜들이 사용될 수 있다. 도 2에 도시된 실시예들은 시스템(200)의 구성요소들 및 연결들을 제공하지만 이는 한 예에 불과하다. 다른 실시예들에서, 이러한 구성요소들 및 연결들은 본 명세서에 예시되고 설명된 것과 다른 방식들로 구성될 수 있다. 예를 들어, 시스템(200)은 도 2에 도시된 디바이스들의 수와 상이한 수의 디바이스들을 포함할 수 있다.
일부 실시예들에서, 시스템(200)은 디바이스들을 포함하기 보다는, 퍼저 소프트웨어(120)에 의해 테스트될 수 있는 소프트웨어 모듈들(예를 들어, 소프트웨어 방법, 소프트웨어 클래스 등)을 포함할 수 있다. 예를 들어, 퍼저 소프트웨어(120)는 SIL(Software-in-the-Loop) 프로토콜(도 2에 도시된 CAN 프로토콜 대신)을 사용하여 통신하고 디바이스들보다는 컴파일된 소프트웨어 모듈들과 통신할 수 있다. 이 예에서, 타겟 디바이스(140)는 통신 네트워크 등을 통해 다른 클래스로부터, 다른 방법으로부터 데이터 또는 메시지들을 수신하도록 구성된 소프트웨어 방법 또는 클래스일 것이다. 일부 실시예들에서, 퍼저 소프트웨어(120)는 소스 코드 내에서 처리되지 않은 예외들이 있는지 여부를 결정하기 위해 컴파일되지 않은 소스 코드(예를 들어, C 코드, Python 코드 등)와 통신할 수 있다. 이 예에서는, 네트워크 프로토콜이 사용되지 않을 것이다.
테스트 도구(110)는 무엇보다도 통신 네트워크(230)에 대한 합성 테스트 케이스들을 생성하도록 구성된다. 테스트 도구(110)는 전자 컨트롤러(210), 타겟 디바이스(140), 및 제2 ECU(220)에 의해 생성된 하나 이상의 신호들을 나타내는 신호를 통신 네트워크(230)로부터 수신하도록 구성된다. 테스트 도구(110)는, 예를 들어, 데스크탑 컴퓨터, 서버, 랩탑, 진단 도구 등일 수 있다. 테스트 도구(110)는 무엇보다도 여기에 설명된 프로세스들 및 방법들과 관련된 명령들을 실행한다. 테스트 도구(110)가 통신 네트워크(230)에 대한 합성 테스트 케이스들을 생성하기 위한 GAN을 구현하는 것으로 여기에서 설명되지만, 테스트 도구(110)는 다른 기계 학습 방법들을 사용하여 구현될 수 있다는 것을 이해해야 한다.
도 3에 도시된 바와 같이, 테스트 도구(110)는 무엇보다도 전자 프로세서(300)(예를 들어, 전자 마이크로프로세서, 마이크로컨트롤러, 또는 다른 적절한 프로그램 가능 디바이스), 메모리(310), 및 입력/출력 인터페이스(320)를 포함한다.  전자 프로세서(300), 메모리(310), 및 입력/출력 인터페이스(320)는 통신 가능하게 연결된다.  일부 실시예들에서, 전자 프로세서(300)는 다양한 하드웨어(예를 들어, 프로그램 가능 마이크로프로세서, 필드 프로그램 가능 게이트 어레이("FPGA"), 주문형 집적 회로("ASIC"), 또는 다른 디바이스들을 사용)를 포함하거나 이를 사용하여 구현된다.
전자 프로세서(300)는 (예를 들어, 메모리(310) 및/또는 입력/출력 인터페이스(320)로부터) 정보를 획득 및 제공하고, 예를 들어 메모리(310)의 랜덤 액세스 메모리("RAM") 영역 또는 메모리(310)의 판독 전용 메모리("ROM") 또는 다른 비 일시적 컴퓨터 판독 가능 매체(도시되지 않음)에 저장될 수 있는 하나 이상의 소프트웨어 명령들 또는 모듈들을 실행함으로써 정보를 처리한다. 상기 소프트웨어는 펌웨어, 하나 이상의 애플리케이션들, 프로그램 데이터, 필터들(filters), 규칙들(rules), 하나 이상의 프로그램 모듈들, 및 다른 실행 가능한 명령들을 포함할 수 있다.
메모리(310)는 하나 이상의 비 일시적 컴퓨터 판독 가능 매체를 포함할 수 있으며, 프로그램 저장 영역 및 데이터 저장 영역을 포함한다. 본 출원에서 사용되는 "비 일시적 컴퓨터 판독가능 매체"는 모든 컴퓨터 판독가능 매체들을 포함하지만 일시적인 전파하는 신호로 구성되지는 않는다. 프로그램 저장 영역 및 데이터 저장 영역은 예를 들어 판독 전용 메모리("ROM"), 랜덤 액세스 메모리("RAM"), 전기적 소거 가능한 프로그래밍 가능한 판독 전용 메모리("EEPROM"), 플래시 메모리, 또는 기타 적절한 디지털 메모리 디바이스와 같은 메모리의 상이한 유형들의 조합들을 포함할 수 있다.  전자 프로세서(300)는 메모리(310)에 연결되고, 펌웨어, 하나 이상의 애플리케이션들, 프로그램 데이터, 필터들(filters), 규칙들(rules), 하나 이상의 프로그램 모듈들, 및 다른 실행 가능한 명령들을 포함하는 소프트웨어를 실행한다. 전자 프로세서(300)는 메모리(310)로부터 검색하고, 무엇보다도, 여기에 설명된 제어 프로세스들 및 방법들과 관련된 명령들을 실행한다. 일부 실시예들에서, 메모리(310)는 GAN(145) 및 퍼저 소프트웨어(120)를 저장하거나 포함한다.
입력/출력 인터페이스(320)는 입력을 수신하고 시스템 출력을 제공하도록 구성된다. 입력/출력 인터페이스(320)는 (예를 들어, 하나 이상의 유선 및/또는 무선 연결들을 통해) 시스템(200)의 내부 및 외부 모두의 디바이스들 및/또는 구성요소들로부터 정보 및 신호들을 획득하고 상기 디바이스들 및/또는 구성요소들에 정보 및 신호들을 제공한다.
일부 실시예들에서, 테스트 도구(110)는 추가적인, 더 적은, 또는 상이한 구성 요소들을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 테스트 도구(110)는 트랜시버 또는 별도의 송신 및 수신 구성요소들, 예를 들어 송신기 및 수신기를 포함할 수 있다. 테스트 도구(110)의 구성요소들 중 일부 또는 전부는 시스템(200)의 다른 디바이스들/구성요소들에 분산 및/또는 통합될 수 있다.
도 2로 돌아가서, 일부 실시예들에서, 전자 컨트롤러(210)는 테스트 도구(110)와 유사한 구성요소들을 포함하고, 따라서 테스트 도구(110)의 구성요소들에 대한 설명은 전자 컨트롤러(210)에 유사하게 적용된다. 일부 실시예들에서, 테스트 도구(110)는 합성 테스트 케이스들을 생성하고 테스트 케이스들을 퍼즈 테스팅되는 디바이스들로 전송하기 위해서만 사용된다. 따라서, 이들 실시예들에서, 전자 컨트롤러(210)와 같은 2차 프로세싱 디바이스는 타겟 디바이스(140) 및 제2 ECU(220)에 의해 생성된 데이터를 처리하기 위해 시스템(200)에서 구현될 수 있다. 예를 들어, 일 실시예에서, 전자 컨트롤러(210)는 차량의 온보드 컴퓨팅 디바이스이다. 테스트 도구(110)의 기능들이 테스트 도구(110)에 의해 전체적으로 수행되는 것으로 여기에서 설명되지만, 테스트 도구(110)의 기능들 중 하나 이상이 전자 컨트롤러(210)에 의해 전체적으로 수행되는 것이 가능하다는 점에 유의해야 한다.
도 4는 (판별자 DNN(150)과 같은) 기계 학습 모델을 트레이닝, 컴파일링, 피팅, 및 테스트하기 위한 의사 코드(pseudo-code)(500)의 예시적인 예이다. 의사 코드(500)는 여기에 설명된 구성요소들에서 수행되는 실제 동작들뿐만 아니라 개발 노력 또는 프로세스들의 두 부분을 모두 나타낸다. 따라서, 일부 실시예들에서, 의사 코드(500)의 논리적 단계들 중 일부는 테스트 도구(110)의 전자 프로세서(300)에 의해 실행되는 소프트웨어(예를 들어, 메모리(310)에 저장됨)로 구현된다.
일부 실시예들에서, 의사 코드(500)는 라인 1에서 시작하며, 여기서 BuildModel(testData,epochs) 함수는 판별자 DNN(150)의 트레이닝, 컴파일링, 피팅, 및 테스트를 초기화하기 위해 호출된다. 라인들 2-3에서, 의사 코드(500)는 데이터(예를 들어, 이력 데이터 데이터베이스(165)로부터의 트레이닝 데이터(170))를 수신하고, 데이터를 사전 처리한다. 데이터 사전 처리의 예시적인 실시예가 도 5와 관련하여 아래에서 논의된다. 라인 4에서, 의사 코드(500)는 사전 처리된 트레이닝 데이터(processedData로서 도 4에 도시됨)를 두 개의 데이터 그룹인 trainingData 및 testingData로 동등하게 나눈다. 라인들 5-6에서, 의사 코드(500)는 노멀라이저(normalizer)를 생성하고, trainingData와 testingData를 정규화한다. 데이터 정규화(data normalization)의 예시적인 실시예는 도 5와 관련하여 아래에서 논의된다. 라인 7에서, 판별자 DNN(150)이 컴파일된다.
라인들 8-11에서, 의사 코드(500)는 trainingData를 사용하여 판별자 DNN(150)을 피팅하거나 트레이닝하기 위해 for 루프를 수행하며, 여기서 의사 코드(500)는 미리 결정된 수의 에포크(epochs)(i)에 대해, 판별자 DNN(150)을 트레이닝하고 손실 함수를 최소화한다. 손실 함수는 프로세스를 결정하기 위해 판별자 DNN(150)의 능력의 변화를 평가할 수 있다. 라인 11에 도시된 바와 같이, testingData의 20%의 검증 세트(validation set)가 트레이닝 동안, 판별자 DNN(150)의 피팅을 평가하고 판별자 DNN(150)을 조정하기 위해 손실 함수에 의해 사용될 수 있다.
라인들 12-15에서, 의사 코드(500)는 라인들 8-11에서 트레이닝된 후 판별자 DNN(150)의 성능을 테스트하기 위해 while 루프를 시작하며, 여기서 testingData의 길이가 0보다 큰 동안 testingData 어레이에 포함된 테스트 케이스 또는 마지막 요소는 변수 "testcase"에 할당되고, 테스트 케이스와 연관된 라벨(예를 들어, "통과 케이스(pass case)" 또는 "실패 케이스(fail case)")은 변수 "label"에 할당된다. 라인 14에서, 판별자 DNN(150)은 변수 "testcase"에 할당된 테스트 케이스에 대한 스코어 및 라벨을 생성한다. 판별자 DNN(150)에 의해 생성된 라벨은 변수 "Result"에 할당된다. 라인 15에서, 의사 코드(500)는 변수 "Result"에 할당된 라벨이 변수 "label"에 할당된 라벨과 동일하거나 같은지 여부를 결정한다. 일부 실시예들에서, 라인들 12-15에서 판별자 DNN(150)이 충분치 못하게 수행하는 것으로 결정될 때(예를 들어, 판별자 DNN(150)이 정확하게, testingData에 포함된 테스트 케이스들의 80% 미만으로 분류됨), 라인들 8-11에 기술된 트레이닝 프로세스가 반복되고 트레이닝 프로세스가 완료되면 라인들 12-15에 기술된 테스트 프로세스가 반복된다. 일부 실시예들에서, 판별자 DNN(150)은 새로운 또는 업데이트된 트레이닝 데이터를 사용하여 주기적으로 재트레이닝될 수 있다.
도 6은 퍼즈 테스팅를 위한 합성 테스트 케이스들을 생성하는 예시적인 방법(600)을 설명하는 흐름도이다.
일부 실시예들에서, 방법(600)은 테스트 도구(110)가 트레이닝 데이터, 예를 들어 트레이닝 데이터(170)를 수신할 때 시작한다. 일부 실시예들에서, 트레이닝 데이터(170)는 예를 들어 테스트 도구(110) 또는 다른 ECU로부터 CAN 버스를 통해 메시지를 수신한 데 응답하여 ECU에 의해 생성된 신호를 나타내는 출력 로그 파일들을 포함한다. 일부 실시예들에서, 테스트 도구(110)는 통신 네트워크(230)로부터 직접적으로 트레이닝 데이터(170)를 수신한다. 다른 실시예들에서, 테스트 도구(110)는 이력 데이터 데이터베이스(165) 또는 전자 컨트롤러(210)와 연관된 메모리로부터 트레이닝 데이터(170)를 수신한다.
블록 605에서, 전자 프로세서(300)는 트레이닝 데이터(170)를 사전 처리한다. 트레이닝 데이터(170)는 블록 605에서 사전 처리되어, 그것이 판별자 DNN(150)의 효율적이고 효과적인 트레이닝을 허용할 데이터 포맷임을 보장한다. 트레이닝 데이터(170)를 사전 처리하는 것은, 트레이닝 데이터(170)가 전부는 아니더라도 트레이닝 데이터(170)에 존재하는 많은 패턴들을 나타내고 트레이닝 데이터(170)의 불일치 쪽으로 치우치지 않음을 보장할 수 있다.
일부 실시예들에서, 트레이닝 데이터(170)는 판별자 DNN(150)을 트레이닝하는 데 필요한 트레이닝 데이터의 표준 형태를 따르도록 패딩될(padded) 수 있다. 예를 들어, 판별자 DNN(150)은 트레이닝 데이터가 8바이트의 길이를 가질 것을 요구할 수 있다. 이 경우, 전자 프로세서(300)는 8바이트보다 짧은 트레이닝 데이터(170)에 각각의 인스턴스 또는 테스트 케이스를 패딩할 수 있다. 일부 실시예들에서, 전자 프로세서(300)는 테스트 케이스의 페이로드의 빈 바이트를 16진수 값 0xCC로 채움으로써 트레이닝 데이터(170)에 테스트 케이스를 패딩하여 트레이닝 데이터(170)에 포함된 각 테스트 케이스의 각 페이로드가 동일한 길이가 되게 한다.
일부 실시예들에서, 전자 프로세서(300)는 트레이닝 데이터(170)를 사용하여 판별자 DNN(150)을 트레이닝하기 전에 트레이닝 데이터(170)를 정규화한다. 예를 들어, 트레이닝 데이터(170)는 데이터의 평균이 0인 표준 스케일에서 측정될 수 있도록 테스트 도구(110)에 의해 조작될 수 있다. 일부 실시예들에서, 전자 프로세서(300)는 판별자 DNN(150)을 트레이닝하는 데 사용되기 전에 트레이닝 데이터(170)의 구조를 다른 형태로 재포맷하거나 변환한다. 예를 들어, 일 실시예에서, 전자 프로세서(300)는 트레이닝 데이터(170)를 파이썬 리스트 데이터(Python list data)로부터 텐서 슬라이스(Tensor slices)로 변환한다.
일부 실시예들에서, 트레이닝 데이터(170)에 포함된 인스턴스들의 순서는 트레이닝 데이터(170)에 대해 사전에 존재하는 순서 또는 정의 분할이 없도록 보장하기 위해 트레이닝 데이터(170)가 판별자 DNN(150)을 트레이닝하는 데 사용되기 전에 전자 프로세서(300)에 의해 무작위화된다. 전자 프로세서(300)가 사전 처리 절차의 특정 세트를 수행하는 것으로 여기에서 설명되지만, 전자 프로세서(300)는 여기에 설명된 것들과 상이하거나 추가적인 사전 처리 절차들을 수행할 수 있음을 이해해야 한다.
블록 610에서, 전자 프로세서(300)는 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지 여부를 결정하도록 테스트 케이스를 평가하기 위해 판별자 DNN(예를 들어, 판별자 DNN(150))을 트레이닝하도록 트레이닝 데이터(170)를 사용한다. 일부 실시예들에서, 판별자 DNN(150)은 테스트 케이스가 소프트웨어 취약성 대신에 하드웨어 취약성을, 또는 소프트웨어 취약성 뿐만 아니라 하드웨어 취약성을 노출할 가능성이 있는지 여부를 결정하도록 트레이닝될 수 있다. 판별자 DNN(150)을 트레이닝하는 예는 도 4와 관련하여 위에서 설명되었다.
블록 615에서, 전자 프로세서(300)는 소프트웨어 취약성을 노출할 가능성이 있는 테스트 케이스를 생성하도록 생성자 DNN(예를 들어, 생성자 DNN(160))을 트레이닝하기 위해 판별자 DNN(150)을 사용하며, 여기서 전자 프로세서(300)는 생성자 DNN(160)에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지 여부를 결정하고 생성자 DNN(160)에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있다는 결정을 생성자 DNN(160)에 전송함으로써 생성자 DNN(160)을 트레이닝하기 위해 판별자 DNN(150)을 사용한다.
예를 들어, 일부 실시예들에서, 생성자 DNN(160)은 트레이닝 데이터(170)의 포맷에 대응하는 무작위화된 입력이 공급되고(seed) 판별자 DNN(150)을 사용하여 트레이닝되된다. 생성자 DNN(160)이 판별자 DNN에 의해 트레이닝되는 동안, 생성자 DNN(160)은 테스트 케이스를 생성하고 생성한 테스트 케이스를 평가를 위해 판별자 DNN(150)으로 전송한다. 판별자 DNN(150)은 생성자 DNN(160)에 의해 생성된 테스트 케이스를 스코어링하고 라벨링한다. 일부 실시예들에서, 판별자 DNN(150)이 테스트 케이스를 "통과 케이스"로 결정할 때, 판별자 DNN(150)은 "통과 케이스"의 라벨, 테스트 케이스와 연관된 스코어, 또는 둘 모두를 생성자 DNN(160)에 전송할 수 있다. 스코어에 기초하여, 생성자 DNN(160)은 출력하고 있는 테스트 케이스들을 조정할 수 있고, 그 조정에 기초하여 평가를 위해 새로운 테스트 케이스를 판별자 DNN(150)에 전송할 수 있다. 생성자 DNN(160)에 의한 조정 및 판별자 DNN(150)에 의한 평가의 프로세스는, 생성자 DNN(160)이 판별자 DNN(150)에 의해 "실패 케이스"로 라벨링된 미리 결정된 수의 테스트 케이스들을 생성했다고 판별자 DNN(150)이 결정할 때까지, 계속될 수 있다. 예를 들어, 판별자 DNN(150)은 생성자 DNN(160)이 생성된 테스트 케이스들의 총 수 중 80% "실패 케이스"의 비율을 달성하도록 요구할 수 있다. 일부 실시예들에서, 판별자 DNN(150)은 생성자 DNN(160)으로 미리 결정된 수의 트레이닝 세션들 또는 에포크들을 수행할 수 있다. 각각의 트레이닝 세션에서, 생성자 DNN(160)은, 생성자 DNN(160)이 현재 트레이닝 세션을 통과하고 다음 트레이닝 세션으로 이동할 수 있기 전에, 판별자 DNN(150)에 의해 "실패 케이스"로 라벨링된 미리 결정된 수의 테스트 케이스들을 생성하도록 요구될 수 있다. 일부 실시예들에서, 미리 결정된 수의 트레이닝 세션들이 완료될 때, 생성자 DNN(160)은 트레이닝되고, 퍼저 소프트웨어(120)에 보낼 테스트 케이스들을 생성할 준비가 된 것으로 간주된다. 일부 실시예들에서, 생성자 DNN(160)은 주기적으로 재트레이닝될 수 있다.
블록 620에서, 생성자 DNN(160)이 트레이닝될 때, 전자 프로세서(300)는 생성자 DNN(160)을 사용하여 하나 이상의 테스트 케이스들을 생성한다.
예를 들어, 일 실시예에서, 생성자 DNN(160)이 0x6XX 범위의 중재 ID를 갖는 테스트 케이스들이 실패를 유발할 가능성이 더 높다는 것을 판별자 DNN(150)으로부터 학습한 경우, 생성자 DNN(160)은 0x6XX 범위의 중재 ID를 갖는 합성 테스트 케이스들을 생성할 것이다.
일부 실시예들에서, 생성자 DNN(160)이 합성 테스트 케이스들을 정확하게 생성할 수 있을 때, 생성자 DNN(160)에 의해 생성된 하나 이상의 합성 테스트 케이스들은 퍼저 소프트웨어(120)로 전송된다. 퍼저 소프트웨어(120)는 타겟 디바이스(140)에 포함된 하나 이상의 소프트웨어 취약성을 식별하기 위해 합성 테스트 케이스들을 사용한다. 예를 들어, 퍼저 소프트웨어(120)는 하나 이상의 테스트 케이스들에 기초하여 타겟 디바이스(140)에 하나 이상의 메시지들을 전송할 수 있다. 방법(600)이 GAN(145)과 같은 일반적인 적대적 네트워크를 사용하여 구현되는 것으로 여기에서 논의되지만, 방법(600)은 다른 기계 학습 방법들을 사용하여 구현될 수 있다는 것을 이해해야 한다.
일부 실시예들에서, 테스트 케이스들이 통과하면(예를 들어, 퍼저 소프트웨어(120)가 타겟 디바이스(140)에서 에러가 발생한 것으로 결정하거나 그로부터 에러를 수신하지 않음), 퍼저 소프트웨어(120)는 통과한 테스트 케이스의 역을 타겟 디바이스(140)로 전송한다. 일부 실시예들에서, 테스트 케이스가 실패하면(예를 들어, 퍼저 소프트웨어(120)가 타겟 디바이스(140)로부터 에러를 수신하거나 타겟 디바이스(140)가 응답하지 않음), 퍼저 소프트웨어(120)는 실패를 검증하도록 유사한 테스트 케이스들을 타겟 디바이스(140)로 전송한다. 일부 실시예들에서, 퍼저 소프트웨어(120)가 테스트 동안 타겟 디바이스(140)로부터 수신하거나 타겟 디바이스(140)에 관해 생성하는 데이터는 전자 프로세서(300)에 의해 예를 들어 출력 로그 파일로서 이력 데이터 데이터베이스(165)로 전송된다.
일부 실시예들에서, 퍼저 소프트웨어(120)가 테스트 동안 타겟 디바이스(140)로부터 수신하거나 타겟 디바이스(140)에 관해 생성하는 데이터는 전자 프로세서(300)에 의해 예를 들어 출력 로그 파일로서 디스플레이 디바이스(예를 들어, 테스트 도구(110)에 포함된 디스플레이 디바이스)로 전송되거나 출력된다. 소프트웨어 기술자는 디스플레이 디바이스를 통해 출력 로그를 보고 출력 로그에 포함된 데이터를 사용하여 출력 로그에 포함된 소프트웨어 취약성을 해결하기 위한 소프트웨어 패치(컴퓨터 실행 가능한 또는 판독 가능한 명령들)를 생성할 수 있다. 예를 들어, 일부 실시예들에서, 전자 프로세서(300)는 소프트웨어 기술자로부터 소프트웨어 취약성을 해결하기 위해 새로운 또는 수정된 컴퓨터 실행 가능한 명령들을 수신하고 출력 로그에서 소프트웨어 취약성과 연관된 것으로 기록된 새로운 또는 수정된 컴퓨터 실행 가능한 명령들을 타겟 디바이스(140)로 전송한다. 새로운 또는 수정된 컴퓨터 실행 가능한 명령들은 타겟 디바이스(140)의 메모리에 이전에 저장된 컴퓨터 실행 가능한 명령들을 대체한다. 새로운 또는 수정된 컴퓨터 실행 가능한 명령들은, 미래에 전자 디바이스가 출력 로그에 소프트웨어 취약성과 관련된 것으로 기록되게 한 합성 테스트 케이스와 유사한 데이터를 수신할 때, 타겟 디바이스(140)가 오작동하는 것을 방지하도록 설계된다.
다양한 특징들, 장점들, 및 실시예들이 다음의 청구 범위에서 설명된다.

Claims (18)

  1. 퍼즈 테스팅(fuzz testing)을 위한 합성 테스트 케이스들을 생성하기 위한 시스템에 있어서:
    상기 시스템은 전자 프로세서를 포함하고,
    상기 전자 프로세서는:
    트레이닝 데이터를 사전 처리하고;
    상기 트레이닝 데이터를 사용하여 테스트 케이스가 소프트웨어 취약성(software vulnerability)을 노출할 가능성이 있는지를 결정하기 위해 테스트 케이스를 평가하도록 판별자 DNN을 트레이닝하고;
    상기 판별자 DNN을 사용하여 소프트웨어 취약성을 노출할 가능성이 있는 테스트 케이스를 생성하기 위해 생성자 DNN을 트레이닝하고 - 상기 전자 프로세서는 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지를 결정하고 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지에 대한 결정을 생성자 DNN에 전송함으로써 판별자 DNN을 사용하여 생성자 DNN을 트레이닝함 -;
    생성자 DNN이 트레이닝될 때 생성자 DNN을 사용하여 하나 이상의 테스트 케이스들을 생성하도록 구성되는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템.
  2. 제1항에 있어서, 상기 결정은 라벨 및 스코어를 포함하는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템.
  3. 제1항에 있어서, 상기 전자 프로세서는 미리 결정된 수의 트레이닝 세션들이 완료될 때 생성자 DNN이 트레이닝된 것으로 결정하도록 구성되는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템.
  4. 제3항에 있어서, 상기 전자 프로세서는 생성자 DNN이 소프트웨어 취약성을 노출할 가능성이 있는 미리 결정된 수의 테스트 케이스들을 생성할 때 트레이닝 세션이 완료된 것으로 결정하도록 구성되는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템.
  5. 제1항에 있어서, 상기 전자 프로세서는 트레이닝 데이터를 패딩하고, 트레이닝 데이터를 정규화하고, 트레이닝 데이터를 재포맷하고, 트레이닝 데이터의 순서를 무작위화하는 것을 포함하는 그룹으로부터 선택된 적어도 하나를 수행함으로써 트레이닝 데이터를 사전 처리하도록 구성되는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템.
  6. 제1항에 있어서, 상기 전자 프로세서는 또한 이력 데이터 데이터베이스, 타겟 디바이스, 또는 양쪽 모두로부터 트레이닝 데이터를 수신하도록 구성되는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템.
  7. 제1항에 있어서, 상기 전자 프로세서는:
    생성자 DNN으로부터의 하나 이상의 테스트 케이스를 퍼저(fuzzer)로 전송하고;
    상기 하나 이상의 테스트 케이스에 기초하여 하나 이상의 메시지를 타겟 디바이스 또는 소프트웨어 모듈에 전송함으로써 상기 퍼저를 사용하여 상기 타겟 디바이스 또는 상기 소프트웨어 모듈을 테스트하도록 구성되는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템.
  8. 제7항에 있어서, 상기 타겟 디바이스는 차량에 포함된 ECU이며, CAN 버스를 통하여 메시지들을 수신 및 전송하도록 구성되는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템.
  9. 제1항에 있어서, 상기 전자 프로세서는:
    생성자 DNN으로부터의 하나 이상의 테스트 케이스를 퍼저로 전송하고;
    상기 퍼저를 사용하여 처리되지 않은 예외들에 대한 소스 코드를 평가하도록 구성되는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 시스템.
  10. 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법에 있어서:
    트레이닝 데이터를 사전 처리하는 단계;
    상기 트레이닝 데이터를 사용하여 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지를 결정하기 위해 테스트 케이스를 평가하도록 판별자 DNN을 트레이닝하는 단계;
    상기 판별자 DNN을 사용하여 소프트웨어 취약성을 노출할 가능성이 있는 테스트 케이스를 생성하기 위해 생성자 DNN을 트레이닝하는 단계로서, 상기 판별자 DNN은 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지를 결정하고 생성자 DNN에 의해 생성된 테스트 케이스가 소프트웨어 취약성을 노출할 가능성이 있는지에 대한 결정을 생성자 DNN에 전송함으로써 생성자 DNN을 트레이닝하는, 상기 판별자 DNN을 사용하여 생성자 DNN을 트레이닝하는 단계; 및
    생성자 DNN이 트레이닝될 때 생성자 DNN을 사용하여 하나 이상의 테스트 케이스들을 생성하는 단계를 포함하는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법.
  11. 제10항에 있어서, 상기 결정은 라벨 및 스코어를 포함하는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법.
  12. 제10항에 있어서, 미리 결정된 수의 트레이닝 세션들이 완료될 때 생성자 DNN이 트레이닝된 것으로 결정하는 단계를 더 포함하는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법.
  13. 제12항에 있어서, 생성자 DNN이 소프트웨어 취약성을 노출할 가능성이 있는 미리 결정된 수의 테스트 케이스들을 생성할 때 트레이닝 세션이 완료된 것으로 결정하는 단계를 더 포함하는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법.
  14. 제10항에 있어서, 트레이닝 데이터를 사전 처리하는 것은 트레이닝 데이터를 패딩하고, 트레이닝 데이터를 정규화하고, 트레이닝 데이터를 재포맷하고, 트레이닝 데이터의 순서를 무작위화하는 것을 포함하는 그룹으로부터 선택된 적어도 하나를 수행하는 것을 포함하는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법.
  15. 제10항에 있어서, 이력 데이터 데이터베이스, 타겟 디바이스, 또는 양쪽 모두로부터 트레이닝 데이터를 수신하는 단계를 더 포함하는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법.
  16. 제10항에 있어서,
    생성자 DNN으로부터의 하나 이상의 테스트 케이스를 퍼저로 전송하는 단계; 및
    상기 하나 이상의 테스트 케이스에 기초하여 하나 이상의 메시지를 타겟 디바이스 또는 소프트웨어 모듈에 전송함으로써 상기 퍼저를 사용하여 상기 타겟 디바이스 또는 상기 소프트웨어 모듈을 테스트하는 단계를 더 포함하는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법.
  17. 제16항에 있어서, 상기 타겟 디바이스는 차량에 포함된 ECU이며, CAN 버스를 통하여 메시지들을 수신 및 전송하도록 구성되는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법.
  18. 제10항에 있어서,
    생성자 DNN으로부터의 하나 이상의 테스트 케이스를 퍼저로 전송하는 단계; 및
    상기 퍼저를 사용하여 처리되지 않은 예외들에 대한 소스 코드를 평가하는 단계를 더 포함하는, 퍼즈 테스팅을 위한 합성 테스트 케이스들을 생성하기 위한 방법.
KR1020220020784A 2021-02-19 2022-02-17 퍼즈 테스팅을 위한 합성 테스트 케이스 생성 KR20220118937A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US202163151384P 2021-02-19 2021-02-19
US63/151,384 2021-02-19

Publications (1)

Publication Number Publication Date
KR20220118937A true KR20220118937A (ko) 2022-08-26

Family

ID=82702263

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220020784A KR20220118937A (ko) 2021-02-19 2022-02-17 퍼즈 테스팅을 위한 합성 테스트 케이스 생성

Country Status (3)

Country Link
US (1) US11762761B2 (ko)
KR (1) KR20220118937A (ko)
DE (1) DE102022201663A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11592494B1 (en) * 2022-01-26 2023-02-28 Schweitzer Engineering Laboratories, Inc. Fuzzer test system for applications in electric power systems
US20230319068A1 (en) * 2022-04-01 2023-10-05 Vectra Ai, Inc. Method, product, and system for analyzing a computer network to identify attack paths using a software representation that embodies network configuration and policy data for security management

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10146893B1 (en) 2015-03-27 2018-12-04 Symantec Corporation Systems and methods for evaluating electronic control units within vehicle emulations
EP3284003B1 (en) 2015-04-14 2021-02-24 Gigavation, Inc. Paravirtualized security threat protection of a computer-driven system with networked devices
US10402561B2 (en) 2015-10-01 2019-09-03 Samsung Electronics Co., Ltd. Apparatus and method for protection of critical embedded system components via hardware-isolated secure element-based monitor
WO2017127639A1 (en) 2016-01-20 2017-07-27 The Regents Of The University Of Michigan Exploiting safe mode of in-vehicle networks to make them unsafe
US11341410B1 (en) * 2017-12-07 2022-05-24 Triad National Security, Llc Subsurface stress criticality associated with fluid injection and determined using machine learning
US20190258953A1 (en) 2018-01-23 2019-08-22 Ulrich Lang Method and system for determining policies, rules, and agent characteristics, for automating agents, and protection
KR102506931B1 (ko) 2018-02-27 2023-03-07 현대자동차 주식회사 전자화 장비 보안 검사 시스템 및 그 방법
US20200125943A1 (en) * 2018-10-18 2020-04-23 International Business Machines Corporation Adversial deep neural network fuzzing
US10915436B2 (en) * 2018-12-08 2021-02-09 International Business Machines Corporation System level test generation using DNN translation from unit level test
US11016840B2 (en) * 2019-01-30 2021-05-25 International Business Machines Corporation Low-overhead error prediction and preemption in deep neural network using apriori network statistics
US11694090B2 (en) * 2019-04-10 2023-07-04 International Business Machines Corporation Debugging deep neural networks
US11487996B2 (en) * 2019-06-03 2022-11-01 Dell Products L.P. Real-time predictive maintenance of hardware components using a stacked deep learning architecture on time-variant parameters combined with a dense neural network supplied with exogeneous static outputs
US11323177B2 (en) * 2020-09-15 2022-05-03 Intelligent Fusion Technology, Inc. Method and system for free space optical communication performance prediction

Also Published As

Publication number Publication date
DE102022201663A1 (de) 2022-08-25
US20220269591A1 (en) 2022-08-25
US11762761B2 (en) 2023-09-19

Similar Documents

Publication Publication Date Title
US11494295B1 (en) Automated software bug discovery and assessment
KR20220118937A (ko) 퍼즈 테스팅을 위한 합성 테스트 케이스 생성
CN111242296A (zh) 自动模型构建搜索空间缩减
US20230013544A1 (en) Method, Apparatus and System for Detecting Abnormal Operating States of a Device
US11803732B2 (en) Device and method for classifying data in particular for a controller area network or an automotive ethernet network
CN110120935B (zh) 用于在通信网络中识别数据流中的异常的方法和设备
JP2022504554A (ja) モデルベース推論器のためのパラメトリックデータモデリング
US11776330B2 (en) Closed-loop diagnostic model maturation for complex systems
US7921337B2 (en) Systems and methods for diagnosing faults in electronic systems
RU2755354C1 (ru) Диагностическая система и способ обработки данных транспортного средства
US20210326677A1 (en) Determination device, determination program, determination method and method of generating neural network model
CN108965085A (zh) 一种电子控制单元ecu的检错方法及装置
IT202100013754A1 (it) "Procedimento di protezione da attacchi informatici al veicolo e corrispondente dispositivo"
CN105446314A (zh) 使用安全机制的传感器系统
CN112606779B (zh) 一种汽车故障预警方法及电子设备
Xie et al. A model of software fault detection and correction processes considering heterogeneous faults
CN113359657B (zh) Ecu诊断配置码校验方法及其系统、电子控制单元
Rinaldo et al. Integrated analysis of safety and security hazards in automotive systems
US20230021965A1 (en) Methods and systems for assessing printed circuit boards
CN111989896A (zh) 设备的网络中的依赖控制
US20160224456A1 (en) Method for verifying generated software, and verifying device for carrying out such a method
US20220245260A1 (en) Method for checking the security of a technical unit
US20130332779A1 (en) Method for automatically monitoring at least one component of a physical system
KR20210023722A (ko) 요구 사항에 대한 시스템의 테스트 방법
US20240121352A1 (en) Self-configuring recording device for image data of an imaging sensor device