🇰🇷 한글 설명
Zed Attack Proxy(ZAP)의 ViewState 애드온 4 이전 버전에는 안전하지 않은 역직렬화 취약점이 존재합니다. 프록시된 웹 서버를 장악한 공격자는 javax.faces.ViewState 응답 파라미터에 악성 직렬화 Java 객체를 삽입하여 임의 코드를 실행할 수 있습니다. JSFViewState.decode() 메서드가 역직렬화 필터나 허용 목록 없이 ObjectInputStream.readObject()를 호출하기 때문입니다.
💡 쉬운 설명
보안 점검 도구인 ZAP의 특정 기능이 웹 서버가 보낸 데이터를 검증 없이 처리합니다. 악의적인 웹 서버가 이를 악용하면 ZAP이 실행 중인 PC에서 공격자가 원하는 명령을 실행할 수 있습니다.
🇺🇸 원문 (English)
Zed Attack Proxy (ZAP) ViewState add-on before version 4 contains an insecure deserialization vulnerability that allows attackers who control a proxied web server to achieve arbitrary code execution by embedding a malicious serialized Java object in the javax.faces.ViewState HTTP response parameter. The JSFViewState.decode() method base64-decodes the ViewState value and passes it directly to ObjectInputStream.readObject() without a deserialization filter, allowlist, or type restriction, causing the malicious object to be deserialized within the ZAP JVM when the Desktop UI renders the ViewState panel.
📍 영향받는 시스템
Zed Attack Proxy(ZAP) ViewState 애드온 4 미만 버전
⚔️ 공격 벡터
프록시된 웹 서버가 javax.faces.ViewState 응답 파라미터에 악성 직렬화 Java 객체를 담아 보내면, ZAP Desktop UI가 ViewState 패널을 렌더링할 때 역직렬화되어 코드가 실행됩니다.
🛡️ 대응 방법
ZAP ViewState 애드온을 버전 4 이상으로 업데이트하거나, 해당 애드온을 비활성화합니다.
🔧 검증 코드
설치된 ViewState 애드온 파일명이나 버전 정보가 출력되면 설치 여부를 확인할 수 있으며, 출력된 버전이 4 미만이면 취약한 것이고 4 이상이면 패치된 것입니다. 출력이 없으면 애드온이 설치되지 않은 것입니다.
grep -ri 'viewstate' ~/.ZAP/plugin 2>/dev/null | head -n 5