Données publiées par NVD. La traduction française est automatique : le texte anglais fait foi.
Dans le noyau Linux, la vulnérabilité suivante a été résolue : ipv4 : Correction d'uninit-value access in __ip_make_skb() KMSAN a rapporté uninit-value access in __ip_make_skb() [1]. __ip_make_skb() teste HDRINCL pour savoir si le skb a icmphdr. Cependant, HDRINCL peut causer une condition de course. Si l'appel setsockopt(2) avec IP_HDRINCL change HDRINCL alors que __ip_make_skb() est en cours d'exécution, la fonction accèdera à icmphdr dans le skb même si elle n'est pas incluse. Cela cause le problème signalé par KMSAN. Vérifiez FLOWI_FLAG_KNOWN_NH sur fl4->flowi4_flags au lieu de tester HDRINCL sur la socket. De plus, fl4->fl4_icmp_type et fl4->fl4_icmp_code ne sont pas initialisés. Ces éléments sont des struct flowi4 et sont implicitement initialisés par flowi4_init_output(), mais nous ne devrions pas nous fier à la disposition spécifique de l'union. Initialisez ces données explicitement dans rough_sendmsg(). [1] BUG: KMSAN: uninit-value in __ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481 __ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481 ip_finish_skb include/net/ip.h:243 [inline] ip_push_pending_frames+0x4c/0x5c0 net/ipv4/ip_output.c:1508 rough_sendmsg+0x2381/0x2690 net/ipv4/raw.c:654 inet_sendmsg+0x27b/0x2a0 net/ipv4/af_inet.c:851 sock_sendmsg_nosec net/socket.c:730 _bx_s_s_s________
Texte officiel (anglais)
In the Linux kernel, the following vulnerability has been resolved:
ipv4: Fix uninit-value access in __ip_make_skb()
KMSAN reported uninit-value access in __ip_make_skb() [1]. __ip_make_skb()
tests HDRINCL to know if the skb has icmphdr. However, HDRINCL can cause a
race condition. If calling setsockopt(2) with IP_HDRINCL changes HDRINCL
while __ip_make_skb() is running, the function will access icmphdr in the
skb even if it is not included. This causes the issue reported by KMSAN.
Check FLOWI_FLAG_KNOWN_NH on fl4->flowi4_flags instead of testing HDRINCL
on the socket.
Also, fl4->fl4_icmp_type and fl4->fl4_icmp_code are not initialized. These
are union in struct flowi4 and are implicitly initialized by
flowi4_init_output(), but we should not rely on specific union layout.
Initialize these explicitly in raw_sendmsg().
[1]
BUG: KMSAN: uninit-value in __ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481
__ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481
ip_finish_skb include/net/ip.h:243 [inline]
ip_push_pending_frames+0x4c/0x5c0 net/ipv4/ip_output.c:1508
raw_sendmsg+0x2381/0x2690 net/ipv4/raw.c:654
inet_sendmsg+0x27b/0x2a0 net/ipv4/af_inet.c:851
sock_sendmsg_nosec net/socket.c:730 [inline]
__sock_sendmsg+0x274/0x3c0 net/socket.c:745
__sys_sendto+0x62c/0x7b0 net/socket.c:2191
__do_sys_sendto net/socket.c:2203 [inline]
__se_sys_sendto net/socket.c:2199 [inline]
__x64_sys_sendto+0x130/0x200 net/socket.c:2199
do_syscall_64+0xd8/0x1f0 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x6d/0x75
Uninit was created at:
slab_post_alloc_hook mm/slub.c:3804 [inline]
slab_alloc_node mm/slub.c:3845 [inline]
kmem_cache_alloc_node+0x5f6/0xc50 mm/slub.c:3888
kmalloc_reserve+0x13c/0x4a0 net/core/skbuff.c:577
__alloc_skb+0x35a/0x7c0 net/core/skbuff.c:668
alloc_skb include/linux/skbuff.h:1318 [inline]
__ip_append_data+0x49ab/0x68c0 net/ipv4/ip_output.c:1128
ip_append_data+0x1e7/0x260 net/ipv4/ip_output.c:1365
raw_sendmsg+0x22b1/0x2690 net/ipv4/raw.c:648
inet_sendmsg+0x27b/0x2a0 net/ipv4/af_inet.c:851
sock_sendmsg_nosec net/socket.c:730 [inline]
__sock_sendmsg+0x274/0x3c0 net/socket.c:745
__sys_sendto+0x62c/0x7b0 net/socket.c:2191
__do_sys_sendto net/socket.c:2203 [inline]
__se_sys_sendto net/socket.c:2199 [inline]
__x64_sys_sendto+0x130/0x200 net/socket.c:2199
do_syscall_64+0xd8/0x1f0 arch/x86/entry/common.c:83
entry_SYSCALL_64_after_hwframe+0x6d/0x75
CPU: 1 PID: 15709 Comm: syz-executor.7 Not tainted 6.8.0-11567-gb3603fcb79b1 #25
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-1.fc39 04/01/2014
Versions touchées
linux linux kernel à partir de 4.14.315, avant 4.15
linux linux kernel à partir de 4.19.283, avant 4.20
linux linux kernel à partir de 5.4.243, avant 5.5
linux linux kernel à partir de 5.10.180, avant 5.11
linux linux kernel à partir de 5.15.111, avant 5.16
linux linux kernel à partir de 6.1.28, avant 6.2
linux linux kernel à partir de 6.2.15, avant 6.3
linux linux kernel à partir de 6.3.2, avant 6.6.31
Explication générée à partir des données officielles, sans test de notre part. Elle peut simplifier ou se tromper.
Type d’erreur : Situation de compétition
Deux opérations simultanées se gênent et créent un état imprévu, exploitable.
Comment elle s’exploite
Un attaquant peut l’exploiter avec un accès local à la machine, avec un compte ordinaire, sans action de la victime. L’attaque demande des conditions particulières.
Ce qu’un attaquant pourrait faire
rendre le service indisponible
Mini glossaire
CVE
Numéro public unique attribué à une faille, pour que tout le monde parle de la même chose.
CVSS
Note de gravité de 0 à 10. Elle mesure la gravité théorique, pas le risque réel chez vous.
CWE
Catégorie du type d’erreur à l’origine de la faille.
KEV
Liste de l’agence américaine CISA recensant les failles réellement exploitées par des attaquants.
Correctif
Mise à jour publiée par l’éditeur pour supprimer la faille.
Atténuation
Mesure temporaire qui réduit le risque quand le correctif n’est pas encore appliqué.
Voir le résumé du CSAF Plusieurs vulnérabilités ont été identifiées dans le sous-système GNU/Linux supplémentaire de la version V3.1.7 du firmware pour le CPU 1518(F)-4 PN/DP (incl. Variante SIPLUS). Siemens prépare des correctifs et recommande des mesures d'atténuation spécifiques pour les produits où des correctifs ne sont pas ou pas encore disponibles. Les versions suivantes de Siemens SIMATIC S7-1500 CPU 1518(F)-4 PN/DP MFP sont