🔍 CVE-2023-41337

6.1
CVSS Score
MEDIUM
2023-12-12
2026-06-17 06:21
✅ 완료

🇰🇷 한글 설명

h2o HTTP 서버의 2.3.0-beta2 및 이전 버전에서 발생하는 취약점으로, 여러 주소나 포트를 통해 서로 다른 백엔드 서버를 관리할 때 발생합니다. 공격자가 클라이언트와 서버 간의 패킷을 가로채 TLS 세션 재개를 유도하면, HTTPS 요청을 공격자가 제어하는 다른 백엔드로 잘못 전달하여 내용을 관찰할 수 있습니다.

💡 쉬운 설명

서버가 여러 개의 문을 열어두었을 때, 공격자가 손님이 원래 가려던 문이 아닌 자신이 관리하는 문으로 들어가도록 유도하는 공격입니다. 이를 통해 손님이 주고받는 비밀스러운 정보를 공격자가 몰래 훔쳐볼 수 있습니다.

🇺🇸 원문 (English)

h2o is an HTTP server with support for HTTP/1.x, HTTP/2 and HTTP/3. In version 2.3.0-beta2 and prior, when h2o is configured to listen to multiple addresses or ports with each of them using different backend servers managed by multiple entities, a malicious backend entity that also has the opportunity to observe or inject packets exchanged between the client and h2o may misdirect HTTPS requests going to other backends and observe the contents of that HTTPS request being sent. The attack involves a victim client trying to resume a TLS connection and an attacker redirecting the packets to a different address or port than that intended by the client. The attacker must already have been configured by the administrator of h2o to act as a backend to one of the addresses or ports that the h2o instance listens to. Session IDs and tickets generated by h2o are not bound to information specific to the server address, port, or the X.509 certificate, and therefore it is possible for an attacker to force the victim connection to wrongfully resume against a different server address or port on which the same h2o instance is listening. Once a TLS session is misdirected to resume to a server address / port that is configured to use an attacker-controlled server as the backend, depending on the configuration, HTTPS requests from the victim client may be forwarded to the attacker's server. An H2O instance is vulnerable to this attack only if the instance is configured to listen to different addresses or ports using the listen directive at the host level and the instance is configured to connect to backend servers managed by multiple entities. A patch is available at commit 35760540337a47e5150da0f4a66a609fad2ef0ab. As a workaround, one may stop using using host-level listen directives in favor of global-level ones.

📍 영향받는 시스템

h2o version 2.3.0-beta2 and prior

⚔️ 공격 벡터

TLS 세션 재개 과정에서 패킷을 가로채 다른 주소나 포트로 리다이렉션하여 세션을 오용함

🛡️ 대응 방법

커밋 35760540337a47e5150da0f4a66a609fad2ef0ab를 적용하거나, 호스트 레벨 대신 글로벌 레벨의 listen 지시어를 사용하도록 설정 변경

🔧 검증 코드

출력된 h2o 버전이 2.3.0-beta2 이하인지 확인하여 취약 여부를 판단합니다.

Shell / Script
h2o --version 2>/dev/null || dpkg -l | grep h2o

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:A/AC:H/PR:L/UI:R/S:U/C:H/I:H/A:N

💻 영향받는 소프트웨어

Microsoft Exchange Server