🔍 CVE-2026-78117

4.2
CVSS Score
MEDIUM
2026-10-21
2026-11-04 05:19
✅ 완료

🇰🇷 한글 설명

Infineon PSOC 6 BLESS HCI 드라이버에서 송신 패킷 디스크립터가 파일 범위 전역 변수로 선언되어 있어, 세마포어 보호 이전에 공유 상태가 수정된다. 여러 스레드가 동시에 HCI 패킷을 전송하면 한 패킷의 길이와 다른 패킷의 데이터 포인터가 섞여 인접한 RAM 내용이 원격 피어로 노출될 수 있으며, 패킷 중복 또는 유실도 발생할 수 있다. 수정은 디스크립터를 psoc6_bless_send() 내부의 지역 변수로 옮기는 것이다.

💡 쉬운 설명

블루투스 기기가 여러 작업을 동시에 처리할 때 데이터 조각이 서로 섞이면서, 기기 메모리의 일부 내용이 연결된 상대방에게 새어 나갈 수 있습니다. 공격자가 메모리를 조작하거나 기기를 장악하는 것은 아니지만 정보 노출과 통신 장애가 발생할 수 있습니다.

🇺🇸 원문 (English)

The Infineon PSOC 6 BLESS HCI driver in drivers/bluetooth/hci/hci_infineon_psoc6_bless.c stored the outgoing HCI packet descriptor in a file-scope variable, static cy_stc_ble_hci_tx_packet_info_t hci_tx_pkt. psoc6_bless_send() cleared and populated that descriptor's packetType, dataLength and data fields before acquiring psoc6_bless_operation_sem, so the driver's serialising semaphore protected only the call into Cy_BLE_SoftHciSendAppPkt() and not the shared state that call reads. The Bluetooth host does not guarantee a single HCI sender. Most transmissions are funnelled through the cooperative TX-processor work queue, but bt_hci_cmd_send() deliberately bypasses bt_dev.cmd_tx_queue for BT_HCI_OP_HOST_NUM_COMPLETED_PACKETS and calls bt_send() directly from the caller's thread; that caller is bt_hci_host_num_completed_packets(), the acl_in_pool destroy callback, which runs on whichever thread drops the last reference to a received ACL buffer. CONFIG_BT_HCI_ACL_FLOW_CONTROL defaults to y on this driver's boards, and an application that returns -EINPROGRESS from its L2CAP recv callback and later calls bt_l2cap_chan_recv_complete() performs that unref from its own preemptible thread. A remote peer that generates Bluetooth traffic concurrently with the device's own transmissions raises the collision rate. When two senders interleave, the semaphore holder can hand the controller a descriptor whose dataLength comes from one net_buf and whose data pointer comes from another — or one whose buffer has already been returned to its pool. The controller then copies and transmits up to a full HCI/ACL payload starting at a shorter or recycled buffer, disclosing adjacent RAM contents to the connected peer; other interleavings duplicate one HCI packet and silently drop another, disrupting the link. The driver only reads through the shared descriptor, so no memory corruption or write primitive results, and the disclosed bytes are not attacker-chosen. The fix makes the descriptor a local variable in psoc6_bless_send(), removing the shared state; Cy_BLE_SoftHciSendAppPkt() copies the packet before returning, so it need not outlive the call.

📍 영향받는 시스템

Linux 커널 drivers/bluetooth/hci/hci_infineon_psoc6_bless.c를 포함하는 버전 (Infineon PSOC 6 BLESS HCI 드라이버 사용 보드, 수정 전 커널 빌드)

⚔️ 공격 벡터

원격 피어가 기기와 동시에 블루투스 트래픽을 발생시켜 송신 경합을 유도하고, 전송된 패킷에서 인접 RAM 내용을 수집한다.

🛡️ 대응 방법

커널을 CVE-2026-78117 수정 패치가 포함된 버전으로 업데이트하고 hci_tx_pkt 디스크립터를 psoc6_bless_send() 내부 지역 변수로 변경된 빌드를 적용한다.

🔧 검증 코드

커널 버전을 확인하고 소스에서 전역 hci_tx_pkt 참조 수가 0이면 수정된 것이며, 1 이상이면 취약한 전역 변수 구조가 남아 있어 업데이트가 필요하다. 소스가 없으면 배포판 보안 공지에서 패치 여부를 확인한다.

Shell / Script
uname -r && grep -c 'hci_tx_pkt' /usr/src/linux-$(uname -r)/drivers/bluetooth/hci/hci_infineon_psoc6_bless.c 2>/dev/null

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

TeamViewer Remote Control App