Industry Issue

Fuzz testing의 상호 운용성 문제

Software Risk Analysis
작성자
관리자
작성일
2024-03-11 13:51
조회
93

Fuzz testing의 상호 운용성 문제

Fuzz testing에서 상호 운용성 문제를 극복하는 방법을 이해하면 효율적이고 포괄적인 결과를 얻을 수 있습니다.

Fuzz testing에서 상호 운용성이란 테스트 중인 시스템(the system under test, SUT)이 효율적이고 포괄적인 테스트를 위해 fuzz test data를 수신할 수 있는 올바른 상태에 있음을 의미합니다. Defensics®는 사용자가 테스트하는 프로토콜을 인식하는 세대별 모델 기반 fuzzer 입니다. 모든 메시지가 구성되어야 하는 방법, 각 필드 유형, 체크섬, 길이 및 세션 식별자와 같은 필드의 의미(메시지 순서 및 다른 메시지의 필드 간 관계 포함)를 식별합니다. 따라서 특정 위치에서 특이점을 가진 매우 높은 품질의 테스트 케이스를 생성할 수 있으며, 이는 취약점을 조사하기 위해 대상 소프트웨어를 다양한 상태로 이끌 수 있다는 것을 의미합니다.

Defensics 상호 운용성 테스트 보기

[그림 1] Defensics 상호 운용성 테스트 보기

Fuzzing을 시작하기 전에 fuzzer와 시험 대상 시스템(SUT)의 상호 운용성을 보장하는 것이 중요합니다. 이는 SUT가 정상 입력과 비정상 입력을 처리할 수 있는 상태가 될 수 있도록 하기 위한 것입니다. SUT가 올바른 상태가 아니면 fuzzing이 효율적이지 않거나 실행되지 않을 수도 있습니다. 따라서 fuzzing이 제대로 작동하려면 시험 대상 시스템이 fuzzer의 입력을 올바르게 처리할 수 있는 상태에 있는지 확인하는 것이 중요합니다.

 

유효한 테스트 사례

프로토콜 메시지는 전송된 메시지와 예상되는 응답 메시지를 포함하여 하나의 테스트 케이스를 구성합니다. Defensics® 용어에서는 이상이 없는 메시지를 유효한 메시지라고 합니다. 따라서 유효한 메시지만 있는 테스트 케이스를 유효한 테스트 케이스 또는 간단히 유효한 케이스라고 합니다.

예를 들어 Bluetooth AVRCP 프로토콜에 대한 하나의 유효한 테스트에는 Get Capability 요청 메시지와 예상되는 Capability 응답 메시지로 구성되어 있습니다. 이 테스트 시퀀스에는 요청 메시지, 응답 메시지, 그리고 테스트 대상과의 L2CAP 연결 설정에 필요한 메시지들이 포함되어 있습니다.

Defensics Bluetooth AVRCP 테스트 제품군의 Get Capability 테스트 시퀀스

[그림 2] Defensics Bluetooth AVRCP 테스트 제품군의 Get Capability 테스트 시퀀스

다양한 프로토콜에서 통신 구성 요소의 역할은 메시지 유형과 예상되는 통신 방향에 영향을 미칩니다. 예를 들어 서버 방향 테스트 중에 클라이언트 측에서 통신을 시작한다고 가정해 보겠습니다. 서버 역할은 프로토콜에 따라 컨트롤러, 게이트웨이, 중앙 또는 액세스 지점이라고 하는 반면 클라이언트 방향 테스트에서는 테스트 대상이 통신을 시작한다고 가정합니다.

Defensics®에는 일반적으로 각 역할에 대한 자체적인 테스트 스위트를 갖고 있습니다. AVRCP 예에서 서버 대상을 테스트하는 Defensics Bluetooth AVRCP 테스트 스위트는 왼쪽에 있고 클라이언트 대상을 테스트하는 Defensics Bluetooth AVRCP 컨트롤러 테스트 스위트는 오른쪽에 있습니다. Defensics 테스트 스위트에서 테스트한 모든 프로토콜 메시지는 해당 테스트 스위트의 데이터시트에 나열되어 있습니다.

테스트 케이스 보기에서 AVRCP Get Capability 유효한 테스트 케이스를 보여주는 Defensic Bluetooth AVRCP 컨트롤러 테스트 제품군

[그림 3] 테스트 케이스 보기에서 AVRCP Get Capability 유효한 테스트 케이스를 보여주는 Defensic Bluetooth AVRCP 컨트롤러 테스트 제품군

상호 운용성 확인

