Created: January 24, 2022 11:29 AM
1. log4j 3가지 취약점 추가 공개
Reference: https://logging.apache.org/log4j/1.2/ / https://www.boannews.com/media/view.asp?idx=104304&page=1&mkind=1&kind=
CVE-2022-23302, CVE-2022-23305, CVE-2022-23307가 추가되었으며, 각각 JMSSink, JDBCAppender, Chainsaw 모듈에 존재하는 취약점이다.
1. CVE-2022-23302
영향 받는 버전: Apache log4j 1.x 버전에서 JMSSink를 사용하도록 구성된 경우
JMSSink에서 발생하는 역직렬화 취약점이다. 공격자는 JMSSink에 특정 설정을 전달하여, JNDI request를 실행시킬 수 있다. TopicConectionFactoryBindingname
을 설정하는데 사용되는 config 파일이나 ldap 서버를 통해 원격 실행이 가능하다.
// Only log4j 1.x
public JMSSink( String tcfBindingName, String topicBindingName, String username,
String password) {
try {
Context ctx = new InitialContext();
TopicConnectionFactory topicConnectionFactory;
topicConnectionFactory = (TopicConnectionFactory) lookup(ctx, tcfBindingName);
TopicConnection topicConnection =
topicConnectionFactory.createTopicConnection(username, password);
topicConnection.start();
TopicSession topicSession = topicConnection.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
Topic topic = (Topic)ctx.lookup(topicBindingName);
TopicSubscriber topicSubscriber = topicSession.createSubscriber(topic);
topicSubscriber.setMessageListener(this);
...
}
JMSSink
호출에 사용되는 인자 첫번째는 외부 input에 의해 결정되며, tcfBindingName
변수에 대한 검증 없이 lookup
함수를 호출하여 악의적인 입력으로 원격 코드 실행이 가능해진다.
해당 모듈은 log4j2에서는 사라졌다.
2. CVE-2022-23305
영향 받는 버전: Apache log4j 1.x 버전에서 JDBCAppender를 사용하도록 구성된 경우
log4j 1.2.x 버전에서 JDBAppender는 SQL 매개변수가 허용되는데, 입력값에 대한 검증이 없어 공격자가 악의적인 로그 메시지를 JDBAppender를 통해 넘길 때 SQL Injection 취약점이 발생한다.
패치 로그를 확인해보면 기본적으로 JNDI 에서 java 프로토콜만 처리하도록 제한하였고, JNDI는 disable 된 상태가 기본이 되었다.
3. CVE-2022-23307
영향 받는 버전: Apache log4j 1.x 버전 및 Apache Chainsaw 2.1.0 미만 버전
log4j에서 XMLLayout 형식의 로그를 읽을 수 있게 해주는 Chainsaw 로그 뷰어이다. CVE-2020-9493
에서 수정된 내용과 동일한 취약점이다.
'깔짝할짝' 카테고리의 다른 글
2022-01-26 Wed (0) | 2022.01.26 |
---|---|
2022-01-25 Tue (0) | 2022.01.25 |
2022-01-18 Tue (0) | 2022.01.18 |
2022-01-17 Mon (0) | 2022.01.17 |
2022-01-13 Thur (0) | 2022.01.13 |