CVE-2024-26903
Severity CVSS v4.0:
Pending analysis
Type:
CWE-476
NULL Pointer Dereference
Publication date:
17/04/2024
Last modified:
05/11/2024
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
Bluetooth: rfcomm: Fix null-ptr-deref in rfcomm_check_security<br />
<br />
During our fuzz testing of the connection and disconnection process at the<br />
RFCOMM layer, we discovered this bug. By comparing the packets from a<br />
normal connection and disconnection process with the testcase that<br />
triggered a KASAN report. We analyzed the cause of this bug as follows:<br />
<br />
1. In the packets captured during a normal connection, the host sends a<br />
`Read Encryption Key Size` type of `HCI_CMD` packet<br />
(Command Opcode: 0x1408) to the controller to inquire the length of<br />
encryption key.After receiving this packet, the controller immediately<br />
replies with a Command Completepacket (Event Code: 0x0e) to return the<br />
Encryption Key Size.<br />
<br />
2. In our fuzz test case, the timing of the controller&#39;s response to this<br />
packet was delayed to an unexpected point: after the RFCOMM and L2CAP<br />
layers had disconnected but before the HCI layer had disconnected.<br />
<br />
3. After receiving the Encryption Key Size Response at the time described<br />
in point 2, the host still called the rfcomm_check_security function.<br />
However, by this time `struct l2cap_conn *conn = l2cap_pi(sk)->chan->conn;`<br />
had already been released, and when the function executed<br />
`return hci_conn_security(conn->hcon, d->sec_level, auth_type, d->out);`,<br />
specifically when accessing `conn->hcon`, a null-ptr-deref error occurred.<br />
<br />
To fix this bug, check if `sk->sk_state` is BT_CLOSED before calling<br />
rfcomm_recv_frame in rfcomm_process_rx.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.19.311 (excluding) | |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (including) | 5.4.273 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.214 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.153 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.83 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.23 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.7.11 (excluding) |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/2535b848fa0f42ddff3e5255cf5e742c9b77bb26
- https://git.kernel.org/stable/c/369f419c097e82407dd429a202cde9a73d3ae29b
- https://git.kernel.org/stable/c/3ead59bafad05f2967ae2438c0528d53244cfde5
- https://git.kernel.org/stable/c/567c0411dc3b424fc7bd1e6109726d7ba32d4f73
- https://git.kernel.org/stable/c/5f369efd9d963c1f711a06c9b8baf9f5ce616d85
- https://git.kernel.org/stable/c/5f9fe302dd3a9bbc50f4888464c1773f45166bfd
- https://git.kernel.org/stable/c/81d7d920a22fd58ef9aedb1bd0a68ee32bd23e96
- https://git.kernel.org/stable/c/8d1753973f598531baaa2c1033cf7f7b5bb004b0



