CVE-2024-26640

Vulnérabilité élevée dans Linux (Linux)

CVSS 7.8 · Élevée
EPSS 0.2%
Linux•Linux•Versions : <=6.1.*, <577e4432f3ac810049cb7e6b71f4d96ec7c6e894, 0, 6.1.77, <f48bf9a83b1666d934247cb58a9887d7b3127b6f, 6.8, <=5.10.*, <=6.6.*, 5.15.149, <b383d4ea272fe5795877506dcce5aad1f6330e5e, <1b8adcc0e2c584fec778add7777fe28e20781e60, 6.6.16, <d15cc0f66884ef2bed28c7ccbb11c102aa3a0760, 6.7.4, <718f446e60316bf606946f7f42367d691d21541e, 5.10.210, <4.18, 4.18, <=*, <=5.15.*, <=6.7.*, 93ab6cc69162775201587cc9da00d5016dc890e2

Description

In the Linux kernel, the following vulnerability has been resolved: tcp: add sanity checks to rx zerocopy TCP rx zerocopy intent is to map pages initially allocated from NIC drivers, not pages owned by a fs. This patch adds to can_map_frag() these additional checks: - Page must not be a compound one. - page->mapping must be NULL. This fixes the panic reported by ZhangPeng. syzbot was able to loopback packets built with sendfile(), mapping pages owned by an ext4 file to TCP rx zerocopy. r3 = socket$inet_tcp(0x2, 0x1, 0x0) mmap(&(0x7f0000ff9000/0x4000)=nil, 0x4000, 0x0, 0x12, r3, 0x0) r4 = socket$inet_tcp(0x2, 0x1, 0x0) bind$inet(r4, &(0x7f0000000000)={0x2, 0x4e24, @multicast1}, 0x10) connect$inet(r4, &(0x7f00000006c0)={0x2, 0x4e24, @empty}, 0x10) r5 = openat$dir(0xffffffffffffff9c, &(0x7f00000000c0)='./file0\x00', 0x181e42, 0x0) fallocate(r5, 0x0, 0x0, 0x85b8) sendfile(r4, r5, 0x0, 0x8ba0) getsockopt$inet_tcp_TCP_ZEROCOPY_RECEIVE(r4, 0x6, 0x23, &(0x7f00000001c0)={&(0x7f0000ffb000/0x3000)=nil, 0x3000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, &(0x7f0000000440)=0x40) r6 = openat$dir(0xffffffffffffff9c, &(0x7f00000000c0)='./file0\x00', 0x181e42, 0x0)

Gravité et risque d'exploitation

CVE-2024-26640 obtient un score CVSS de 7.8/10, soit une gravité élevée. Selon le modèle EPSS, la probabilité qu'elle soit exploitée dans les 30 prochains jours est de 0.24 %, ce qui la place devant 14.4 % des CVE référencées.

Que faire ?

  • Vérifiez si Linux (versions <=6.1.*, <577e4432f3ac810049cb7e6b71f4d96ec7c6e894, 0, 6.1.77, <f48bf9a83b1666d934247cb58a9887d7b3127b6f, 6.8, <=5.10.*, <=6.6.*, 5.15.149, <b383d4ea272fe5795877506dcce5aad1f6330e5e, <1b8adcc0e2c584fec778add7777fe28e20781e60, 6.6.16, <d15cc0f66884ef2bed28c7ccbb11c102aa3a0760, 6.7.4, <718f446e60316bf606946f7f42367d691d21541e, 5.10.210, <4.18, 4.18, <=*, <=5.15.*, <=6.7.*, 93ab6cc69162775201587cc9da00d5016dc890e2) est présent sur votre parc.
  • Appliquez le correctif ou la version corrigée indiqués dans les références de l'éditeur.
  • À défaut de correctif, limitez l'exposition (filtrage réseau, désactivation du composant).
  • Automatisez la détection : les agents CVE Heimdall (gratuits, open source) corrèlent l'inventaire de vos serveurs avec la base CVE.

Références