2.16.0 이전의 Log4j 버전에는 ldap JNDI 파서를 통한 원격 코드 실행 취약점이 있습니다. Apache의 Log4j 보안 가이드에 따라: Apache Log4j2 <=2.14.1 구성, 로그 메시지 및 매개변수에 사용되는 JNDI 기능은 공격자가 제어하는 LDAP 및 기타 JNDI 관련 엔드포인트로부터 보호하지 않습니다. 로그 메시지 또는 로그 메시지 매개변수를 제어할 수 있는 공격자는 메시지 조회 대체가 활성화된 경우 LDAP 서버에서 로드된 임의 코드를 실행할 수 있습니다. log4j 2.16.0부터 이 동작은 기본적으로 비활성화되었습니다.
Log4j 버전 2.15.0에는 취약점에 대한 이전 수정 사항이 포함되어 있었지만 해당 패치는 모든 상황에서 공격자가 제어하는 JNDI 조회를 비활성화하지 않았습니다. 자세한 내용은 이 권고의 버전 2.16.0에 대한 업데이트된 조언 섹션을 참조하세요.
취약한 Log4J 버전을 사용하여 신뢰할 수 없거나 사용자가 제어하는 데이터를 기록하면 애플리케이션에 대해 RCE(원격 코드 실행)가 발생할 수 있습니다. 여기에는 예외 추적, 인증 실패, 사용자 제어 입력의 기타 예상치 못한 벡터 등 기록된 오류에 포함된 신뢰할 수 없는 데이터가 포함됩니다.
v2.15.0 이전의 모든 Log4J 버전은 이 특정 문제의 영향을 받습니다.
EOL(End Of Life)로 간주되는 Log4J의 v1 분기는 다른 RCE 벡터에 취약하므로 가능한 경우 2.16.0으로 업데이트하는 것이 좋습니다.
이 수정 사항의 추가 백포트는 버전 2.3.1, 2.12.2 및 2.12.3에서 사용할 수 있습니다.
org.apache.logging.log4j:log4j-core 패키지만 이 취약점의 직접적인 영향을 받습니다. org.apache.logging.log4j:log4j-api는 사용 중인 경우 호환성을 보장하기 위해 org.apache.logging.log4j:log4j-core 패키지와 동일한 버전으로 유지되어야 합니다.
Apache Logging Services 팀은 기본적으로 JNDI를 비활성화하고 메시지 조회에 대한 지원을 완전히 제거하는 버전 2.16.0 릴리스에 대한 업데이트된 완화 조언을 제공했습니다. 버전 2.15.0에서도 특정 컨텍스트 정보를 제공하기 위해 레이아웃에 사용된 조회는 여전히 재귀적으로 해결되어 JNDI 조회를 트리거할 수 있습니다. 이 문제는 CVE-2021-45046으로 추적되고 있습니다. 자세한 내용은 CVE-2021-45046에 대한 GitHub 보안 권고에서 확인할 수 있습니다.
공격자가 제어하는 JNDI 조회를 피하고 싶지만 2.16.0으로 업그레이드할 수 없는 사용자는 해당 조회가 공격자가 제공한 데이터로 확인되지 않도록 하고 JndiLookup 클래스가 로드되지 않았는지 확인해야 합니다.
Log4J v1은 EOL(수명 종료) 상태이므로 이 문제에 대한 패치를 받을 수 없습니다. Log4J v1은 다른 RCE 벡터에도 취약하므로 가능한 경우 Log4J 2.16.0으로 마이그레이션하는 것이 좋습니다.
필수 조치
For all affected software assets for which updates exist, the only acceptable remediation actions are: 1) Apply updates; OR 2) remove affected assets from agency networks. Temporary mitigations using one of the measures provided at https://www.cisa.gov/uscert/ed-22-02-apache-log4j-recommended-mitigation-measures are only acceptable until updates are available.
Log4j에 원격 코드 삽입
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 100.00 |
| 악용 신호(KEV 등재) | ×1.50 |
| 랜섬웨어 완충 | +5.00 |
| VPI | 100.00 |
VPI 공식 vpi-v1 기준