...
- 2021-12-17 CVE-2021-45046 및 추가 내용 업데이트
- 2021-12-20 CVE-2021-45105 내용 업데이트
- 2021-12-21 ElasticSearch 부분 내용 추가
이 문서는 Apache Log4j 2에서 발생하는 취약점에 대한 제조사별 대처 방안을 공유하기 위해 작성되었다.
...
- Bitbucket은 Logback을 사용하여 Log4J 2 Shell 이슈에 영향이 없으나, 번들 및 함께 사용하는 ElasticSearch에서 다음의 경우, CVE-2021-44228/CVE-2021-45046 보안 이슈에 취약할 수 있음
- Bitbucket Server를 JDK8 이하 버전으로 사용할 경우, 번들로 제공되는 ElasticSearch에서 보안 이슈에 취약할 수 있음
- BitbucketData Center에서 사용하는 독립적인 ElasticSearch를 JDK8 이하 버전으로 사용할 경우, 보안 이슈에 취약할 수 있음
- 아래 ElasticSearch 항목에서 버전별 취약 Matrix 참고
조치방안
※ Bitbucket Server 기준, 번들로 포함되는 ElasticSearch에 대한 조치 가이드로, DataCenter의 경우 번들이 아닌 독립적인 ElasticSearch 솔루션을 사용하므로, 아래 ElasticSearch 항목을 참고하여 조치
...
※ CVE-2021-45046 보안 이슈 대비 JndiLookup.class 삭제
- 5.0.0 ~ 5.6.10, 6.0.0 ~ 6.3.2 버전만 해당, 이외 버전은 위 JVM 환경 변수 추가로 조치됨
- 다음 경로에서 ElasticSearch 버전 확인 가능
- <bitbucket-install-directory>/elasticsearch/lib/elasticsearch-core-버전.jar
- Elastic 공식 가이드
- 다음 경로에서 ElasticSearch 버전 확인 가능
- Log4J 라이브러리 위치로 이동
Bitbucket Server 기준: <bitbucket-install-directory>/elasticsearch/lib/log4j-core-버전.jar - 다음 명령어 수행하여 JndiLookup 클래스 제거 (명령어 수행전 jar파일 백업 필수!)
$ zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class - 솔루션 재기동
...
- SonarQube 솔루션은 Log4J의 두가지 인스턴스가 존재하는데, 하나는 SonarQube의 단위 테스트에 사용되지만 외부에서 사용되거나 SonarQube 배포판에 포함되지 않음. 따라서 CVE-2021-44228 보안 이슈에 영향 받지 않음
- 다른 하나는 번들로 포함되는 ElasticSearch로, SonarQube를 JDK8 이하 버전으로 사용할 경우, CVE-2021-44228/CVE-2021-45046 보안 이슈에 취약할 수 있음
- 공식답변으로 현재 상태에서 위험요소는 없으나, ElasticSearch JVM 환경변수 추가를 통해 보안 조치를 권함
- 2021-12-16 SonarSouce사는 혼란을 피하기위해 보안 조치가 된 ElasticSearch를 포함하는 SonarQube LTS 버전을 각각 8.9.5 및 9.2.3 버전을 출시함
- 아래 ElasticSearch 항목에서 버전별 취약 Matrix 참고
조치방안
1) SonarQube 버전을 다음 버전으로 업그레이드
...
※ CVE-2021-45046 보안 이슈 대비 JndiLookup.class 삭제
- 5.0.0 ~ 5.6.10, 6.0.0 ~ 6.3.2 버전만 해당, 이외 버전은 위 JVM 환경 변수 추가로 조치됨
- 다음 경로에서 ElasticSearch 버전 확인 가능
- <sonarqube-install-directory>/elasticsearch/lib/elasticsearch-core-버전.jar
- Elastic 공식 가이드
- 다음 경로에서 ElasticSearch 버전 확인 가능
- Log4J 라이브러리 위치로 이동
<sonarqube-install-directory>/elasticsearch/lib/log4j-core-버전.jar - 다음 명령어 수행하여 JndiLookup 클래스 제거제거 (명령어 수행전 jar파일 백업 필수!)
$ zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class - 솔루션 재기동
...
- 다음 경로의 jvm.options(ElasticSearch JVM 설정) 파일 편집
tar 또는 zip 배포판: <elasticsearch-directory>/config/jvm.options
RPM 패키지 설치시: /etc/elasticsearch/jvm.options 다음 환경변수 추가 후 저장
-Dlog4j2.formatMsgNoLookups=true코드 블럭 title jvm.options collapse true . . (아래 내용 추가) ## Log4j vulnerability(CVE-2021-44228) -Dlog4j2.formatMsgNoLookups=true . .
- 솔루션 재기동
※ CVE-2021-45046 보안 이슈 대비 대비 JndiLookup.class 삭제
...
- 5.0.0 ~ 5.6.10, 6.0.0 ~ 6.3.2 버전만 해당, 이외 버전은 위 JVM 환경 변수 추가로 조치됨
- Elastic 공식 가이드
- Log4J 라이브러리 위치로 이동
tar 또는 zip 배포판: <elasticsearch-directory>/lib/log4j-core-버전.jar
RPM 패키지 설치시: /etc/elasticsearch/lib/log4j-core-버전.jar - 다음 명령어 수행하여 JndiLookup 클래스 제거제거 (명령어 수행전 jar파일 백업 필수!)
$ zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class - 솔루션 재기동
...