Apache Log4j 보안 이슈 (CVE-2021-44228) 안내
요약
Apache Log4j 보안 이슈 (CVE-2021-44228)에 대한 Esri 본사의 조치 내용을 한국에스리 기술지원센터에서 안내 드립니다.
설명
Apache Log4j는 프로그램 작성 중 로그를 남기기 위해 사용되는 자바 기반의 오픈소스 유틸리티입니다. Log4j는 시스템 구동 중 발생하는 로그를 수집할 수 있도록 사용되는 라이브러리로, 모든 개발 어플리케이션에 적용되어져 있으며 Esri의 제품군에도 일부 포함되어져 있습니다.
현재 리포트 된 보안 취약점은 다음과 같습니다.
- CVE-2021-44228 (log4j 2.x JNDILookup RCE fix 1)
- CVE-2021-45046 (log4j 2.x JNDILookup fix 2)
- CVE-2021-4104 (log4j 1.2 JMSAppender)
- CVE-2021-45105 (log4j 2.x Content Lookups DoS)
- CVE-2021-44832 (log4j 2.x JDBCAppender)
- CVE-2021-23305 (log4j 1.2.x JDBCAppender)
- CVE-2021-23302 (log4j 1.2.x JMSSink)
- CVE-2021-23307 (log4j 1.2.x Chainsaw)
현재 문제가 되고 있는 보안 이슈는 아파치 재단에서 제공하는 보안 업데이트를 수행하지 않을 경우, 해당 프로그램의 취약점을 악용해 공격자가 원격에서 공격코드를 실행시킬 수 있어 심각한 피해를 입는다는 점입니다.
Apache 재단의 log4j 라이브러리는 ArcGIS Enterprise 구동 파일 내에 존재하는 것으로, Apache-Tomcat WEB/WAS와는 별개입니다. tomcat 환경에서는 기본적으로 log4j를 사용하지 않으나 타 프로그램 이용 시 설치되었을 수 있습니다.
본 문서는 Esri 제품에 대하여 안내 드리고 있으며, 타 제품을 통한 라이브러리 설치에 관한 부분은 관련 제품사에 문의하여 주시기 바랍니다.
Esri 공식 답변 (09/08일 업데이트 내용 포함)
Esri 본사의 공식 답변은 아래와 같습니다.
- ArcGIS Enterprise 10.8 이상 버전에서는 악성 코드 감염으로 인한 원격 조종 불가능
- ArcGIS Enterprise 10.8 이하 버전에서는 악성 코드 감염으로 인한 원격 조종 가능. 패치 배포 시 즉각 적용 필요
- 기술지원주기에 해당되는 버전에 한하여 패치 배포 예정
- Retired 버전의 경우, Java Runtime Environment (JRE) 보호를 통한 원격 코드 실행을 방지할 수 있도록 ArcGIS Enterprise 10.8 이상 버전 (현재 최신 버전 10.9.1)으로 업그레이드
- 클라우드 기반 환경, 외부 트래픽이 있는 환경에서 ArcGIS Enterprise를 운용하고 있는 상태인 경우, 네트워크 관리자는 ArcGIS Enterprise Web Application Firewall (WAF) 가이드를 따라 WAF 규칙을 적용하여 Log4Shell 공격을 제한할 수 있습니다. 만약 Enterprise가 클라우드 기반에 설치되어 있는 경우, 클라우드 제공 업체의 최신 WAF 규칙 적용이 필요합니다.
※ 관리자는 테스트 시스템에 시험 적용하여 자체 개발한 웹 앱 등, 모든 것들이 정상 작동하는지 자체적으로 검토한 다음 필터 전면 적용을 확정하여 주시기 바랍니다. 위 가이드 중 OWASP 필터는 선택적으로만 적용해야 하며, 그러지 않은 경우 ArcGIS Enterprise가 정상 작동하지 않을 수 있습니다.
아래는 09/08일 기준으로 업데이트 된 내용입니다.
1. ArcGIS Enterprise
ArcGIS Enterprise의 컴포넌트 제품 중에서는 log4j 라이브러리를 사용하고 있으나, Esri에서 사용되고 있는 부분에서는 어떤 악성 코드도 확인되지 않았습니다.
CVE-2021-45105 보안 취약점에 대해 Portal for ArcGIS / ArcGIS Server / ArcGIS Data Store에서는 공격을 받을 수 있는 악용 가능성이 없음을 확인 완료하였습니다.
그러나, Esri는 안전성을 고려하여 미합중국의 Cybersecurity & Infrastructure Security Agency에서공표한 Emergency Directive 22-02에 따라 Log4Shell 보안 취약점을 완화할 수 있는 스크립트를 생성하였습니다. 이를 기술지원범위의 모든 ArcGIS Enterprise 및 단일 ArcGIS Server에 적용하실 것을 강력히 권장합니다.
해당 스크립트는 아파치 재단에서 안내된 내용을 기반으로 작성되었으며, JndiLookup 클래스를 제거하는 것으로 별도의 log4j 버전 업데이트 없이 조치를 취할 수 있는 방법입니다. CVE-2021-44228 (Log4j 관련 보안 취약점)과 CVE-2021-45046에 대한 조치를 취하실 수 있습니다.
하위의 스크립트 적용에 대한 내용을 확인하여 주시기 바랍니다.
ArcGIS Enterprise 11.0 배포
- Log4j 2.x – ESRI는 Log4j 2.17.1버전이나 그 상위의 버전을 사용합니다.
- ESRI는 2개의 코드로 이루어진 1버전 요소를 ArcGIS Data Store에서 사용하고 있으나, 취약한 클래스는 제거한 상태입니다.
- Object Store
- Window에서는 ArcGIS Enterprise Builder를 제외하고 새 Enterprise 제품의 경우 기본적으로 설치되어 있지 않습니다. 이전 버전에서 업그레이드할 때 설치 됩니다.
- 원하시는 경우에는 Windows의 앱 및 기능을 통해 제거가 가능합니다.
- Internal logger
- 원하시는 경우 응용 프로그램 보안 또는 기능에 영향을 미치지 않고 .jar 파일을 제거할 수 있습니다.
- 위치 : /ArcGIS/Datastorer/framework/webapps/arcgis#datastoreadmin/WEB-INF/lib/log4j-1.2.17-patched.jar
- Log4j 1.x 코드의 경우 Log4j Bridge가 다른 구성 요소에 사용되므로 사용되지 않습니다.
- 패치로 인해 생성되는 비어있는 파일로 인한 문제는 발생하지 않았습니다.
2. ArcGIS Online
ArcGIS Online에서 Log4j의 악용은 발견되지 않았으나, 많은 주의를 기울인 결과FedRAMP 인증된 SaaS 제공을 위한 취약한 코드 제거를 패치와 업데이트를 통해 완료하였습니다.
3. ArcGIS Notebook Server
해당 제품은 내부 프레임워크와 Docker 컨테이너 이미지로 나누어져 있습니다.
- 내부 프레임워크
- 10.7.x 버전 외에 Log4j를 포함하고 있지 않습니다.
- 10.7.x 버전은 JMSAppender를 사용하지 않았습니다, 그러므로 Log4j 취약점 2021-44228, 2021-45046, 또는 2021-4104로부터 안전합니다.
- Docker 컨테이너 이미지
- Log4j 라이브러리가 포함되어져 있으나, 사용하기 위해서는 notebook 컨테이너에 대한 특정 권한이 필요합니다. 따라서, RCE 위험에 해당되지 않습니다.
4. Esri Managed Cloud Services
EMCS Advanced 와 Advanced+는 Log4j 취약점에 대해 웹 필터링을 적용하고 있습니다. JNDILookup 클래스를 모든 시스템 내에서 스크립트를 적용한 상태입니다. CVE-2021-44228과 관련된 패치 역시 곧 적용될 예정입니다.
5. ArcMap, ArcGIS Monitor
해당 제품은 Log4j를 포함하고 있지 않으며, 그에 따라 취약점이 존재하지 않습니다. 익스텐션에 관련된 부분은 아래 6번을 확인해주세요.
6. ArcGIS Pro
최근 배포된 ArcGIS Pro는 Log4j를 포함하고 있으나 소프트웨어 자체적으로 원격 제어에 반응하지 않으므로 악용될 수 없습니다.
- Esri는 고객분들께 3 버전이나 그 이상을 활용할 것을 권장드립니다.
- Log4j 2.x – Log4j 2.17.1버전을 사용하거나 그 이상 버전을 권장합니다.
- Log4j 1.x – Log4j 1.x 코드는 Log4j Bridge가 활용되기 때문에 활용되지 않습니다.
- Pro 2.6.1+, 2.7.6+, 2.8.6+, 2.9.2+에 대한 패치를 사용할 수 있습니다.
- Log4j 2.x – Log4j 2.17.1버전을 사용하거나 그 이상 버전을 권장합니다.
- Log4j 1.x – Log4j 1.x 코드는 활욛괴고 있습니다, 하지만 취약한 클래스들은 제거 되었습니다.
7. Desktop Extensions
선택적으로 사용하는 익스텐션에 대해 보안 취약점과 관련된 부분입니다.
- ArcGIS Pro Data Interoperability Extension
- ESRI는 고객분들께 3 버전이나 그 이상의 버전을 활용할 것을 권장 드립니다.
- ArcGIS Pro 2.7, 2.8, 2.9 패치를 My Esri에서 받을 수 있습니다.
- 버전에 해당하는 ArcGIS Pro용 Data Interoperability 패치를 설치하기 전에 하위 버전의 ArcGIS Pro용 ArcGIS Data Interoperability를 설치해야 합니다.
- ArcMap Data Interoperability Extension
- 10.8.2 패치가 가능합니다.
- ArcMap은 더 이상 일반적인 지원을 하지 않기 때문에 ESRI는 사용자 분들께 ArcGIS Pro로 이동을 권장 드립니다. 만약 사용자 분들의 기관이 ArcMap을 계속해서 사용해야 하는 경우, 마지막으로 배포된 10.8.2 패치를 확인하시길 바랍니다.
8. License Manager
Esri의 License Manager는 Flexera의 제품을 이용하고 있습니다. 해당 제품에는 Log4j가 포함되어져 있지 않아 보안 취약점에 해당하지 않습니다.
9. Esri Geoportal Server
해당 오픈 소스 제품은 2021년 12월 17일에 2.65 버전으로 업데이트 되었습니다.
10. Validating Mitigations and Security Scanner False Positive Alerts
- Tenable security scanner
- Log4j 문제를 검출하기 위한 다수의 플러그인이 존재합니다. 하지만, 기본 플러그인 156002는 Log4j의 버전만 체크하므로 Esri의 완화 스크립트를 사용한 고객에게 잘못된 경고가 생성됩니다. 이러한 상황에 사용자분들은 플러그인 포트의 156001의 섹션을 참조하여 보안에 주의를 해야 합니다, 만약 이 섹션에서 치명적으로 취약한 코드가 Log4j에서 삭제될 경우 아래와 같은 메시지를 확인할 수 있습니다. JndiLookup.class association : Not Found.
- LogPresso Log4j Scanner
- Internet Security 센터에서 Log4j 문제를 식별하기 위해 제공하는 도구는 , ArcGIS Enterprise Log4j 컴포넌트가 중대한 취약성에 대해 완화되었는지 여부를 확인하고 있습니다. 이 도구는 설치가 필요 없으며, Windows 또는 Linux에서 실행되고 일반적으로 제품을 스캔하는 데 2분도 걸리지 않습니다. 또한, 아래와 같이 제품의 설치 경로(target_path)를 가리키기만 하면, CMD 명령으로 실행할 수 있습니다. log4j2-scantarget_path
스크립트 적용 (09/08 추가 내용)
10.6 이상 버전에 스크립트가 정상적으로 적용되는 것을 검증 완료하였습니다.
ArcGIS Enterprise 10.4 이하 버전은 Log4j 1버전을 사용 중이며, JMSAppender가 포함되어져 있지 않아 보안 취약점에 해당하지 않습니다. 스크립트는 Log4j 2버전을 기준으로 작성되어 10.4 이하 버전은 적용이 불가합니다.
세부적인 적용 방법은 아래 내용을 통해 확인하실 수 있습니다.
1. ArcGIS Server (GIS Server, GeoAnalystics Server, Image Server 포함)
ArcGIS Server의 모든 경로를 통해 Log4j-core.jar 파일의 JndiLookup.class 파일을 찾아 제거합니다.
How To: Run the Log4Shell Mitigation Script for ArcGIS Server (esri.com)
2. Portal for ArcGIS
Portal for ArcGIS는 직접적으로 log4j 2버전을 사용하지 않으나, 인덱스 서비스 제공을 위해 설치되는 elasticsearch 라이브러리가 log4j를 사용중이므로 동일한 스크립트 적용이 필요합니다.
How To: Run the Log4Shell Mitigation Script for Portal for ArcGIS (esri.com)
3. ArcGIS Data Store
ArcGIS Data Store는 직접적으로 log4j 2버전을 사용하지 않으나, spatiotemporal datastore가 설치된 경우 간접적으로 사용되어 동일한 스크립트 적용이 필요합니다.
How To: Run the Log4Shell Mitigation Script for ArcGIS Data Store (esri.com)
4. ArcGIS GeoEvent Server
ArcGIS GeoEventServer의 모든 경로를 통해 Log4j-core.jar 파일의 JndiLookup.class 파일을 찾아 제거합니다.
How To: Run the Log4Shell Mitigation Script for ArcGIS GeoEvent Server (esri.com)
5. ArcGIS Workflow Manager Server
ArcGIS Workflow Manager Server의 모든 경로를 통해 Log4j-core.jar 파일의 JndiLookup.class 파일을 찾아 제거합니다.
How To: Run the Log4Shell Mitigation Script for ArcGIS Workflow Manager Server (esri.com)
6. ArcGIS GeoEnrichment Server
ArcGIS GeoEnrichment Server의 모든 경로를 통해 Log4j-core.jar 파일의 JndiLookup.class 파일을 찾아 제거합니다.
How To: Run the Log4Shell Mitigation Script for GeoEnrichment Server (esri.com)
참고사항:
- 특정 버전의 패치가 확인된다면, 즉시 적용하여 주시기 바랍니다.
- 스크립트 적용 후에도, log4j의 버전은 변하지 않습니다. 라이브러리 내의 취약 코드만 제거됩니다.
- ArcGIS Enterprise 제품군은 Log4j 1.2 와 JMSAppender를 사용하지 않습니다. 그러므로, CVE-2021-4101의 영향을 받지 않습니다.
- ArcGIS Web Adaptor는 Log4j core를 사용하지 않아 안전에 취약하지 않습니다.
- 스크립트 적용 외에도, 기술지원주기에 해당되는 버전에 대한 패치가 가능한 빨리 배포될 예정입니다.
- 패치 배포를 기다리는 것보다 스크립트 적용을 먼저 진행하는 것을 적극 권장합니다.
- ArcGIS Server Data Interoperability 익스텐션은 Log4j 2.x 컴포턴트를 가지고 있어 Safe Software 가이드에 따라 최신 Log4j 버전으로 업데이트 하실 수 있습니다. Data Interoperability version에 기반하여 다음의 경로에 있는 Log4j 버전을 업데이트 하실 수 있습니다. 1) <DataInterOpExtInstall>/Program Files 64/Esri/Data Interoperability/plugins, 2) <DataInterOpExtInstall>/Program Files 64/Esri/Data Interoperability/Data Interoperability AO11/plugins
보호나라 홈페이지 조치 방법 적용 자제 권고
아울러, 현재 보호나라 홈페이지를 통해 전달되고 있는 조치 방법은 아파치 재단으로부터 신규 버전 업데이트가 적용되지 않은 버전에 해당하며, log4j에 대해 삭제 및 환경변수 조정에 대해 설명하고 있습니다.
ArcGIS Enterprise 내부의 Log4j 컴포넌트를 직접 변경하거나 삭제하는 방법은 시스템 안정성 및 기능성을 저하시킬 수 있음으로 지양하여 주시기 바랍니다. 또한, Apache 재단이 12/14일 발표한 내용처럼 환경변수 조정은 불필요한 조치 사항입니다.
따라서, 관련 담당자 분들께서는 보호나라 홈페이지를 통해 전달되는 조치방법이 아닌 Esri의 공식적인 패치를 적용하시는 것을 권장합니다.
ArcGIS Server 버전에 따른 Log4j 버전 안내
*10.0 버전) ant-apache-log4j로 현재 보안 취약점으로 알려진 log4j-core와는 다릅니다. 자세한 내용은 아래 링크를 통해 확인해주세요. https://mvnrepository.com/artifact/org.apache.ant/ant-apache-log4j