사용자가 테스트 대상에 대해 상호 운용성 검사를 실행할 때 각 테스트 그룹에서 유효한 테스트 케이스를 실행하여 검사를 진행합니다. 테스트 대상이 유효한 테스트 케이스에 대해 예상되는 응답을 제공하면 유효한 테스트 케이스에 대한 상호 운용성 검사가 통과됩니다. 유효한 케이스가 실패하는 경우, 테스트 대상이 해당 기능을 지원하지 않을 수도 있으며, 기능이 활성화되지 않았을 수도 있습니다. 또는 테스트 대상이나 테스트 스위트 설정이 잘못되었을 수도 있고, 타임아웃이 너무 엄격하게 설정되어 있을 수도 있습니다.

어떤 경우든 유효한 테스트 케이스가 통과하지 않으면 SUT가 비정상 메시지를 수신할 수 있는 올바른 상태가 아니거나 모든 비정상 메시지를 수신하지 않게 됩니다(다중 메시지 테스트 케이스의 경우). 상호 운용성 검사 결과에 따라 실패한 테스트 그룹은 테스트 시간을 줄이기 위해 테스트 계획에서 제외될 수 있습니다.

테스트 대상에서 암호화가 지원되지 않음을 보여주는 Defensics Bluetooth LE 링크 계층 테스트 제품군과의 상호 운용 테스트

[그림 4] 테스트 대상에서 암호화가 지원되지 않음을 보여주는 Defensics Bluetooth LE 링크 계층 테스트 제품군과의 상호 운용 테스트 

테스트 대상은 종종 프로토콜의 선택적 메시지, 특정 유형의 테스트 대상에만 사용되는 메시지 그리고 다른 프로토콜 버전으로 인해 모든 프로토콜 메시지를 지원하지 않을 수 있습니다. 상호 배타적인 테스트 케이스가 있을 수도 있습니다. 테스트 대상이 한 가지 유형의 메시지 전송 채널(예: TCP)을 지원하지 않는 경우 다른 유형의 채널(예: UDP)은 동시에 지원되지 않습니다.

클라이언트 방향 테스트는 통신을 시작하기 위해 사용자 작업이 필요할 수도 있고 지원되는 기능이 더 제한되는 경우가 많기 때문에 상호 운용성이 더 어렵다고 볼 수 있습니다. 예를 들어 Bluetooth 클라이언트의 경우 사용자가 연결을 선택하고 작업을 시작해야 할 수 있습니다. 이러한 경우 수동 작업으로 인해 시간 초과가 발생할 수 있으며 테스트를 효율적으로 수행하려면 스크립팅이 필요합니다.

프로토콜 매개변수, 예상 응답, 메시징 순서 또는 fuzzer와 테스트 대상 간의 메시징 타이밍을 변경하여 상호 운용성을 높일 수 있습니다. 다음 섹션에서 보여드릴 것은 테스트 대상의 다양한 요구에 대응하기 위해 Defensics®에서 제공하는 구성 방법을 요약해 보았습니다.

 

시퀀스 파일 및 설정

유효한 테스트 케이스는 시퀀스 파일이라는 XML 형식의 파일로 제공됩니다. 테스트 스위트는 SUT의 다양한 프로토콜 기능 및 기능에 대한 상호 운용성 검사를 수행하기 위해 여러 시퀀스 파일을 제공할 수 있습니다. 예를 들어 다양한 메시지 전송 채널에 대한 유효한 사례는 사용자가 선택할 수 있는 여러 시퀀스 파일에서 찾을 수 있습니다. 다른 프로토콜 기능에 대해 다른 시퀀스 파일이 있을 수도 있습니다.

Defensics Bluetooth OBEX 서버 테스트 스위트에는 단일 응답 모드를 사용하거나 사용하지 않고 MAP, PBAP, OPP 및 FTP 기능을 테스트하기 위한 자체 시퀀스 파일이 있습니다.

[그림 5] Defensics Bluetooth OBEX 서버 테스트 스위트에는 단일 응답 모드를 사용하거나 사용하지 않고 MAP, PBAP, OPP 및 FTP 기능을 테스트하기 위한 자체 시퀀스 파일이 있습니다. 

일부 테스트 스위트는 단일 시퀀스 파일만 제공하고 일부는 사용자가 편집할 수 있는 시퀀스를 제공하지 않습니다. 리로드 설정을 사용하여 유효한 테스트 케이스 시퀀스를 변경할 수도 있습니다. 예를 들어, 전송 채널이 스위트 로드 시, 기본 설정 값이 UDP인 경우에만 TCP가 지원되는 유효한 테스트 케이스를 사용하여 테스트 스위트를 리로드할 수 있습니다.

