In the Linux kernel, the following vulnerability has been resolved: slip: bound decode() reads against the compressed packet length slhc_uncompress() parses a VJ-compressed TCP header by advancing a pointer through the packet via decode() and pull16(). Neither helper bounds-checks against isize, and decode() masks its return with & 0xffff so it can never return the -1 that callers test for -- those error paths are dead code. A short compressed frame whose change byte requests optional fields lets decode() read past the end of the packet. The over-read bytes are folded into the cached cstate and reflected into subsequent reconstructed packets. Make decode() and pull16() take the packet end pointer and return -1 when exhausted. Add a bounds check before the TCP-checksum read. The existing == -1 tests now do what they were always meant to.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N
| Attack Vector | NETWORK |
|---|---|
| Attack Complexity | LOW |
| Privileges Required | NONE |
| User Interaction | NONE |
| Scope | UNCHANGED |
| Confidentiality Impact | HIGH |
| Integrity Impact | LOW |
| Availability Impact | NONE |
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Type: Secondary
Exploitability Score: 3.9
Impact Score: 4.2
| Source | Type | Description |
|---|---|---|
| [email protected] | Primary |
en
NVD-CWE-noinfo
|
| Vendor | Product | Version | Update | Type |
|---|---|---|---|---|
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd384aa1cc0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd31b237200> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd36b155500> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd341beaf00> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd384aa29c0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd384aa2fc0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd36b157080> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x7fd34bce0a80> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x7fd36b156b00> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x7fd384aa2200> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x7fd369d6df80> | Operating System |
| linux | linux_kernel | 2.6.12 | <built-in method update of dict object at 0x7fd36b156f00> | Operating System |
| Vulnerable | CPE |
|---|---|
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:-:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:rc2:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:rc3:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:rc4:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:2.6.12:rc5:*:*:*:*:*:* |