🔍 CVE-2026-89583

8.1
CVSS Score
HIGH
2026-09-11
2026-10-19 09:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 Bluetooth EIR 처리 과정에서 eir_get_service_data() 함수가 데이터 길이를 잘못 계산하여 발생하는 Out-of-Bounds(OOB) Read 취약점입니다. 잘못된 길이 계산으로 인해 버퍼 범위를 벗어난 메모리를 읽게 되며, 이는 ISO 브로드캐스트 싱크 환경에서 사용자 공간의 메모리 정보가 유출될 수 있는 위험을 초래합니다.

💡 쉬운 설명

블루투스 신호를 처리할 때 데이터의 길이를 잘못 계산하여, 허용된 범위를 넘어선 컴퓨터 내부의 민감한 정보를 몰래 읽어갈 수 있는 결함입니다. 공격자가 특수하게 조작된 블루투스 신호를 보내면 시스템의 중요한 데이터가 유출될 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: Bluetooth: eir: Fix OOB read in eir_get_service_data() eir_get_service_data() walks the advertising data for a Service Data field with a matching UUID. On a mismatch it advances: eir += dlen; eir_len -= dlen; eir_get_data() reports dlen as the field's data length, but the field spans dlen + 2 bytes once its length and type bytes count, and more when non-Service-Data fields were skipped to reach it. The pointer lands correctly on the next field. eir_len does not, and the shortfall compounds across fields until eir_get_data() reads the length and type bytes of a "field" past the end of the buffer. For an ISO broadcast sink that buffer is hcon->le_per_adv_data[], filled from the periodic advertising reports of a remote broadcaster. A PA payload packed with mismatching Service Data fields walks off the array into the rest of struct hci_conn. A drifted field that matches the BAA UUID puts those bytes in iso_pi(sk)->base, where user space reads them back with getsockopt(BT_ISO_BASE). Recompute eir_len from the end of the buffer each iteration.

📍 영향받는 시스템

Linux Kernel (Bluetooth EIR/ISO Broadcast 관련 모듈 사용 시스템)

⚔️ 공격 벡터

조작된 Service Data 필드를 포함한 주기적 광고(Periodic Advertising) 페이로드를 전송하여 메모리 읽기 유도

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 eir_len 재계산 로직 적용

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel