ZAP 2.13 Review ⚡️

예상보다 훨씬 빠른 시기에 ZAP 2.13이 릴리즈되었습니다. 보통 매년 가을, 겨울중에 릴리즈가 있었는데, 이번에는 여름에 릴리즈가 생겼네요. 변화된 부분이 크진 않아서 릴리즈 노트를 보면 대부분 알 수 있습니다. 2.13 릴리즈 직후부터 몇일 동안 살펴보고 느꼈던 점 위주로 작성해봅니다.

Key Changes

릴리즈 노트에서 주요 변경사항으로 이야기하는 부분은 아래와 같습니다.

  • HTTP/2 지원 개선
  • Authentication Handling
  • Apple Sillicon 지원
  • GHCR 이미지 지원

대부분은 AddOn 형태로 즉시 반영된 사항이라 사용자 입장에서 이미 변화된 부분으로 사용하고 있어서 크게 체감은 안됩니다.

Authentication Tools

개인적으론 2.13의 핵심 변경은 Authentication으로 보고 있습니다. 기존에 Form/JSON 또는 Scripting 기반의 인증에서 자동으로 인증을 식별하고 로그인 플로우를 생성해주는 Authentication Auto-Detection과 인증 처리가 잘 수행되는지 체크하는 Authentication Tester가 그 대표적인 예시입니다. 그리고 최근에 추가되었던 Browser-based Login 또한 비슷한 맥락의 기능이죠.

Auto Detection

Browser-based Login

물론 개인적으로는 여러 환경의 제약 없이 디테일하게 설정이 가능한 Scripting 기반의 인증이 가장 좋다곤 생각합니다. 다만 Scripting은 다른 인증 메소드보다 구현하기 번거로운 편이기 때문에 가볍게 사용한다면 이렇게 제공해주는 Authentication 관련 기능들을 쓰는게 편리할 것 같네요.

Global Rate Limit

깃헙 이슈보고 정말 바랬었던 기능인데 이제 사용할 수 있게 되었습니다. 바로 ZAP 전체에 직접 적용할 수 있는 Rate Limit 기능입니다. 종종 트래픽을 버티지 못하는 서버를 대상으로 테스팅을 하게 된다면 Scan이나 Fuzzing 시 개별 옵션으로 조정하여 사용하였는데, 이제 전체에 적용할 수 있게 되었습니다.

Network 옵션 하위의 Rate Limit 메뉴에서 설정할 수 있습니다.

Options > Network > Rate Limit

그리고 이 때 단순히 전체에 무조건 적용하는 것이 아니라 Host, Regex 등 여러가지 패턴을 지정하여 해당 패턴에 매치되는 대상에 한해서만 Rate Limit을 적용시킬 수 있습니다. 추가로 History 등 다른 탭에서 우클릭으로 쉽게 적용 대상에 포함시키거나 할 수 있습니다.

Default Threads

GUI 사용자 입장에선 크게 문제되진 않으나 ZAP을 CI/CD Pipeline에 넣어 자동화 테스트를 한다면 알고 있어야 하는 내용입니다. Spider, Scan 등의 기능에서 CPU Processor X 2만큼 Default Threads가 잡히도록 변경되었습니다. 당연히 속도는 훨씬 빨라지겠지만 k8s Pod 등 한정된 자원에서 구동하는 경우 과부하의 여지가 있어서 잘 체크하는게 좋을 것 같네요.

Conclusion

제가 벌써 ZAP을 본격적으로 쓴지 딱 5년 정도 되었네요. 처음엔 Burp만 사용하다가 변화를 주고 싶어 시도 하였고, 그 매력을 알게 되어 현재는 Burp가 그저 스캔용일 정도로 ZAP을 잘 쓰고 있습니다.

대부분의 Security Engineer, Pentester 는 Burp를 많이 사용합니다. 레퍼런스도 많고 도구 자체도 굉장히 좋기 떄문에 생산성 측면에선 압도적이겠지만, 종종 다른 도구를 통해 여러가지 테스팅 방법들을 만들고, 자신만의 방법을 구축할 수 있게 영감을 줄 수 있기 때문에 ZAP이나 Caido 등 다른 도구도 꼭 써보셨으면 합니다 :D

References