CVE-2026-27206: Zumba 클래스 댄스: json-serializer에서 PHP Object Injection을 통한 RCE
Source: Dev.to
TL;DR
Zumba Json Serializer ≤ 3.2.2 은 JSON 입력에 있는 @type 필드를 무조건 신뢰하여 공격자가 임의의 PHP 클래스를 인스턴스화할 수 있습니다. 애플리케이션에 “gadget” 클래스가 존재하면 원격 코드 실행(RCE)으로 이어집니다. 3.2.3 버전의 수정에서는 허용 목록을 도입했지만, 이전 호환성을 위해 기본값이 “모두 허용”으로 설정되어 있어 명시적으로 구성하지 않으면 업데이트된 애플리케이션도 여전히 취약합니다.
Technical Details
- Vulnerability ID: CVE‑2026‑27206
- CWE ID: CWE‑502 (PHP Object Injection)
- CVSS Score: 8.1 (High)
- Attack Vector: Network
- Impact: Remote Code Execution (RCE)
- Exploit Status: Proof of Concept (PoC) Available
- Vulnerability Type: PHP Object Injection
Affected Systems
allowedClasses !== null && !in_array($className, $this->allowedClasses, true)조건을 만족하는zumba/json-serializer를 사용하는 PHP 애플리케이션.
Exploit Details
- GitHub Security Advisory: GHSA‑v7m3‑fpcr‑h7m2 – PoC 페이로드 구조를 포함한 공식 advisory.
Mitigation Strategies
- 즉시 3.2.3 버전으로 업그레이드.
setAllowedClasses()를 사용해 엄격한 허용 클래스 목록을 구현.- 객체 하이드레이션이 반드시 필요하지 않다면 기본
json_decode로 전환. - 알려진 gadget 체인(예: PHPGGC) 에 대해 애플리케이션 의존성을 감사.
Remediation Steps
-
다음 명령 실행:
composer require zumba/json-serializer:^3.2.3 -
코드베이스에서
new JsonSerializer()의 모든 인스턴스화를 검색. -
각 인스턴스화 뒤에 다음을 추가:
$serializer->setAllowedClasses([...]); // 허용할 클래스 목록 -
직렬화 흐름을 테스트하여 정상적인 클래스가 차단되지 않았는지 확인.
References
- GHSA‑v7m3‑fpcr‑h7m2
- Release 3.2.3
- Full report for CVE‑2026‑27206 (interactive diagrams and detailed analysis)