약 한달전 쯤 서버의 상태를 확인하는 중 한 서버의 cpu 사용량이 비정상적으로 높은 현상이 발생했다. 원인을 파악하기 위해서 실행중인 프로세스들을 확인하였고 한 프로세스가 비정상적으로 많은 자원을 사용하고 있다는 것을 알게되었다. 문제는 해당 프로세스와 실행파일은 누구도 설치한 적 없는 파일이었다. 우선은 해당 파일을 백업하고 프로세스를 죽인다음 서버에서도 파일을 지움으로써 급한 불은 끄는 식으로 처리를 진행했다. 이후 점검 결과 tomcat의 web-app/ROOT 디렉토리에 프로젝트와는 상관없는 파일이 있었고 해당 파일은 중국어로 된 주석이 포함된 파일이었다. 그래서 톰캣과 프로젝트를 서버에서 모두 지운다음 새롭게 세팅하였고 파일 업로드와 관련된 코드들을 점검하고 문제가 발생할 수 있는 부분들의 수정을 진행하였다.
하지만 오늘 다시 cpu 사용량이 치솟게 되었고 한달전과 비슷한 현상임을 확인한 후 우선적으로 똑같이 파일을 지우는 작업을 진행했다. 그리고는 이전에 업로드 기능에 대한수정을 진행하였기에 다른 원인이 있을것이라 예상했고 사용중인 톰캣 버전에 대한 취약성을 검색했다. 그 결과 "tomcat 8.0.46" 버전에 " CVE-2017-12617" 취약점이 있다는 것을 알게되었다. 해당 취약점의 내용은 "PUT 매서드를 이용해서 파일을 업로드하고 원격 코드실행이 가능한 취약점"이었다. 실제로 알 수없는 파일이 업로드된 것과 실행하지 않은 프로세스가 실행중인 현상은 해당 취약점과 비슷한 현상이었고 이번에는 해당 문제를 해결하는 것을 중점으로 작업을 진행했다. 크게 해결법은 두가지 정도로 톰캣의 버전을 업그레이드 하거나, 특정 HTTP METHOD 들을 차단하는 것이 해결법이다. 톰캣의 버전 업그레이드의 경우 고려해야할 대상이 있기에 혼자서 결정할 수 없어서 해당 방법은 우선 보류하고 tomcat/conf 의 web.xml 에서 PUT, OPTION, DELETE 등의 HTTP METHOD 를 차단하는 방법을 우선 적용하였다. 적용 후 postman 을 이용한 테스트 결과 필터링이 정상 적용되어 401 이 던져졌다. 문제가 해결되었다고 판단하기엔 이른 것이 이후에 동일한 문제가 발생하는지에 대한 지속적인 모니터링이 필요하기 때문에 이번에도 급한불만 끈 느낌이기는 하지만 지난번과는 다른 방법을 적용한 것 이기에 다른 결과가 나타날 것이라 기대하고 있다.
이번 경험을 통해 현재 사용중인 기술의 취약점을 파악하는 것의 중요성을 알게되었다. 사실 블로그를 보거나 여러 IT 기사들을 보면서 취약점에 대해서 그렇게 신경을 쓰지 않고 있었는데 직접 경험해보니 보안에 대해 신경을 쓰는게 어느정도는 필요하다는 것을 몸소 깨닫게 되었다.
확실히 업무를 진행하면서 지식이 쌓이니 시야가 넓어졌다는 느낌이 들었다. 예전 같았으면 어플리케이션의 보안만 생각하고 확인했겠지만 톰캣의 취약성을 검색하는 등 완전 신입이었을 때 보다는 성장한 것이 체감되는 날이었다.
'회고' 카테고리의 다른 글
커리어에 대한 회고 (0) | 2025.07.03 |
---|---|
20250104) 프로젝트에 대한 인수인계, 개발문서의 중요성을 깨달은 회고 (0) | 2025.01.04 |
톰캣 war 파일 변경 시 자동 배포과 관련된 회고 (0) | 2024.10.08 |
egov 3.6 > egov Boot 4.2 회고 (with security) (0) | 2024.05.24 |
20240321-회고(스프링 웹소켓 오류 회고 / 오류 해결완료) (0) | 2024.03.21 |