대부분의 경우 최대 상호 운용성과 전체 테스트 범위를 달성하기 위해 하나의 올바른 구성을 찾는 것으로 충분합니다. 그러나 테스트 대상이 여러 전송 채널 및 기능을 지원하는 경우 사용 가능한 모든 테스트 시퀀스는 최대 테스트 범위를 달성하기 위해 다른 설정으로 실행되어야만 합니다.

 

메시지 순서 및 프로토콜 매개변수

하나의 시퀀스에는 테스트 스위트 또는 테스트 대상에 특정한 매개변수를 보유할 수 있는 여러 발신 프로토콜 메시지가 포함될 수 있습니다. 주소 및 포트와 같은 것들은 명확하지만 구성 가능한 테스트 세트 설정으로 나타날 수 있는 사소한 구성 매개변수가 많이 있습니다. 개별 설정으로 모두 제공하기에는 선택적 매개변수가 너무 많다면 테스트 도구 모음 개발자가 선택해야만 합니다. 가장 일반적인 매개변수 중 일부는 설정으로 제공할 수 있으며 나머지는 시퀀스 파일을 수동으로 편집하여 변경할 수 있습니다.

매개 변수 기본값은 테스트 대상의 최소 요구 사항이 있는 알려진 양호한 값으로 설정됩니다. 이것은 상호 운용성을 극대화하는 것입니다. 종종 유효한 테스트 케이스의 값은 0이고 다른 값은 비정상적인 테스트 케이스에서 나타납니다.

기본 값이 있는 Defensics Bluetooth L2CAP 테스트 스위트 구성 설정

[그림 6] 기본 값이 있는 Defensics Bluetooth L2CAP 테스트 스위트 구성 설정

매개변수 뿐만 아니라 메시지의 타이밍과 순서도 상호 운용성 문제를 일으킬 수 있습니다. 타이밍도 테스트 속도에 영향을 미칩니다. 예를 들어 이상 현상으로 인해 입력 메시지가 나타나지 않을 때 입력 제한 시간을 늘리면 Fuzzing 속도가 느려집니다. 설계자는 속도를 먼저 선택할 수 있지만 건너뛰는 경우의 수를 줄이기 위해 응답이 느린 테스트 대상으로 시간 제한 값을 늘려야 하는 경우가 있습니다.

Defensics Bluetooth 테스트 스위트의 타이밍 구성

[그림 7] Defensics Bluetooth 테스트 스위트의 타이밍 구성

테스트 시퀀스는 종종 테스트 대상의 응답 메시지를 기다립니다. 응답이 알려진 유형이어야 하고 유효한 응답으로 간주되는 특정 매개변수를 보유해야 한다는 요구사항이 있을 수 있습니다. 세션 ID 또는 QoS 수준과 같은 추가 통신을 위해 응답의 일부 매개 변수가 필요할 수 있습니다. 일반적으로 테스트 스위트는 응답 메시지에 관대하게 열려 있는 편이지만 대상이 예상대로 응답하지 않으면 사용자가 시퀀스 파일에서 테스트 시퀀스를 변경해야 합니다.

 

결론

기본적으로 테스트 데이터는 유효하지 않거나, 형식이 잘못되었거나, 예상치 못한 것이기 때문에 상호 운용성은 fuzz testing 중에 첫 번째 문제는 아닙니다. 그러나 테스트 범위를 최대화하려면 테스트 대상이 테스트 데이터를 수신할 수 있는 올바른 상태이어야 합니다. 올바른 테스트 상태를 보장하려면 테스트 스위트와 테스트 대상 간의 상호 운용성이 필요합니다.

Defensics®팀은 다양한 구현과 상호 운용성을 위해 의미 있는 테스트 시퀀스를 생성하지만 때로는 상호 운용성 테스트가 명백한 이유 없이 실패를 하기도 합니다. 테스트 스위트 설명서에 문제 해결책이 없을 때 상호 운용성 문제가 발생할 경우, 지원팀이 도움을 드리고 있습니다. 테스트 대상에 대한 샘플이 없는 경우가 있기 때문에 개발자는 항상 상호 운용성을 지속적으로 개선하기 위해 현장에서 피드백을 받고자 노력하고 있습니다.

 

Defensics 더 알아보기 CLICK!!!

원문 게시일: 2023.07.05

원문 기고자: Kari Hulkko

출처: https://www.synopsys.com/blogs/software-security/challenges-of-interoperability-in-fuzz-testing.html

/about-us/inquiry/
https://www.youtube.com/@softflow2018
https://blog.naver.com/softflow_group
#