퍼즈 테스트에 대한 포괄적인 가이드
게시 됨: 2021-05-17보안 테스트는 비즈니스 목적이든 상업적 용도이든 상관없이 소프트웨어가 공식 출시될 준비가 되었는지 확인하는 가장 중요한 단계 중 하나입니다. 이를 통해 소프트웨어에 있을 수 있는 취약점을 감지하고 해커가 이러한 결함을 이용할 경우 대응책을 개발할 수 있습니다.
보안 테스트에 관심이 있다면 지금 여기에서 사실을 알 수 있지만 한 가지 알아야 할 것은 위험 평가, 침투 테스트, 취약성 스캔과 같은 보안 테스트를 수행하는 모든 종류의 방법이 있다는 것입니다. 그리고 이미 보안 테스트에 약간 익숙하다면 '퍼즈 테스트'라는 용어를 들어봤을 것입니다.
Fuzz 테스트는 오늘날 업계에서 비교적 일반적인 테스트 기술입니다. 특히 Microsoft 및 Google과 같은 대기업이 10년 넘게 이를 사용해 왔기 때문입니다. 그러나 놀라운 것은 표준 기술임에도 불구하고 많은 사람들이 이에 대해 알고 있지 않다는 것입니다. 하지만 이 가이드는 정의부터 시작하여 퍼즈 테스팅이 무엇인지 설명하는 것을 목표로 합니다.
퍼즈 테스팅이란?
퍼지 테스트 또는 다른 사람들이 '퍼징'이라고 부르는 것은 프로그램에 유효하지 않거나 임의의 데이터를 입력하여 악용 가능한 오류로 이어질 수 있는 취약점을 감지하는 것과 관련됩니다. 이 입력은 파일 형식이거나 사용자가 직접 입력할 수 있습니다. 예를 들어, 어떤 종류의 계산 프로그램을 구축하는 경우 일반적으로 숫자나 수학 연산을 입력해야 합니다. 그러나 퍼지 테스트를 수행하는 경우 문자나 특수 문자와 같은 잘못된 입력을 입력해야 합니다.
그렇게 하면 프로그램이 충돌하거나 다른 종류의 오류가 발생하면 프로그래머는 취약점이 있다고 가정하고 문제를 해결하기 위해 코딩 수정 작업을 할 수 있습니다. 언뜻 보면 퍼즈 테스팅이 취약점 스캐닝이나 침투 테스팅과 같은 다른 기술과 같다고 생각할 수 있지만, 그 인기에는 이유가 있다.
기업은 왜 Fuzz Testing을 사용합니까?
보안 테스트와 관련하여 만능 솔루션은 없습니다. 각 방법은 다른 방법으로는 감지할 수 없는 문제를 감지할 수 있습니다. 일부는 더 낮은 운영 비용이 필요하고 다른 일부는 수행하기 쉽습니다. 모든 보안 테스트 기술과 마찬가지로 퍼즈 테스트는 고유한 방식으로 고유합니다. 다음은 기업이 퍼즈 테스팅을 사용하도록 하는 몇 가지 이점입니다.
- 단순성: 퍼지 테스트가 어떻게 작동하는지 이미 알고 있습니다. 프로그램에 잘못된 입력을 입력하는 문제입니다. 일반적으로 프로세스의 단순성은 보안 테스트 측면에서 기술과 경험이 부족한 개인이나 조직에 큰 이점으로 작용합니다.
- 자동화: 보안 테스트는 소프트웨어 및 애플리케이션 개발에서 중요한 단계일 수 있지만 종종 프로그램을 지속적으로 테스트하는 것 외에 수행해야 할 다른 작업이 있습니다. 그러나 fuzzer를 사용하여 전체 프로세스를 자동화할 수 있으므로 fuzz 테스트에서는 이야기가 다릅니다.
Fuzzer는 필요한 명령과 조건이 주어지면 자동으로 프로그램에 데이터를 입력하는 역할을 하는 도구입니다. 퍼즈 테스팅이 비즈니스 자동화를 가능하게 한다는 사실은 기업에 이상적인 테스팅 기술입니다.
- 편리함: 일반적으로 테스트할 때 버그 가능성을 줄이고 프로그램의 보안을 최대화하기 위해 가능한 한 많은 도구를 사용해야 합니다. 퍼지 테스트는 자동화 가능하고 간단하기 때문에 소프트웨어 보안을 강화하는 편리한 방법입니다.
일반적으로 퍼징은 간단하고 구현하기 쉽지만 퍼즈 테스트에 대한 모든 종류의 접근 방식이 있다는 점은 주목할 가치가 있습니다. 사용하는 유형에 따라 테스트 프로세스의 난이도와 복잡성이 달라질 수 있습니다. 그런 점에서 지금은 다양한 유형의 퍼즈 테스트에 대해 이야기하기에 좋은 시간일 수 있습니다.
퍼지 테스트에 대한 다양한 접근 방식
여러 유형의 퍼지 테스트가 있지만 입력을 다르게 생성한다는 점을 제외하면 대부분 서로 비슷합니다. 그럼에도 불구하고 퍼지 테스트에는 네 가지 접근 방식이 있습니다.
- Dumb Fuzzing: 입력을 완전히 무작위로 생성하려는 경우 일반적으로 Dumb Fuzzer를 사용합니다. 덤 퍼저는 프로그램에 대한 사전 지식이나 지능 없이 입력을 생성하는 도구이므로 이름이 지정되었습니다.
예를 들어, 당신이 문법 검사 프로그램을 만들고 있다면, 멍청한 fuzzer는 결국 프로그램이 기대하는 것과는 거리가 먼 이미지를 생성하게 될 것입니다. 덤 퍼징은 퍼즈 테스트에 대한 가장 쉬운 접근 방식입니다.
- 스마트 퍼징: 동전의 반대편에는 스마트 퍼징이 있습니다. 덤 퍼징과 달리 스마트 퍼징은 프로그램이 수신할 것으로 예상되는 입력을 생성합니다. 게다가 스마트 fuzzer는 프로그램을 필연적으로 충돌시키는 입력을 생성하지 않습니다. 대신 예기치 않은 동작을 유발할 수 있는 입력이 나타납니다.
따라서 앞의 예에서 스마트 fuzzer는 특수 문자를 생성할 수 있지만 이미지나 기타 부적절한 입력은 생성하지 않습니다. 스마트 fuzzer는 dumb fuzzer보다 구현하기가 더 어렵지만 대부분의 경우 더 정확합니다.
- 돌연변이 퍼징(Mutational Fuzzing): 돌연변이 퍼징은 기존의 유효한 입력을 수정하거나 보다 구체적으로 '돌연변이'하여 입력을 생성하는 것을 포함합니다. 계산기 프로그램이 있는 우리의 예에서 돌연변이 fuzzer는 기존의 유효한 입력을 선택할 수 있습니다.
선택한 입력이 '10+9'라고 가정합니다. 돌연변이 fuzzer는 값을 늘리고 '180+129'로 바꾸거나 연산을 '10/9'로 변경하는 것과 같이 이 입력의 일부를 추가, 제거 또는 변경하여 이 입력을 수정하려고 시도합니다.
- Generational Fuzzing: 마지막으로 generational fuzzing은 처음부터 입력을 생성합니다. 이는 기존 항목에서 입력을 생성하는 mutational fuzzing의 반대입니다. 참조가 없기 때문에 generational fuzzer는 mutational fuzzer보다 구현하기가 훨씬 어렵지만 테스터에게 더 많은 데이터를 제공할 수 있습니다.
퍼즈 테스팅을 다른 기술보다 조금 더 흥미롭게 만드는 것은 다른 유형을 결합하여 테스팅 도구를 향상시킬 수 있다는 것입니다. 예를 들어, 프로그램에 필요한 사항에 따라 스마트 돌연변이 fuzzer 또는 벙어리 세대 fuzzer를 작성할 수 있습니다. 아마도 퍼즈 테스팅으로 수행할 수 있는 수많은 조합은 회사가 다른 방법보다 퍼즈 테스팅을 선호하는 또 다른 이유일 것입니다.
마무리
퍼즈 테스팅에 대해 더 많이 알게 되면 그것이 지금처럼 인기를 얻게 된 이유를 쉽게 알 수 있습니다. 그러나 다른 기술과 마찬가지로 퍼즈 테스트에도 몇 가지 단점이 있다는 점도 주목할 가치가 있습니다. 따라서 퍼즈 테스팅이 애플리케이션이나 소프트웨어에 해를 끼치는 것보다 더 좋은 일을 할 수 있는지 여부를 결정하는 것이 중요합니다. 이전에 말했듯이 소프트웨어 보안 테스팅을 위한 만능 솔루션은 없으며 퍼즈 테스팅은 그 솔루션이 될 수 없을 것입니다.
이에 대한 생각이 있습니까? 의견에 아래로 알려주거나 Twitter 또는 Facebook으로 토론을 진행하십시오.