Backend
Spring 3.2.3에서 3.2.14로 업그레이드 정리(스프링 XML 입력에 의한 서비스 거부 취약점 대응)
2015년 11월 30일
원문에서 보기 ↗
SPRING 3.2.x 버전대를 사용하는 경우 3.2.14로 업그레이드해야한다고 합니다. 제가 담당하는 프로젝트는 3.2.3.RELEASE 버전을 쓰고 있어서 마이너 버전만 올라가는 수준이라 영향도가 작을 것 같아 업그레이드를 시도해보았습니다.
local에서 대부분의 API, 각종 Admin 기능, Batch를 돌려보았을 때 문제점은 없었고, Alpha 환경에서 좀 더 테스트를 진행 중이나 별 문제 없는 것 같습니다.
아래 내용을 한 줄로 요약하면, 3.2.3과 3.2.14 사이에 버그/보안 패치 이외에 대단한 수정사항은 없었습니다. 각 버전의 배포 공지만 요약했구요, 전체 변경점은 github에서 두 버전 사이에 들어간 커밋로그들 을 보셔야 합니다.
주의할 점
#동일한 spring 모듈이 각각 다른 버전으로 중복해서 사용되는 문제 pom.xml을 Dependency Hierarchy모드로 보면 동일한 내용이 각각 다른 버전으로 중복해서 들어가 있는 것이 많습니다. 대부분 lucy에 dependency가 있는 spring 모듈들입니다. 혹시 lucy 등에서 쓰지만 별도로 선언되어 있지 않은 모듈이 있으면 추가해야합니다. Dependency Hierarchy모드에서 spring으로 검색해서 나오는 모듈들의 버전을 확인하면서 꼼꼼하게 제외할 것은 제외하고 추가할 것은 추가해서 spring의 각 모듈들이 모두 3.2.14를 사용하도록 만들어주시면 되겠습니다.
변경사항 요약
# Spring 3.2.14 (2015년 6월 30일 배포)
- 가장 큰 변화는, 잘 조작된 XML을 보내면 Spring이 파싱할때 out of memory 에러가 발생할 수 있는 문제를 해결한 내용입니다. -- 이전 배포 공지들을 보시면 아시겠지만, 3.2.x 버전대는 이 XML 문제를 계속 떠안고 있었던 것 같습니다.
- Spring 3.2.x 버전은 2016년 12월 31일까지만 유지보수 한다고 합니다. * (1년 반정도 남았습니다) -- 이후에는 4.x 버전만 유지보수 된다고 합니다. -- 참고로 Spring 4는 2019년 까지 유지보수 예정이고, 2016년 4분기에 버전 5를 내놓을 예정이라고 합니다. Spring 5는 JDK8 이상만 지원할 예정이고 JDK7이하는 Spring 4에서 계속 지원한다네요.
# Spring 3.2.13 (2014년 12월 31일 배포)
- 특별한 변경은 없었던 모양입니다.
- Spring 4.2 버전에서 새로 추가될 기능들에 대한 요약 위주의 공지입니다.
# Spring 3.2.12 (2014년 11월 11일 배포)
- MVC resource를 Spring이 핸들링할 때 발생할 수 있는 보안관련 사항에 업데이트가 있었다고 합니다. -- 특히 ResourceHttpRequestHandler를 사용하는 경우(예를 들면 mvc:resources를 이용하는 경우)라면 업데이트가 필요하다고 하네요.
** # Spring 3.2.11 (2014년 9월 4일 배포)**
- 별도 배포 공지가 없었습니다.
** # Spring 3.2.10 (2014년 7월 16일 배포 )**
- 별도 배포 공지가 없었습니다.
** # Spring 3.2.9 (2014년 5월 20일 배포)**
- 모든 feature를 최종 반영했고, 이후로 추가 feature는 없을 것이라고 합니다. -- 중요한 버그에 대한 업데이트는 EOL까지 공식 지원한다고 합니다.
- JDK 8의 feature들을 부분적으로 지원한다고 합니다.
** # Spring 3.2.8 (2014년 2월 19일 배포)**
- XXE 공격(XML 파싱과정을 이용한 공격)에 대응하는 패치가 반영되었습니다.
** # Spring 3.2.7 (2014년 1월 29일 배포)**
- 중요한 버그들이 해결되었다고 합니다.
- Spring 3.2.x의 개발이 유지보수 모드로 들어갔습니다.
- Spring 3.1.x의 지원이 공식적으로 종료되었습니다.
# Spring 3.2.6 (2013년 12월 12일 배포)
- Java 설정과 Spring Boot관련된 이슈들이 fix되었습니다.
# Spring 3.2.5 (2013년 11월 7일 배포)
- 50여개의 버그가 해결되었습니다.
# Spring 3.2.4 (2013년 8월 7일 배포)
- Spring OXM에 대한 보안패치와 몇몇 버그가 해결되었습니다.
# Spring 3.2.3 (2013년 5월 21일 배포)
- JDK7이하 버전에서 컴파일한 소스를 OpenJDK 8 runtime에서 실행할 수 있도록 지원하기 시작했습니다. -- 다만 JDK 8로 컴파일한 bytecode는 지원하지 않습니다. (Spring 4.0 이상 버전에서 지원합니다.)
많은 도움이 되었으면 좋겠습니다. 감사합니다.