| From bippy-7c5fe7eed585 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2025-21922: ppp: Fix KMSAN uninit-value warning with bpf |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| ppp: Fix KMSAN uninit-value warning with bpf |
| |
| Syzbot caught an "KMSAN: uninit-value" warning [1], which is caused by the |
| ppp driver not initializing a 2-byte header when using socket filter. |
| |
| The following code can generate a PPP filter BPF program: |
| ''' |
| struct bpf_program fp; |
| pcap_t *handle; |
| handle = pcap_open_dead(DLT_PPP_PPPD, 65535); |
| pcap_compile(handle, &fp, "ip and outbound", 0, 0); |
| bpf_dump(&fp, 1); |
| ''' |
| Its output is: |
| ''' |
| (000) ldh [2] |
| (001) jeq #0x21 jt 2 jf 5 |
| (002) ldb [0] |
| (003) jeq #0x1 jt 4 jf 5 |
| (004) ret #65535 |
| (005) ret #0 |
| ''' |
| Wen can find similar code at the following link: |
| https://github.com/ppp-project/ppp/blob/master/pppd/options.c#L1680 |
| The maintainer of this code repository is also the original maintainer |
| of the ppp driver. |
| |
| As you can see the BPF program skips 2 bytes of data and then reads the |
| 'Protocol' field to determine if it's an IP packet. Then it read the first |
| byte of the first 2 bytes to determine the direction. |
| |
| The issue is that only the first byte indicating direction is initialized |
| in current ppp driver code while the second byte is not initialized. |
| |
| For normal BPF programs generated by libpcap, uninitialized data won't be |
| used, so it's not a problem. However, for carefully crafted BPF programs, |
| such as those generated by syzkaller [2], which start reading from offset |
| 0, the uninitialized data will be used and caught by KMSAN. |
| |
| [1] https://syzkaller.appspot.com/bug?extid=853242d9c9917165d791 |
| [2] https://syzkaller.appspot.com/text?tag=ReproC&x=11994913980000 |
| |
| The Linux kernel CVE team has assigned CVE-2025-21922 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 5.4.291 with commit d685096c8129c9a92689975193e268945fd21dbf |
| Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 5.10.235 with commit 2f591cb158807bdcf424f66f1fbfa6e4e50f3757 |
| Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 5.15.179 with commit 4e2191b0fd0c064d37b0db67396216f2d4787e0f |
| Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.1.131 with commit 3de809a768464528762757e433cd50de35bcb3c1 |
| Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.6.83 with commit 1eacd47636a9de5bee25d9d5962dc538a82d9f0b |
| Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.12.19 with commit 8aa8a40c766b3945b40565a70349d5581458ff63 |
| Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.13.7 with commit c036f5f2680cbdabdbbace86baee3c83721634d6 |
| Issue introduced in 2.6.12 with commit 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 and fixed in 6.14 with commit 4c2d14c40a68678d885eab4008a0129646805bae |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2025-21922 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/net/ppp/ppp_generic.c |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/d685096c8129c9a92689975193e268945fd21dbf |
| https://git.kernel.org/stable/c/2f591cb158807bdcf424f66f1fbfa6e4e50f3757 |
| https://git.kernel.org/stable/c/4e2191b0fd0c064d37b0db67396216f2d4787e0f |
| https://git.kernel.org/stable/c/3de809a768464528762757e433cd50de35bcb3c1 |
| https://git.kernel.org/stable/c/1eacd47636a9de5bee25d9d5962dc538a82d9f0b |
| https://git.kernel.org/stable/c/8aa8a40c766b3945b40565a70349d5581458ff63 |
| https://git.kernel.org/stable/c/c036f5f2680cbdabdbbace86baee3c83721634d6 |
| https://git.kernel.org/stable/c/4c2d14c40a68678d885eab4008a0129646805bae |