지긋지긋.. log4j 관련 보안취약점이 끊임없이 나오고 있다. KISA 인터넷 보호나라&KrCERT KISA 인터넷 보호나라&KrCERT www.boho.or.kr 여기서 2021.12.29일자로 새로운 log4j 보안취약점 조치사항에 대해 잘 나와있다. 요약하자면 주요내용 Apache Log4j 2에서 발생하는 원격코드 실행 취약점(CVE-2021-44832) 영향을 받는 버전 CVE-2021-44832 - 2.0-beta9 ~ 2.17.0 버전 (Log4j 2.3.2, 2.12.4 제외) 대응방안 - Java 8 이상 : Log4j 2.17.1으로 업데이트 - Java 7 : Log4j 2.12.4으로 업데이트 (업데이트 예정, 참고사이트 [3] 참고) - Java 6 : Log4j 2.3.2으로 ..
최근 이슈가 되고 있는 log 관련 보안 이슈들은 많은 개발자들을 괴롭히고 있다. 치명적인 취약점이다 보니 빠른 조치가 이루어져야 하고 보안 종사자들이 빠르게 대응을 해서 이제 어떻게 조치를 해야 하는지 대략적인 윤곽이 나왔다. 필자도 log4j, log4j2, logback에 대한 조치내용을 전달받아 다음과 같이 조치를 하였다. log4j 그냥 log4j라고 하면 log4j 관련 라이브러리가 1.x 버전을 뜻한다. log4j는 JMSAppender를 사용하는가 안하는가가 관건이다. JMSAppender를 사용한다면 사용을 중지하거나 안전한 log4j2로 migration을 해야 한다. JMSAppender는 보통 log4j.xml에서 설정을 하지만 web.xml 같은 곳에서 log파일의 위치나 이름을 ..
masking은 민감 정보에 대해 보이지 않게 처리를 해주는것을 말한다. 개인정보와 관련된 시스템을 구축하다보면 masking은 필수로 사용이 되어야 한다. 화면단에 보이는 masking도 필요하고 출력되는 log에도 masking은 필요하다. 그중 이번에는 log에 masking을 적용하는 방법에 대해 알아보도록 하겠다. 필자는 springboot 환경에 logback을 사용하고 있다. springboot의 application.yml 에서 logback 설정을 하여 log를 관리하고 있었다. 하지만 log를 masking 하는것은 application.yml에서는 할수 없었다. application.yml에서는 default로만 설정을 할 수밖에 없어서 커스터마이징이 필요한 log masking은 사..
중요한 일은 아니지만 개발환경을 만드는 입장에서 어떻게 하면 조금 더 로그를 가독성이 좋게 보여줄 수 있을까 고민을 했고 출력 로그의 색상을 바꿔보기로 하였다. 바쁜 사람을 위해 결론부터 말하면 색상을 변경하기 위해서는 다음과 같이 하면 된다. logback-spring.xml ... 생략 ... 로그 패턴 정의 중 출력할내용을 %clr(출력할내용){red} 로 감싸준다. red 말고 다른 색상으로 대체 가능 다음은 출력로그의 색상을 변경하는 원리와 상세 적용 방안이다. 위의 AProject는 가장 기본적인 Springboot project의 모습이다. logback-spring.xml 파일은 물론이고 application.properties에도 로그에 대한 설정은 없다. 이 프로젝트를 실행시키면 다음과..
필자는 일단 이 글을 쓰면서도 이 include를 사용하여 가독성을 높이는게 더 나은 방법일까? 라는 의문을 계속 가지고 있다. 답은 어느정도 정해져있다. 내가 관리를 할때 파일을 여러개로 쪼개서 가독성을 높이는것이 좋으면 쪼개는거고 아니면 하나의 파일에 다 때려박아도 무관하다. spring의 application-context를 관리하는것과 비슷한 맥락이라고 보면 된다. 하나의 파일에 다 넣을수도 있지만 종류별로 분리함으로써 더 높은 효과가 예상된다면 그리 하면 된다. 어떻게 하는지 알아보자. logback-console-appender.xml [%d{HH:mm:ss.SSS}][%-5level][%logger.%method:line%line] - %msg%n utf8 logback-file-append..
log4j는 한때 위용을 떨쳤던 강력한 logging framework였다. 하지만 세월이 흐르고 기술은 발전하여 더 나은 logging framework들이 등장했다. 성능적인 측면이나 기능적인 측면에 더욱 발전하여 전환은 선택이 아닌 필수가 되었다. 그중 springboot 공식 logging framework로 사용될만큼 인정을 받은 logback으로 전환을 하는 방법에 대해 알아보자. 더불어 다음부터는 쉽게 logging framework 전환을 쉽게 하기 위해 slf4j 를 사용하도록 하자. pom.xml library 변경 log4j log4j log4j 1.2.17 slf4j + logback org.slf4j slf4j-api 1.7.25 ch.qos.logback logback-class..
기존 log를 관리하기 위한 구현체로써 log4j가 사용되었다. 그러나 보다 안정성이 높고 편리하게 log를 관리하기 위해 Logging framework인 Slf4j(Simple Logging Façade for Java)와 그 구현체로써 Logback이 고안되었다. Slf4j는 일명 Façade 패턴으로, 이를 사용하면 구현체의 종류와 상관없이 일관된 로깅 코드를 작성할 수 있으며 구현체를 변경할 경우에도 최소한의 수정으로 교체가 가능하다. 이에 맞춘 Logback은 log4j의 후속 버전으로 만든 Logging 라이브러리이다. Logback은 springboot의 기본 Logging framework로 사용될만큼 범용적이고 다양한 기능을 가지고 있다. log 관리 및 처리 구조는 다음과 같다. Lo..
springboot 1.4.2 를 사용하다가 2.x 로 versionup을 하였다. 오 생각보다 별 이슈 없이 잘 되네? 하며 종속성 에러를 다 잡고 서버를 기동하는 순간 다음과 같은 오류가 떨어졌다. 이 익숙한듯 익숙하지않은 익숙한거같은 오류... 분명 위에서 지적하는 logback 관련 라이브러리는 물론 잘 올라와있다. 찾아보니 역시 springboot migration 이슈였다. 이건 springboot 1.5.x 를 사용할때도 나타나는 현상이라고 하는데 springboot 1.5.x 이상에서 logback 1.0.x version을 사용하면 이런 문제가 발생한다고 한다. 해결방법은 logback을 최소 1.1.3 version 이상을 사용하면 된다. 1.2.3 이렇게 바꾸고 다시 기동시켜보면 잘 ..