CVE-2024-36938: bpf, skmsg: Fix NULL pointer dereference in sk_psock_skb_ingress_enqueue

Published May 30, 2024
·
Updated

bpf skmsg: Fix NULL pointer dereference in skpsockskbingressenqueue

Other sources

In the Linux kernel, the following vulnerability has been resolved:

bpf, skmsg: Fix NULL pointer dereference in skpsockskbingressenqueue

Fix NULL pointer data-races in skpsockskbingressenqueue() which syzbot reported [1].

[1] BUG: KCSAN: data-race in skpsockdrop / skpsockskbingressenqueue

write to 0xffff88814b3278b8 of 8 bytes by task 10724 on cpu 1: skpsockstopverdict net/core/skmsg.c:1257 [inline] skpsockdrop+0x13e/0x1f0 net/core/skmsg.c:843 skpsockput include/linux/skmsg.h:459 [inline] sockmapclose+0x1a7/0x260 net/core/sockmap.c:1648 unixrelease+0x4b/0x80 net/unix/afunix.c:1048 sockrelease net/socket.c:659 [inline] sockclose+0x68/0x150 net/socket.c:1421 fput+0x2c1/0x660 fs/filetable.c:422 fputsync+0x44/0x60 fs/filetable.c:507 dosysclose fs/open.c:1556 [inline] sesysclose+0x101/0x1b0 fs/open.c:1541 x64sysclose+0x1f/0x30 fs/open.c:1541 dosyscall64+0xd3/0x1d0 entrySYSCALL64afterhwframe+0x6d/0x75

read to 0xffff88814b3278b8 of 8 bytes by task 10713 on cpu 0: skpsockdataready include/linux/skmsg.h:464 [inline] skpsockskbingressenqueue+0x32d/0x390 net/core/skmsg.c:555 skpsockskbingressself+0x185/0x1e0 net/core/skmsg.c:606 skpsockverdictapply net/core/skmsg.c:1008 [inline] skpsockverdictrecv+0x3e4/0x4a0 net/core/skmsg.c:1202 unixreadskb net/unix/afunix.c:2546 [inline] unixstreamreadskb+0x9e/0xf0 net/unix/afunix.c:2682 skpsockverdictdataready+0x77/0x220 net/core/skmsg.c:1223 unixstreamsendmsg+0x527/0x860 net/unix/afunix.c:2339 socksendmsgnosec net/socket.c:730 [inline] socksendmsg+0x140/0x180 net/socket.c:745 syssendmsg+0x312/0x410 net/socket.c:2584 syssendmsg net/socket.c:2638 [inline] syssendmsg+0x1e9/0x280 net/socket.c:2667 dosyssendmsg net/socket.c:2676 [inline] sesyssendmsg net/socket.c:2674 [inline] x64syssendmsg+0x46/0x50 net/socket.c:2674 dosyscall64+0xd3/0x1d0 entrySYSCALL64afterhwframe+0x6d/0x75

value changed: 0xffffffff83d7feb0 -> 0x0000000000000000

Reported by Kernel Concurrency Sanitizer on: CPU: 0 PID: 10713 Comm: syz-executor.4 Tainted: G W 6.8.0-syzkaller-08951-gfe46a7dd189e #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 02/29/2024

Prior to this, commit 4cd12c6065df ("bpf, sockmap: Fix NULL pointer dereference in skpsockverdictdataready()") fixed one NULL pointer similarly due to no protection of saveddataready. Here is another different caller causing the same issue because of the same reason. So we should protect it with skcallbacklock read lock because the writer side in the skpsockdrop() uses "writelockbh(&sk->skcallbacklock);".

To avoid errors that could happen in future, I move those two pairs of lock into the skpsockdataready(), which is suggested by John Fastabend.

— NVD

Affected Software

12 affected componentsFixes available
Linux Linux kernel>=4.20<5.15.159
Linux Linux kernel>=5.16<6.1.91
Linux Linux kernel>=6.2<6.6.31
Linux Linux kernel>=6.7<6.8.10
Microsoft cbl2 kernel 5.15.158.2-1
Microsoft cbl2 kernel 5.15.158.2-1
Microsoft azl3 kernel 6.6.35.1-4
Microsoft azl3 kernel 6.6.29.1-5
debian/linux<6.1.94-1
6.1.94-1
debian/linux<6.8.11-1
6.8.11-1
debian/linux<6.8.11-1
6.8.11-1
debian/linux
6.1.176-16.1.190-16.12.107-16.12.115-27.2.12-17.2.15-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.1.94-1
  2. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.8.11-1
  3. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.107-1Fixed in 6.12.115-2Fixed in 7.2.12-1Fixed in 7.2.15-1
  4. Compensating control

    Protect accesses in sk_psock_skb_ingress_enqueue() with the sk_callback_lock read lock, matching the write_lock_bh(&sk->sk_callback_lock) used by sk_psock_drop(); move the two lock pairs into sk_psock_data_ready().

Event History

May 30, 2024
CVE Published
via MITRE·03:29 PM
Data Sourced
via MITRE·03:29 PM
Description
Data Sourced
via OSV·04:15 PM
DescriptionSeverityAffected Software
Jun 11, 2024
Data Sourced
via Microsoft·07:00 AM
DescriptionSeverityWeaknessAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Frequently Asked Questions

1

What is the severity of CVE-2024-36938?

The severity of CVE-2024-36938 is classified as moderate due to the potential for a NULL pointer dereference leading to crashes.

2

How do I fix CVE-2024-36938?

To fix CVE-2024-36938, update the Linux kernel to a version that includes the patch such as 5.10.223-1 or newer.

3

Which versions of the Linux kernel are affected by CVE-2024-36938?

CVE-2024-36938 affects Linux kernel versions from 4.20 to 5.15.159, 5.16 to 6.1.91, 6.2 to 6.6.31, and 6.7 to 6.8.10.

4

What impact does CVE-2024-36938 have on system security?

CVE-2024-36938 can lead to system instability and crashes due to potential data-races in critical kernel functions.

5

Is there a known exploit for CVE-2024-36938?

As of now, there are no known public exploits specifically targeting CVE-2024-36938.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203