ZAP 2.14 Review ⚡️

생각보다 엄청 빠른 주기로 ZAP 2.14 릴리즈가 발표되었습니다 🎉⚡️

아마도 최근에 ZAP은 OWASP를 나와 별도의 브랜딩을 가진것이 큰 영향을 줬을거라 생각합니다. ZAP 2.13이 나온지 오래되지 않았기 때문에 큰 변화가 있는 것은 아니지만, 그래도 중요한 API나 기능들이 추가되서 빠르게 리뷰해봅니다.

ZAP

이제 ZAP은 그냥 ZAP입니다. OWASP를 나오면서 OWASP ZAP에서 ZAP으로 브랜딩 변경이 있었고, 이번 2.14 업데이트로 모든 구간에서 ZAP으로 변경된 것으로 보입니다.

이름이 바뀜에 따라 macOS의 Dock의 Applicaion 또한 변경이 필요합니다. (OWASP ZAP -> ZAP)

Host Header Manipulation

기존의 ZAP은 Host Header에 대한 수정이 불가능했었습니다. 이는 Host 헤더를 실제 Endpoint 대상으로 봤었기 때문인데요. ZAP 2.13에서 네트워크 관련 큰 업데이트가 있었고, 마침내 Host 헤더에 대해서 변경할 수 있도록 개선되었습니다.

표시해놓은 버튼으로 Host에 대한 자동/수동 업데이트를 토글합니다.

File Transfer API

살짝 관심있던 API이였는데, 드디어 ZAP API에서 공식적으로 파일 업로드와 다운로드를 지원합니다.

How to Enable

당연히 허가외 접근이 발생한다면 보안 이슈가 될 수 있기 때문에 기본적으로는 Disable되어 있으며 해당 API를 사용하려면 API Key를 활성화해야합니다.

Disable API Key가 체크 해제되면 File Transfer Enable를 활성화할 수 있습니다

Upload API

특히 ZAP을 서버로 쓰는 경우 Automation.yml 파일 등을 밀어넣기 불편했는데, 이제 아래 API를 통해 ZAP 경로로 파일을 업로드할 수 있습니다.

POST /OTHER/core/other/fileUpload/
X-ZAP-API-Key: {{API_KEY}}

------WebKitFormBoundarytIUo7AulClBnVvkZ
Content-Disposition: form-data; name="fileName"

testimage.png
------WebKitFormBoundarytIUo7AulClBnVvkZ
Content-Disposition: form-data; name="fileContents"; filename="testimage.png"
Content-Type: image/png
....

Download API

아래 API로 Transfer 디렉토리의 파일을 다운로드 받을 수 있습니다.

GET /OTHER/core/other/fileDownload/?fileName=testimage.png
X-ZAP-API-Key: {{API_KEY}}

Support OAS3

이건 생각도 못했는데, ZAP의 API에 대해 OAS3 문서로 제공됩니다. 아래 링크로 접근해서 확인할 수 있습니다.

https://raw.githubusercontent.com/zaproxy/zap-api-docs/main/openapi.yaml

굉장히 좋다고 느끼는점은, ZAP은 API 기능을 통해서 좀 더 유연하게 사용할 수 있는 도구인데 OAS3를 지원함으로써 Insomnia나 HTTPie 같은 도구에서 바로 API를 로드하고 테스트하며 사용할 수 있게 됩니다.

ZAPit

오랜만에 cli에 옵션이 추가됬습니다. 바로 -zapit이란 옵션인데요. 인자값으로 URL을 받고 있고, 해당 옵션이 있는 경우 전달받은 URL을 대상으로 reconnaissance scan을 진행합니다.

-zapit=<URL>

또한 중복된 옵션을 지원하기 때문에 아래와 같이 사용될 수 있습니다.

./zap.sh -cmd -zapit https://www.hahwul.com -zapit https://gihtub.com

Reconnaissance scan

그럼 ZAPit으로 실행되는 Reconnaissance scan이 무엇인지 궁금해집니다. 일반적인 Recon과 동일하게 대상에 대해 사전조사 해주는 기능입니다. 동작은 아주 간략합니다. URL을 열고, Technology Detection과 Passive Scan 결과(alert) 등을 정리해서 보여줍니다.

개인적으론.. 잘 사용하지 않을 것 같은 기능이긴하네요.

Lock a ZAP Home

이제 ZAP Home 디렉토리가 기본적으로 사용중에는 Lock이 걸리게됩니다. (PR #8070)

Found Java version 11.0.20.1
Available memory: 0 MB
The home directory is already in use. Ensure no other ZAP instances are running with the same home directory: /Users/hahwul/Library/Application Support/ZAP/

ZAP을 이용해서 DAST 운영하는 환경에서 만약 한 인스턴스 내 여러 ZAP을 사용한다면 충돌 이슈로 이어질 수 있습니다. 2.14 업데이트 시 이 부분은 꼭 체크가 필요할 것 같습니다.

  • 단일 Instance만 사용하던가
  • Instance 별 Home을 분리하던가

SBOM

제작년쯤일까요? ZAP 리더인 사이먼이 SBOM에 관심을 가지고 있었던 것으로 기억합니다. 드디어 ZAP과 Addon에 대한 SBOM이 만들어졌고, 이제 릴리즈를 통해 CycloneDX 포맷의 SBOM 파일도 같이 제공됩니다.

{
  "bomFormat" : "CycloneDX",
  "specVersion" : "1.4",
  "serialNumber" : "urn:uuid:d6c3fb5e-b2e3-4c92-a93b-11a73c1b92b8",
  "version" : 1,
  "metadata" : {
    "timestamp" : "2023-10-12T16:00:27Z",
    "tools" : [
      {
        "vendor" : "CycloneDX",
        "name" : "cyclonedx-gradle-plugin",
        "version" : "1.7.4"
      }
    ],
    "component" : {
      "group" : "org.zaproxy",
      "name" : "zap",
      "version" : "2.14.0",
      "purl" : "pkg:maven/org.zaproxy/zap@2.14.0?type=jar",
      "type" : "library",
      "bom-ref" : "pkg:maven/org.zaproxy/zap@2.14.0?type=jar"
    }
  },
...
}

Others

나머지는 이전에 소개한 내용(ZAP’s Client Side Integration)이거나 자잘한 변경으로 보입니다.

Conclusion

사실 2.13 이후 정말 짧은 시간에 2.14가 릴리즈되서 큰 기대는 안했습니다만, File Transfer, OAS3 등 ZAP의 API를 적극적으로 활용하는 유저에게 큰 도움을 줄 수 있는 기능들이 추가되서 새삼 놀랬습니다. 이 리뷰 글을 정리하면서도 또 색다른 분석 방법들이 생각나고 있는데, 정리되고 테스트 후 괜찮다고 생각되면 다음 글을 통해서 공유드리겠습니다.

항상 좋은 기능과 빠른 피드백으로 꾸준히 오픈소스를 이어나가는 ZAP Core 팀과 컨트리뷰터들에게 감사의 인사를 전해봅니다 :D

History of ZAP Reviews

지금까지 작성했던 Review를 한번 모아봤습니다. 정리해서 보니 2.9는 놓쳤었네요 😱

References