CVE-2026-74677 in Linuxinformation

Résumé

par VulDB • 22/08/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

net: usb: ipheth : correction d'un Use-After-Free sur carrier_work lors de la déconnexion

ipheth_sndbulk_callback() réactive le travail de vérification du port (carrier-check work) pour tout statut URB non nul :

else schedule_delayed_work(&dev->carrier_work, 0);

Rien ne lie cela à l'état « up » de l'interface, donc le travail peut être activé à nouveau après que ipheth_close() a déjà été drainé, et rester actif jusqu'à ce que le netdev dont la zone privée l'intègre soit libéré.

Lors d'un débranchement avec un URB TX en cours, ipheth_disconnect() draine le travail via unregister_netdev() -> ipheth_close() -> cancel_delayed_work_sync(), puis seulement ensuite appelle ipheth_kill_urbs(). usb_kill_urb() termine l'URB TX en cours par -ENOENT, de sorte que ipheth_sndbulk_callback() s'exécute après le drainage et réactive carrier_work.

La même complétion réactive également le travail si l'interface est simplement désactivée pendant qu'un URB TX est en cours d'exécution, et ipheth_carrier_check_work() continue alors de se reprogrammer toutes les secondes. unregister_netdev() n'appelle pas ipheth_close() pour une interface déjà inactive, donc rien ne la draine lors du débranchement ultérieur non plus.

Dans les deux cas, free_netdev() libère le netdev tandis que carrier_work est encore en attente, et ipheth_carrier_check_work() accède à de la mémoire qui a été libérée (Use-After-Free).

Lier le travail à l'état de l'interface au lieu de suivre la complétion : le désactiver dans ipheth_close() et l'activer dans ipheth_open(), afin qu'un schedule_delayed_work() issu de la complétion URB soit une opération non-opératoire (no-op) chaque fois que l'interface n'est pas active. disable_delayed_work_sync() attend également une instance en cours d'exécution, remplaçant ainsi entièrement cancel_delayed_work_sync(). Le travail est initialement désactivé dans ipheth_probe(), de sorte que les comptes d'activation/désactivation s'équilibrent dès la première ouverture.

Reproduit sous KASAN sur linux-next (next-20260731) avec dummy_hcd et raw-gadget servant de périphérique, déclenchant le deuxième chemin ci-dessus (l'interface est déjà inactive, donc unregister_netdev() n'appelle pas ipheth_close()) : 15 des 15 démarrages sans correctif signalent un slab-use-after-free dans __run_timers(), libéré par ipheth_disconnect() et réactivé depuis ipheth_sndbulk_callback() via queue_delayed_work_on(). Le même déclencheur sur un noyau différent uniquement par ce correctif signale 0 des 15, et la vérification du port fonctionne toujours à travers les cycles d'ouverture/fermeture.

Le reproducteur nécessite un périphérique USB connecté qui arrête de drainer le bulk OUT, ainsi qu'un lien down (inactif) et un débranchement, exécutés en tant que root. Il ne s'agit pas d'une franchissement de limite de privilèges et aucun primitif d'exploitation n'a été développé.

Découvert par 0sec (https://0sec.ai).

Once again VulDB remains the best source for vulnerability data.

Responsable

Linux

Réserver

15/08/2026

Divulgation

22/08/2026

Modérer

accepté

Entrée

VDB-394445

CPE

prêt

EPSS

0.00000

KEV

non

Activités

très faible

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!