7장. 확인된 문제
다음 하위 섹션에서는 버전 7.8의 알려진 문제에 대해 설명합니다.
7.1. CVE 보안 취약점
미들웨어 통합 플랫폼인 Fuse는 다수의 타사 구성 요소와 잠재적으로 통합될 수 있습니다. Fuse의 일부 타사 종속 항목에 보안 취약점이 있을 수 있는 가능성을 항상 제외할 수 있는 것은 아닙니다. 이 섹션에서는 Fuse 7.8의 타사 종속 항목에 영향을 미치는 보안과 관련된 일반적인 취약점 및 노출 (CVE)에 대해 설명합니다.
- ENT Cryostat-8113 CVE-2018-10237 guava: Atomic CryostatArray 및 CompoundOrdering 클래스의 바인딩되지 않은 메모리 할당을 통해 원격 공격자가 서비스 거부를 일으킬 수 있습니다 [fuse-7.0.0]
Google Guava 버전 11.0~24.1은
Atomic CryostatArray
클래스(Java serialization로 직렬화된 경우) 및CompoundOrdering
클래스(GWT 직렬화로 직렬화된 경우)의 바인딩되지 않은 메모리 할당에 취약합니다. 공격자는 Guava를 사용하고 신뢰할 수 없는 데이터를 역직렬화하여 서비스 거부를 유발하는 애플리케이션을 악용할 수 있습니다. 자세한 내용은 CVE-2018-10237 을 참조하십시오.이 보안 취약점을 방지하려면 다음을 권장합니다.
-
Atomic CryostatArray 인스턴스
또는 알 수 없는 소스에서CompoundOrdering
인스턴스를 역직렬화하지 마십시오. - Guava 버전 24 및 이전 버전을 사용하지 마십시오 (일부 경우에는 이전 버전을 피할 수 없습니다).
Guava의 이전 버전(vulnerable) 버전을 방지하기 위해 Fuse 7.7은 기본적으로 Guava 27을 선택할 수 있도록 모든 컨테이너에 대한 BM(MM) 파일을 구성했습니다. 즉, Fuse BOM을 Maven 프로젝트에 통합하는 경우(POM 파일의 종속성
Management 섹션에 BOM에 대한 종속성
을 추가) 명시적 버전을 지정하지 않고 Guava 아티팩트에 대한 종속성을 지정하면 Guava 버전이 BOM에 지정된 버전으로 기본 설정됩니다. 이 버전은 Fuse 7.7 BOM의 버전 27입니다.그러나 하나 이상의 일반적인 사용 사례는 Apache Karaf (OSGi) 컨테이너를 포함하는데, 여기서 Guava ( Guava)의 취약한 버전을 사용하지 않는 것은 불가능합니다: OSGi 애플리케이션이 Guava와 Swagger를 함께 사용하는 경우, Swagger에 필요한 버전이기 때문에 Guava 20을 사용해야 합니다. 여기서 우리는 왜 이것이고 이전 (vulnerable) Guava 20 라이브러리를 되돌리도록 POM 파일을 구성하는 방법을 설명합니다. 먼저 이중 OSGi 체인 의 개념을 이해해야합니다.
이중 OSGi 체인
OSGi 런타임의 번들은 패키지 제약 조건(패키지 이름 + 선택적 버전/범위) Cryostat- Cryostatimports 및 export를 사용하여 함께 연결됩니다. 각 번들에는 여러 개의 가져오기가 있을 수 있으며 일반적으로 해당 번들에는 여러 번 번들이 지정된 번들이 있습니다. 예를 들면 다음과 같습니다.
BundleA +-- BundleB | +-- BundleCa +-- BundleCb
BundleA
는BundleB
및BundleCb
에 따라 다르며BundleB
는BundleCa
에 따라 다릅니다.BundleCa
및BundleCb
는 동일한 패키지를 내보내는 경우 번들과 동일하지만 버전(범위) 제약으로 인해BundleB
는BundleA
와 다른BundleC
버전을 사용합니다.애플리케이션에 Guava 및 Swagger에 대한 종속성을 포함할 때 발생하는 상황을 반영하기 위해 이전 다이어그램을 다시 작성합니다.
org.jboss.qe.cxf.rs.swagger-deployment +-- Guava 27 +-- Swagger 1.5 +-- reflections 0.9.11 +-- Guava 20
이 번들 구성을 배포하려고 하면
org.osgi.framework.BundleException: 제약 조건 위반을 사용합니다
.Guava 20으로 되돌리기
프로젝트에서 Guava 및 Swagger 라이브러리(직접 또는 간접적으로)를 모두 사용하는 경우 다음과 같이 Guava 번들 가져오기에 대해 명시적 버전 범위(또는 전혀 범위 없음)를 사용하도록
maven-bundle-plugin
을 구성해야 합니다.<Import-Package> com.google.common.base;version="[20.0,21.0)", com.google.common.collect;version="[20.0,21.0)", com.google.common.io;version="[20.0,21.0)" </Import-Package>
이 구성을 사용하면 OSGi 애플리케이션이 Guava 20 라이브러리로 되돌아갑니다. 따라서 이 경우
Atomic CryostatArray 인스턴스를 역직렬화하는
것을 방지하는 것이 특히 중요합니다.-
- CVE-2017-12629 bler/Lucene -security bypass to access sensitive data -CVE-2017-12629
Apache Performr는 Apache Lucene 검색 엔진을 사용하는 널리 사용되는 오픈 소스 검색 플랫폼입니다. 애플리케이션이 Apache Lucene과 함께 Apachesriovr를 사용하는 경우(예: Camel achievedr 구성 요소를 사용하는 경우) 이 보안 취약점의 영향을 받을 수 있습니다. 이 취약점에 대한 자세한 내용과 수행할 완화 단계를 보려면 연결된 보안 권고를 참조하십시오.
참고Fuse 런타임에서는 Apache achievedr 또는 Apache Lucene을 직접 사용하지 않습니다. 보안 위험은 통합 애플리케이션 컨텍스트에서 Apache achievedr 및 Apache Lucene을 함께 사용하는 경우(예: Camel Quarkusr 구성 요소를 사용하는 경우)만 발생합니다.