CVE-2020-1938 취약점
CVE : http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1938
KISA : https://www.krcert.or.kr/data/secNoticeView.do?bulletin_writing_sequence=35292APACHE : http://tomcat.apache.org/security-7.html#Fixed_in_Apache_Tomcat_7.0.100
취약점 해결을 위해서는 tomcat 을 최신버전으로 업데이트 해줘야 한다.
2020.03.10 기준
tomcat7 의 경우 7.0.100 버전 으로
tomcat8 의 경우 8.5.51 버전 으로
tomcat9 의 경우 9.0.31 버전 으로
업데이트를 해줘야 한다.
발단
tomcat7 을 사용중인 서버가 있어
기존 : tomcat-7.0.64
변경 : tomcat-7.0.100
으로 계획후 작업을 진행
별다른 이슈가 없을것으로 보였고, 작업을 진행했으나 문제 발생
발생한 문제점
1. 에러로그 발생
The AJP Connector is configured with secretRequired=”true” but the secret attribute is either null or “”.
기존에 존재하지 않았던 로그
2. 503 오류 발생
jsp 페이지 자체가 로딩되지 않는 문제가 있었다.
해결
1. secretRequired=”true”
참조 : https://tomcat.apache.org/tomcat-7.0-doc/changelog.html
Rename the requiredSecret attribute of the AJP/1.3 Connector to secret and add a new attribute secretRequired that defaults to true. When secretRequired is true the AJP/1.3 Connector will not start unless the secret attribute is configured to a non-null, non-zero length String. (markt)
기존의 requiredSecret 옵션이 7.0.100 버전에서 secretRequired 로 이름이 변경되었고
기본값은 true
내용으로는 별다른게 없지만
이 변경 내용때문에 tomcat에서 SSL을 사용하지 않는 경우 문제가 발생
server.xml 의 “<Connector ” 설정에 “secretRequired=”false” 를 추가해줘야 한다
2. 503 오류
참조 : https://tomcat.apache.org/tomcat-7.0-doc/changelog.html
Change the default bind address for the AJP/1.3 connector to be the loopback address. (markt)
- mod_jk 로그
[Tue Mar 10 14:15:54.119 2020] [347:140227343800128] [info] jk_open_socket::jk_connect.c (817): connect to ::1:8009 failed (errno=111) [Tue Mar 10 14:15:54.119 2020] [347:140227343800128] [info] ajp_connect_to_endpoint::jk_ajp_common.c (1068): (node1) Failed opening socket to (::1:8009) (errno=111) [Tue Mar 10 14:15:54.119 2020] [347:140227343800128] [error] ajp_send_request::jk_ajp_common.c (1728): (node1) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111) [Tue Mar 10 14:15:54.119 2020] [347:140227343800128] [info] ajp_service::jk_ajp_common.c (2773): (node1) sending request to tomcat failed (recoverable), because of error during request sending (attempt=1)
address 옵션이 기본적으로 루프백으로 지정되면서 사단이 나는 경우다…
server.xml 의 “<Connector ” 설정에 “address=”0.0.0.0” 를 추가해줘야 한다.
address 에 설정되는 값은 당신의 상황에 맞게 넣어주면 된다.
3. 결론
신버전의 기본설정 변경 이슈에 의해 server.xml 을 수정해줘야 한다는 것이다.
- 기존
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
- 변경
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="0.0.0.0" secretRequired="false"/>
이렇게 해주면 된다…
기억을 더듬어 보건데…
보안이슈등의 이유로 tomcat의 마이너 버전 업데이트시 이렇게까지 문제가 되었던 적이 있었던가?
하는 물음이… ㄷㄷㄷ