Web Scanner / Fuzzer 차이

공부를 하는 중 Web Scanner와 Fuzzer의 차이가 궁금했다.
Fuzzer와 Scanner(이하 퍼저 / 스캐너) 모두 취약점을 발굴하고 점검을 하는 도구라고 생각했지만, 친구들과 얘기하며 조사해본 결과 미묘한 차이가 있다는 것에 결론이 났다.
다음은 토의한 내용을 바탕으로 정리해본 글이다. 필자의 생각이 가미 되어 있으므로 참고용으로 사용하면 좋을 것 같다.
Fuzzing (Fuzz testing)
먼저 퍼저에 대해 알아볼 필요가 있다.
퍼즈 테스팅(Fuzz testing) 또는 퍼징(fuzzing)은 (종종 자동화 또는 반자동화된) 소프트웨어 테스트 기법으로서, 컴퓨터 프로그램에 유효한, 예상치 않은 또는 무작위 데이터를 입력하는 것이다. 이후 프로그램은 충돌이나 빌트인 코드 검증의 실패, 잠재적인 메모리 누수 발견 등 같은 예외에 대한 감시가 이루어진다. 퍼징은 주로 소프트웨어나 컴퓨터 시스템들의 보안 문제를 테스트하기 위해 사용된다. 이것은 하드웨어나 소프트웨어 테스트를 위한 무작위 테스팅 형식이다.
라고 위키백과에 서술되어 있다.
즉, 퍼즈 테스팅 또는 퍼징은 무작위 데이터를 입력하여 프로그램 충돌 / 코드 검증 실패 / 잠재적인 메모리 누수 등 소프트웨어 테스트 기법인 것이다.
이것을 자동화 해주는 툴을 Fuzzer(퍼저) 라고 한다.
Scanner
여기서 그럼 의문점이 생긴다. 과연 스캐너는 무엇인가?
이 부분에서 친구들과 열띤 토의를 했는데 결론은 다음과 같다
'Scanner는 취약점 점검을 위한 도구'
그럼 Fuzzer도 결국에는 소프트웨어의 오류 및 취약점을 찾는데 사용하고 심지어 제로데이를 찾기 위해서는 Fuzzer를 사용한다.
결국 Fuzzer = Scanner 인 것 아니냐?
결론을 먼저 말하자면 Fuzzer는 무작위 데이터를 입력하고 Scanner는 임의의 데이터를 사용한다.
이해를 돕기 위해 ChatGPT를 사용한 답변을 먼저 보자.


결론
즉 Fuzzer와 Scanner는 취약점 점검을 하는데 모두 사용된다. 하지만 둘의 차이점도 존재한다.
- Fuzzer는 무작위 데이터를 사용하여 소프트웨어의 오류 및 취약점을 발굴한다.
- Scanner는 취약점 리스트를 이용하여 임의의 데이터를 사용하여 취약점 존재 여부를 찾는다.
결국 Web에서의 Fuzzer는 nginx나 Apache와 같이 직접적으로 서버에 점검을 가하지 않는 이상 Fuzzer는 존재하지 않을까 싶다.
또한, Fuzzer나 Scanner나 잘 사용해서 취약점을 찾고 보완하면 좋지 않을까?

Vulnerability scanning vs fuzzing a web application
In the context of web applications, is vulnerability scanning a form of fuzzing? I was told it wasn't the case, but here's what I know: Wikipedia defines fuzzing as "providing invalid, unexpected...
security.stackexchange.com