소프트웨어의 결함이나 취약점을 찾기 위한 테스트 기법 중 하나이다.
기본 개념은 프로그램에 의도적으로 잘못된 입력값이나 예상하지 못한 데이터를 무작위로 대입해 프로그램이 어떻게 반응하는지 관찰하는 것이다. 보안 테스트에서 많이 사용되며, 시스템이 잘못된 입력을 어떻게 처리하는지 확인함으로써 잠재적인 해킹 지점이나 취약점을 발견하는 데 유용하다.

프로그램을 활용하는 정보에 따라 세 가지로 나눌 수 있다.
- 블랙박스 퍼징: 대상 프로그램의 내부 정보를 사용하지 않고 입력과 출력 데이터만 사용하는 기법이다.
- 화이트박스 퍼징: 대상 프로그램의 내부 구조와 실행 중 발생하는 정보들을 사용하는 기법이다.
- 그레이박스 퍼징: 블랙박스와 화이트박스 퍼징의 중간적인 특성을 가지고 대상 프로그램의 내부 정보와 실행 중 발생하는 정보 일부를 사용하는 기법이다.
웹 애플리케이션을 대상으로 Fuzzing 테스트를 수행하는 도구이다.
웹에서 입력 필드, URL 파라미터, API 요청 등 다양한 입력 요소에 무작위 데이터를 주입하여, 보안 취약점이나 오류를 탐지하는 데 사용된다. 특히 웹 환경에서 발생할 수 있는 SQL 인젝션, XSS, 파일 업로드 취약점 등과 같은 보안 문제를 자동으로 탐지하는 데 유용하다.
보안 취약점을 자동으로 찾아낸다.프로그램 충돌이나 비정상적인 동작을 찾아낸다.웹에서 제공하는 폼이나 입력 필드 (로그인 폼, 검색창, 회원가입 등)을 대상으로 퍼징을 수행한다. 예상치 못한 데이터를 입력해 취약점을 찾는 것이 목적이다.
예방을 위한 퍼저 설계:
1. 검증 로직: 웹의 각 입력 필드에 대해 여러 유형의 악성 입력을 시도하고, 서버가 이를 어떻게 처리하는지 확인하는 기능을 가져야 한다.
2. SQL 인젝션 방어: SQL 구문에 대해 무작위 입력을 삽입하여 예상치 못한 쿼리가 실행되는지 확인하고, 서버가 Prepared Statements를 사용하는지 테스트한다.
3. XSS 방어:<script>alert('XSS')</script>와 같은 스크립트를 삽입하여 애플리케이션이 이를 필터링하거나 이스케이프 처리하는지 확인한다.
웹에서 URL 파라미터로 전달되는 값을 대상으로 퍼징을 수행한다.
웹 서비스는 URL에 ID, 필터 옵션 등의 데이터를 파라미터로 전달받아 처리하는데, 이때 데이터를 변조하거나 예상치 못한 데이터를 삽입해 취약점을 탐지한다.
예방을 위한 퍼저 설계:
1. 파라미터 검증: 다양한 URL 파라미터에 대해 특수 문자나 악의적인 데이터를 삽입해, 서버가 이를 적절히 처리하는지 확인한다.
2. URL 인코딩 테스트: 퍼저는 인코딩된 악성 페이로드도 시도해 서버가 이를 적절히 디코딩하고 필터링하는지 테스트한다.
3. 권한 및 인증 처리: 중요 파라미터에 대해 권한과 인증이 적절히 처리되는지 검사하는 기능을 추가한다.
웹은 클라이언트로부터 다양한 HTTP 헤더와 메서드 요청을 받는다. 이 부분에서 악성 데이터를 삽입해 퍼징할 수 있다.
예방을 위한 퍼저 설계:
1. 헤더 무결성 검증: HTTP 헤더에 다양한 악의적인 데이터를 삽입해 변조된 헤더가 서버를 어떻게 처리하는지 테스트한다.
2. 메서드 검증: 다양한 HTTP 메서드(GET, POST, PUT, DELETE)에 대해 서버가 예상치 못한 입력을 적절하게 처리하고, 잘못된 메서드 접근을 막는지 확인한다.
3. CSRF 방어: 퍼저는 HTTP 요청에서 CSRF 토큰이 제대로 적용되고 검증되는지 확인하는 기능이 있어야 한다.
파일 업로드 기능을 제공하는 웹에서 파일의 종류, 확장자, 크기 등을 무작위로 조작해 취약점을 탐색한다.
예방을 위한 퍼저 설계:
1. 파일 타입 검증: 다양한 파일 확장자를 시도해 서버가 허용되지 않은 파일 형식을 적절히 필터링하는지 확인한다.
2. 파일 크기 제한: 업로드된 파일의 크기를 제한하고, 과도한 파일 크기에 대해 적절한 예외 처리가 이루어지는지 확인한다.
3. 파일명 검증: 파일명에 경로 조작(payload injection)이 가능한지 여부를 검사해, 악의적인 파일명이 업로드되지 않도록 한다.
4. 파일 스캔: 업로드된 파일이 실해 가능한 악성 코드인지 확인하는 바이러스 스캐너나 파일 무결성 검사가 포함된 시스템을 테스트한다.
웹은 사용자 세션을 유지하기 위해 쿠키를 사용한다. 쿠키와 세션 데이터를 변조하거나 악의적인 값을 주입하여 테스트하는 퍼징이다.
예방을 위한 퍼저 설계:
1. 쿠키 변조 방지: 퍼저는 쿠키를 변조해 서버가 이를 적절하게 처리하는지, 변조된 쿠키로 인해 인증 우회가 가능한지 테스트한다.
2. 보안 속성 확인: 쿠키의 HttpOnly, Secure, SameSite 속성이 적절하게 설정되었는지 검사하는 기능을 포함한다.
3. 세션 타임아웃 및 관리: 퍼저는 세션이 적절히 만료되는지, 세션 타임아웃 설정이 정상적으로 작동하는지 확인한다.
RESTful API나 SOAP API에서 다양한 비정상 데이터를 주입해 API 엔드포인트의 취약점을 탐색한다. 특히 인증 및 권한 처리, 데이터 검증 부분에서 취약점이 자주 발생한다.
예방을 위한 퍼저 설계:
1. 파라미터 검증: API 요청 파라미터에 대해 다양한 악성 데이터를 주입해, 입력값이 적절히 검증되는지 확인해야 한다.
2. 인증 및 권한 확인: 퍼저는 인증이 필요한 API 엔드포인트에 대해 인증 없이 접근할 수 있는지, 권한 검증이 제대로 이루어지는지 테스트한다.
3. 응답 데이터 검증: API가 비정상적인 요청에 대해 적절한 오류 메세지를 반환하는지, 민감한 데이터가 유출되지 않는지 검사한다.
참고
https://m.blog.naver.com/autocrypt/222409538688
https://ko.wikipedia.org/wiki/%ED%8D%BC%EC%A7%95