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

BundleABundleBBundleCb 에 따라 다르며 BundleBBundleCa 에 따라 다릅니다. BundleCaBundleCb 는 동일한 패키지를 내보내는 경우 번들과 동일하지만 버전(범위) 제약으로 인해 BundleBBundleA 와 다른 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 구성 요소를 사용하는 경우)만 발생합니다.