🇰🇷 한글 설명
Apache Kafka Java 프로듀서 클라이언트의 버퍼 풀 관리 과정에서 발생하는 레이스 컨디션 취약점입니다. 배치가 만료된 후 네트워크 요청이 완료되기 전에 버퍼가 재사용될 경우, 메시지가 의도하지 않은 다른 토픽으로 조용히 전달될 수 있습니다.
💡 쉬운 설명
데이터를 담는 바구니를 너무 빨리 비우고 다른 곳에 써버려서, 원래 담겨있던 내용이 엉뚱한 곳으로 배달되는 문제입니다. 이 과정에서 오류가 발생하지 않아 데이터가 잘못된 곳으로 흘러가는 것을 알기 어렵습니다.
🇺🇸 원문 (English)
A race condition in the Apache Kafka Java producer client’s buffer pool management can cause messages to be silently delivered to incorrect topics.
When a produce batch expires due to delivery.timeout.ms while a network request containing that batch is still in flight, the batch’s ByteBuffer is prematurely deallocated and returned to the buffer pool. If a subsequent producer batch—potentially destined for a different topic—reuses this freed buffer before the original network request completes, the buffer contents may become corrupted. This can result in messages being delivered to unintended topics without any error being reported to the producer.
Data Confidentiality:
Messages intended for one topic may be delivered to a different topic, potentially exposing sensitive data to consumers who have access to the destination topic but not the intended source topic.
Data Integrity:
Consumers on the receiving topic may encounter unexpected or incompatible messages, leading to deserialization failures, processing errors, and corrupted downstream data.
This issue affects Apache Kafka versions ≤ 3.9.1, ≤ 4.0.1, and ≤ 4.1.1.
Kafka users are advised to upgrade to 3.9.2, 4.0.2, 4.1.2, 4.2.0, or later to address this vulnerability.
📍 영향받는 시스템
Apache Kafka versions ≤ 3.9.1, ≤ 4.0.1, and ≤ 4.1.1
⚔️ 공격 벡터
네트워크 지연과 타임아웃을 유도하여 버퍼 재사용 시점을 조작하는 레이스 컨디션 공격
🛡️ 대응 방법
Apache Kafka를 3.9.2, 4.0.2, 4.1.2 또는 4.2.0 이상의 버전으로 업그레이드하십시오.
🔧 검증 코드
출력된 버전이 취약한 버전 범위(3.9.1 이하, 4.0.1 이하, 4.1.1 이하)에 포함되는지 확인하십시오.
kafka-topics.sh --version 2>/dev/null || echo 'Check Kafka installation directory for version info'