사용자 도구

사이트 도구


java:logback

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:logback [2017/07/10 10:42]
kwon37xi [Multi line to Single line]
java:logback [2023/09/21 13:21] (현재)
kwon37xi
줄 13: 줄 13:
   * logback-access : Tomcat/Jetty 등에 설치되어 웹 요청을 로깅할 수 있다.   * logback-access : Tomcat/Jetty 등에 설치되어 웹 요청을 로깅할 수 있다.
   * [[http://audit.qos.ch/|logback-audit]] : 장시간 추적이 필요한 비지니스 애플리케이션의 이벤트 로깅   * [[http://audit.qos.ch/|logback-audit]] : 장시간 추적이 필요한 비지니스 애플리케이션의 이벤트 로깅
 +
 +===== LOGBACK-1591 취약점 이슈 =====
 +  * 가급적 logback **1.2.9** 이상 버전을 사용할 것.
 +  * [[http://mailman.qos.ch/pipermail/announce/2021/000165.html|[qos.ch-announce] Secuirty Fix - logback 1.2.9 and 1.3.0-alpha11]]
 +  * [[https://jira.qos.ch/browse/LOGBACK-1591|[LOGBACK-1591] Possibility of vulnerability - QOS.ch JIRA]]
 +  * 발생 가능성은 희박한 편임.
 +  * [[https://github.com/cn-panda/logbackRceDemo|cn-panda/logbackRceDemo: The project is a simple vulnerability Demo environment written by SpringBoot. Here, I deliberately wrote a vulnerability environment where there are arbitrary file uploads, and then use the `scan` attribute in the loghack configuration file to cooperate with the logback vulnerability to implement RCE.]]
 +  * write access to logback.xml
 +  * use of versions < 1.2.8
 +  * reloading of poisoned configuration data, which implies application restart or scan="true" set prior to attack
  
 ===== 설정 ===== ===== 설정 =====
줄 113: 줄 123:
 </code> </code>
  
-groovy 설정으로 할경우에는 +<code> 
 +-- 공백으로 변환됨. 
 +%replace(%msg){'[\r\n]', ''
 +</code> 
 + 
 +groovy 설정으로 할 경우에는 
 <code> <code>
 %replace(%msg){"\n","\\n"} %replace(%xException){"\\n", "\\\\n"}%nopex%n %replace(%msg){"\n","\\n"} %replace(%xException){"\\n", "\\\\n"}%nopex%n
줄 152: 줄 167:
 </code> </code>
  
-====== Filter ======+===== Filter =====
   * [[http://logback.qos.ch/manual/filters.html|Logback Filters]]   * [[http://logback.qos.ch/manual/filters.html|Logback Filters]]
  
-===== GEventEvaluator =====+==== GEventEvaluator ====
   * ''EventEvaluatorFilter''에서 [[:groovy|Groovy]] 로 필터 조건을 줄수 있는 Evaluator.   * ''EventEvaluatorFilter''에서 [[:groovy|Groovy]] 로 필터 조건을 줄수 있는 Evaluator.
   * ''ILoggingEvent'' 객체가 ''e'' 혹은 ''event'' 변수로 전달되며 ''TRACE'',''DEBUG'',...''ERROR''도 변수로 전달된다.   * ''ILoggingEvent'' 객체가 ''e'' 혹은 ''event'' 변수로 전달되며 ''TRACE'',''DEBUG'',...''ERROR''도 변수로 전달된다.
줄 180: 줄 195:
 </code> </code>
  
 +===== Stacktrace 에서 불필요한 스택 감추기 =====
 +<code xml>
 +<configuration>
 +    <property name="STACKTRACE_FILTER" value="
 +        불필요한 stack 문자열 나열,
 +        org.junit.platform.engine.,
 +        org.junit.platform.launcher.,
 +        org.junit.platform.commons.util.ReflectionUtils.,
 +        org.junit.jupiter.engine.,
 +        org.junit.jupiter.params.provider.,
 +        org.junit.jupiter.api.AssertThrows.,
 +        org.junit.jupiter.api.AssertDoesNotThrow.,
 +        org.assertj.core.api.AssertionsFor,
 +        org.assertj.core.api.ThrowableAssert.,
 +        org.gradle.
 +    "/>
 +
 +    <property name="CONSOLE_LOG_PATTERN"
 +              value=".... %exception{full,${STACKTRACE_FILTER}} %n"/>
 +
 +</code>
 +
 +  * 단점, ''String.contains()'' 로 검사한다.
 +  * Test 용 설정에 적용하면 좋음.
java/logback.1499652750.txt.gz · 마지막으로 수정됨: 2017/07/10 10:42 저자 kwon37xi