🇰🇷 한글 설명
Apache bRPC의 HTTP/2 서버 DATA 프레임 파서에서 정수 언더플로우 및 경계 외 읽기 취약점이 발견되었습니다. 인증되지 않은 원격 공격자가 PADDED 플래그가 설정된 0 길이의 데이터 프레임을 전송하여 서비스 거부(DoS)를 유발할 수 있습니다.
💡 쉬운 설명
해커가 특수하게 조작된 잘못된 데이터를 보내 서버를 혼란에 빠뜨려 멈추게 만들 수 있는 문제입니다. 이로 인해 웹 서비스가 정상적으로 작동하지 않을 수 있습니다.
🇺🇸 원문 (English)
Integer underflow and out-of-bounds read in the HTTP/2 server DATA frame parser in Apache bRPC allows an unauthenticated remote attacker to cause denial of service by sending a malformed DATA frame with the PADDED flag set and a zero-length payload.
Root Cause:
The HTTP/2 DATA frame handler computed the fragment size from the attacker-controlled payload length and, when the PADDED flag was present, decremented the fragment size before ensuring that the frame contained the mandatory pad length byte. A zero-length padded DATA frame could therefore underflow the unsigned fragment size and read the pad length byte past the end of the frame buffer.
Affected Scenarios:
Apache bRPC servers that accept HTTP/2 traffic are affected when a remote client can send crafted HTTP/2 frames to the server. HTTP/2 may be reached through cleartext h2c detection on an HTTP port or through TLS ALPN negotiation.
How to Fix:
(Choose one of the following options)
1. Upgrade Apache bRPC to version 1.18.0, which fixes this issue.
2. Apply this patch: https://github.com/apache/brpc/pull/3325
Note:
The fix validates that a padded DATA frame has enough payload bytes for the pad length field before decrementing the fragment size or reading the pad length byte. Malformed zero-length padded DATA frames are rejected with HTTP/2 FRAME_SIZE_ERROR.
📍 영향받는 시스템
HTTP/2 트래픽을 수용하는 Apache bRPC 서버
⚔️ 공격 벡터
PADDED 플래그가 설정된 0 길이의 조작된 HTTP/2 DATA 프레임을 전송
🛡️ 대응 방법
Apache bRPC를 버전 1.18.0 이상으로 업그레이드하거나 제공된 패치를 적용하십시오.
🔧 검증 코드
출력된 버전이 1.18.0 미만인 경우 해당 취약점에 노출되어 있습니다.
brpc --version 2>/dev/null || dpkg -l | grep brpc