In the Linux kernel, the following vulnerability has been resolved: net: skbuff: preserve shared-frag marker during coalescing skb_try_coalesce() can attach paged frags from @from to @to. If @from has SKBFL_SHARED_FRAG set, the resulting @to skb can contain the same externally-owned or page-cache-backed frags, but the shared-frag marker is currently lost. That breaks the invariant relied on by later in-place writers. In particular, ESP input checks skb_has_shared_frag() before deciding whether an uncloned nonlinear skb can skip skb_cow_data(). If TCP receive coalescing has moved shared frags into an unmarked skb, ESP can see skb_has_shared_frag() as false and decrypt in place over page-cache backed frags. Propagate SKBFL_SHARED_FRAG when skb_try_coalesce() transfers paged frags. The tailroom copy path does not need the marker because it copies bytes into @to's linear data rather than transferring frag descriptors.
En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: net: skbuff: preservar el marcador de fragmento compartido durante la coalescencia skb_try_coalesce() puede adjuntar fragmentos paginados de @from a @to. Si @from tiene SKBFL_SHARED_FRAG establecido, el skb @to resultante puede contener los mismos fragmentos de propiedad externa o respaldados por la caché de páginas, pero el marcador de fragmento compartido se pierde actualmente. Eso rompe el invariante en el que confían los escritores posteriores in situ. En particular, la entrada de ESP comprueba skb_has_shared_frag() antes de decidir si un skb no lineal no clonado puede omitir skb_cow_data(). Si la coalescencia de recepción TCP ha movido fragmentos compartidos a un skb sin marcar, ESP puede ver skb_has_shared_frag() como falso y descifrar in situ sobre fragmentos respaldados por la caché de páginas. Propagar SKBFL_SHARED_FRAG cuando skb_try_coalesce() transfiere fragmentos paginados. La ruta de copia del espacio de cola no necesita el marcador porque copia bytes en los datos lineales de @to en lugar de transferir descriptores de fragmentos.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
| Attack Vector | LOCAL |
|---|---|
| Attack Complexity | LOW |
| Privileges Required | LOW |
| User Interaction | NONE |
| Scope | UNCHANGED |
| Confidentiality Impact | HIGH |
| Integrity Impact | HIGH |
| Availability Impact | HIGH |
| Source | Type | Description |
|---|---|---|
| [email protected] | Primary |
en
CWE-787
|
| 0b0ca135-0b70-47e7-9f44-1890c2a1c46c | Secondary |
en
CWE-123
|
| Vendor | Product | Version | Update | Type |
|---|---|---|---|---|
| linux | linux_kernel | * | <built-in method update of dict object at 0x7cc9e19ac2c0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7cc9e0c1de00> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7cc9a1948880> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7cc9a1948ec0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7cc9e1b8a180> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7cc9cbe661c0> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7cc9e19af0c0> | Operating System |
| linux | linux_kernel | 7.1 | <built-in method update of dict object at 0x7cc9c413ad80> | Operating System |
| linux | linux_kernel | 7.1 | <built-in method update of dict object at 0x7cc9a194ae80> | Operating System |
| linux | linux_kernel | 7.1 | <built-in method update of dict object at 0x7cc9e1a9cc80> | Operating System |
| linux | linux_kernel | 7.1 | <built-in method update of dict object at 0x7cc9a37b16c0> | 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:7.1:rc1:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.1:rc3:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.1:rc4:*:*:*:*:*:* |