RHSB-2023-003 HTTP/2 Rapid Reset (CVE-2023-44487 and CVE-2023-39325)

Public Date: October 16, 2023, 02:51
갱신됨 November 10, 2023, 08:46 - Chinese, Simplified 영어 (English) French Japanese
Ongoing 상태
Important Impact

Red Hat은 여러 HTTP/2 서버 구현에 영향을 미치는 DDoS(분산 서비스 거부) 취약점을 인지하고 있습니다. 이 취약점은 CVE-2023-44487 및 CVE-2023-39325로 지정되었으며, 이를 "신속한 재설정 공격 (Rapid Reset Attack)"이라고 합니다. 

이 보안 문제는 CVSSv3 점수 7.5로 평가되었으며 중요한 보안 영향을 미치는 것으로 분류되었습니다.

미국 사이버 보안 및 인프라 보안국(CISA)은 이 취약점을 활성 공격으로 선언했습니다. 또한 이 취약점은 2023년 8월부터 활발하게 악용되고 있는 것으로 보고되었습니다.

Red Hat은 영향을 받는 제품을 파악하고 있으며 현재 제품 목록은 CVE 페이지 CVE-2023-44487 및 CVE-2023-39325에서 확인할 수 있습니다.

Red Hat Enterprise Linux (RHEL CoreOS 포함)에서 지원되는 모든 Red Hat 제품도 잠재적으로 영향을 받을 수 있습니다. 여기에는 다음이 포함됩니다.

  • RHEL 또는 UBI 컨테이너 이미지를 기반으로 하는 제품 컨테이너입니다. 이러한 이미지는 이 취약점에 대한 수정 사항이 있는 경우 컨테이너 상태 정보를 포함하도록 정기적으로 업데이트되며, 이는 Red Hat 컨테이너 카탈로그의 컨테이너 상태 인덱스에서 확인할 수 있습니다. 또한 기본 이미지가 업데이트되면 모든 고객 컨테이너를 다시 빌드해야 합니다.

  • RHEL 채널에서 소프트웨어 패키지를 가져오는 제품에는 Red Hat OpenShift Container Platform, Red Hat OpenStack Platform, Red Hat Virtualization 등과 같은 제품이 포함됩니다. 이러한 프로덕션 환경에서 영향을 받는 RHEL 패키지가 최신 버전인지 확인하십시오.

HTTP/2 프로토콜은 일련의 다중화된 스트림을 사용하여 클라이언트와 서버 간의 통신을 설정하므로 통신 처리량이 향상됩니다.

CVE-2023-44487 및 CVE-2023-39325에서의 공격 원리는 공격자가 상당한 수의 스트림을 생성한 후 각 스트림을 취소하는 것으로 구성됩니다. 이 문제로 인해 서버는 리소스가 부족해지며 궁극적으로 다른 유효한 요청을 처리할 수 없게 됩니다. 

사용자는 수정 사항이 나오는 즉시 소프트웨어를 업데이트할 것을 강력히 권장합니다. 
이 보안 취약점에 대한 완화 방법에는 여러 가지가 있습니다.

HTTP/1.1과 달리 HTTP/2 프로토콜은 일련의 데이터 스트림을 사용하여 클라이언트와 서버 간의 통신을 설정합니다. 이를 통해 클라이언트는 단일 연결 내에서 여러 요청을 보낼 수 있으며, 이 요청은 서버 측에서 병렬 방식으로 처리됩니다. HTTP/2의 또 다른 기능은 클라이언트가 RST_STREAM 프레임을 서버에 전송하여 이전에 보낸 스트림을 취소할 수 있도록 하는 기능입니다. 클라이언트는 서버가 RST_STREAM 프레임을 수신한 직후 스트림이 취소될 것이라고 가정할 수 있습니다.

이 취약점은 이러한 기능을 악용하여 동일한 연결 내에서 많은 수의 스트림을 생성하고 초기 요청에 대한 응답을 받기 전에 RST_STREAM 프레임을 사용하여 스트림을 취소합니다. 이로 인해 서버는 전송된 모든 프레임의 압축을 풀고 처리하기 위해 많은 양의 리소스를 할당하게 되어 결국 시스템 리소스가 부족해지게 됩니다. 공격자는 이 동작을 악용하여 서버에 구성된 최대 연결 한도를 초과하지 않고 대상 시스템에 심각한 성능 저하를 초래하도록 합니다.

성능 및 리소스 소비 이유로 NGINX는 동시 스트림 수를 기본값인 128로 제한합니다. 자세한 내용은 http2_max_concurrent_streams를 참조하십시오. 또한 네트워크와 서버 성능의 균형을 최적으로 유지하기 위해 NGINX는 기본적으로 HTTP 연결 유지를 사용하여 클라이언트가 최대 1000개의 요청에 대해 HTTP 연결을 유지할 수 있도록 합니다. 자세한 내용은 keepalive_requests를 참조하십시오.

Red Hat은 영향을 받는 제품을 파악하고 있으며 현재 제품 목록은 CVE 페이지 CVE-2023-44487 및 CVE-2023-39325에서 확인할 수 있습니다.

영향을 받는 Red Hat 제품 버전을 실행 중인 모든 Red Hat 고객은 에라타를 사용할 수 있는 즉시 해당 제품을 업데이트할 것을 권장합니다.

특정 서버의 HTTP 버전을 확인하려면 curl 명령을 사용합니다. 이는 특정 서버의 실제 HTTP 프로토콜 버전을 알려줍니다. 다음 스크립트를 사용하십시오. 예: https://redhat.com을 테스트하는 경우 


$ curl -sl https://redhat.com -o/dev/null -w '%{http_version}\n'

1.1


HTTPS, 포트 20346을 사용하여 가상 서버 172.16.8.3을 테스트해야 하는 경우:

$ curl -sl https://172.16.8.3:20346 -o/dev/null -w '%{http_version}\n'

2

1.1 또는 1을 반환하면 시스템은 이 CVE에 영향을 받지 않는다는 의미입니다. 버전 2를 반환하는 시스템은 이 취약점의 영향을 받을 수 있습니다.​​​​​​​

https://www.cisa.gov/news-events/alerts/2023/10/10/http2-rapid-reset-vulnerability-cve-2023-44487

https://www.openwall.com/lists/oss-security/2023/10/10/6 

GPG를 사용하여 제품 보안팀이 서명한 콘텐츠를 확인하는 방법




Comments