🇰🇷 한글 설명
Linux 커널의 TLS 구현에서 TLS 1.3 낙관적 재시도(optimistic retry) 과정 중 msg_iter가 적절히 복구되지 않는 취약점이 발견되었습니다. 이로 인해 복호화된 데이터가 사용자 메모리의 잘못된 위치에 다시 쓰여질 수 있으며, 이는 데이터 무결성 침해로 이어질 수 있습니다.
💡 쉬운 설명
인터넷 보안 연결(TLS)을 처리하는 과정에서 데이터의 위치를 계산하는 데 오류가 발생하는 문제입니다. 공격자가 특수한 데이터를 보내면 시스템 메모리의 엉뚱한 곳에 데이터가 저장되어 시스템 오류나 보안 문제를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
tls: rx: restore msg_iter before TLS 1.3 optimistic retry
tls_decrypt_sg() advances msg->msg_iter when it maps user pages for
the optimistic TLS 1.3 zero-copy path. If the decrypted record turns
out not to be unpadded application data, tls_decrypt_sw() retries into
a kernel skb, but leaves the iterator advanced.
The subsequent copy from the skb then writes decrypted bytes again at
a later point in the caller iovecs while recvmsg() reports only the
post-retry length. A TLS peer can trigger this after the receiver
enables TLS_RX_EXPECT_NO_PAD.
Revert the iterator by the number of bytes consumed by the optimistic
mapping before retrying without zero-copy.
Add a selftest which sends a TLS 1.3 control record with
TLS_RX_EXPECT_NO_PAD enabled and verifies that recvmsg() does not
overwrite later iovecs beyond the returned length.
📍 영향받는 시스템
Linux Kernel (TLS 1.3 optimistic retry 기능이 활성화된 환경)
⚔️ 공격 벡터
TLS 1.3 통신 중 TLS_RX_EXPECT_NO_PAD 옵션이 활성화된 상태에서 특수하게 조작된 TLS 제어 레코드를 전송
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 msg_iter 복구 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인합니다.