
XStream DoS CVE-2021-21341
취약점
CVE-2021-21341: XStream에서 서비스 거부(Denial of Service)가 발생할 수 있습니다.
영향을 받는 버전
1.4.15 이하의 모든 버전이 기본 설정 그대로 사용될 경우 영향을 받습니다. XStream의 보안 프레임워크를 최소 필수 유형으로 제한된 화이트리스트로 설정할 것을 권고한 조치를 따른 사용자는 영향을 받지 않습니다.
설명
역직렬화(unmarshalling) 시 처리되는 스트림에는 이전에 작성된 객체를 재생성하기 위한 유형 정보가 포함됩니다. XStream은 이러한 유형 정보를 기반으로 새 인스턴스를 생성합니다. 공격자는 처리되는 입력 스트림을 조작하여 조작된 ByteArrayInputStream(또는 파생 클래스)을 대체하거나 주입할 수 있으며, 이로 인해 무한 루프가 발생하여 서비스 거부를 유발할 수 있습니다.

$ docker build -t cve-2021-21341 .
$ docker run -it --rm cve-2021-21341
Security framework of XStream not explicitly initialized, using predefined black list on your own risk.
(never end)
pom.xml을 아래와 같이 변경
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.16</version>
</dependency>
NoTypePermission.NONE 추가
import com.thoughtworks.xstream.security.NoTypePermission; // Add
XStream xstream = new XStream();
xstream.addPermission(NoTypePermission.NONE); // Add
xstream.fromXML(xml);