← Tornar als articles
Seguretat· 3 min de lectura

CVE-2026-23069: integer underflow al transport vsock/virtio del kernel Linux

L’equip del kernel Linux ha resolt CVE-2026-23069, una vulnerabilitat de tipus integer underflow (CWE-191) localitzada al transport vsock/virtio, concretament al fitxer net/vmw_vsock/virtio_transport_common.c. Tot i que la seva gravetat és mitjana (CVSS 3.1: 5.5), val la pena entendre-la perquè afecta un ventall molt ampli de versions i el subsistema de comunicació entre màquines virtuals i el seu amfitrió.

Què és vsock/virtio

vsock (virtio sockets) és el mecanisme que permet a una màquina virtual i al seu hipervisor intercanviar dades sense passar per la pila de xarxa tradicional. Per evitar saturar el receptor, el protocol fa servir un sistema de crèdits: cada extrem anuncia quant espai de buffer té disponible (peer_buf_alloc), i l’altre extrem només envia fins on càpiga.

La vulnerabilitat

El problema és a la funció virtio_transport_get_credit(), encarregada de calcular quants crèdits queden disponibles per enviar. Segons la descripció oficial del kernel:

“If the peer shrinks its advertised buffer (peer_buf_alloc) while bytes are in flight, the subtraction can underflow and produce a large positive value, potentially allowing more data to be queued than the peer can handle.”

És a dir: si el par redueix la mida del buffer que havia anunciat mentre encara hi ha bytes en trànsit, la resta que calcula el crèdit disponible es pot desbordar per sota (underflow). En aritmètica sense signe, restar més del que es té no dóna un nombre negatiu, sinó un valor positiu enorme. El resultat és que l’emissor creu disposar de moltíssim espai i encua més dades de les que el receptor pot gestionar.

A qui afecta i gravetat

El vector CVSS és AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H. Això indica:

  • Vector local (AV:L): requereix accés local, no és explotable directament des d’Internet.
  • Privilegis baixos (PR:L) i sense interacció de l’usuari.
  • Impacte únicament sobre la disponibilitat (A:H): no compromet confidencialitat ni integritat. L’escenari realista és una denegació de servei o desestabilització del canal vsock, no l’execució de codi ni el robatori de dades.

Les versions afectades van des de Linux 4.8 fins a les branques mantingudes: 6.1.161, 6.6.121, 6.12.67 i 6.18.7, a més d’alguns release candidates de la sèrie 6.19. És rellevant sobretot en entorns de virtualització on es fa servir vsock (per exemple VMs amb QEMU/KVM o càrregues confidencials que depenen d’aquest canal).

Mitigació i pegat

La correcció és senzilla i ja està integrada: en lloc de fer la resta de manera directa, el codi reutilitza la funció existent virtio_transport_has_space(), que tracta correctament el cas límit i evita que el càlcul de crèdits es desbordi.

Recomanacions:

  1. Actualitzar el kernel a una versió que inclogui el pegat (6.1.162 o superior, 6.6.122+, 6.12.68+, 6.18.8+ o l’equivalent de la teva distribució).
  2. En distribucions estables (Debian, Ubuntu, RHEL i derivades), aplicar les actualitzacions de seguretat del kernel mitjançant el gestor de paquets; els mantenidors ja han incorporat el backport.
  3. Si gestiones un parc de VMs, prioritza els amfitrions que exposin vsock a convidats no confiables.

Com a bona pràctica complementària, convé reforçar l’aïllament de les màquines virtuals i limitar quins processos poden obrir sockets vsock. Per aprofundir en l’enduriment del sistema, revisa la nostra guia sobre SELinux i AppArmor.

Font