# CVE-2026-31408: use-after-free a la pila Bluetooth SCO del nucli Linux

- **Publicat el:** 2026-04-06
- **Categoria:** Seguretat
- **Pàgina original:** https://linuxgratis.com/ca/articles/cve-2026-31408-bluetooth-sco-recv-frame-use-after-free-kernel-linux

Una condició de cursa a sco_recv_frame() allibera el socket abans d'hora i obre la porta a un use-after-free al Bluetooth del nucli. CVSS 8.8. Això és el que afecta i com pegar-ho.

---

El subsistema Bluetooth del nucli Linux arrossega un error de tipus use-after-free a la ruta SCO, la que gestiona l'àudio síncron de mans lliures i auriculars. Se li ha assignat l'identificador CVE-2026-31408 i una puntuació CVSS de 8.8 (alta).

## Què falla exactament

El problema és a la funció `sco_recv_frame()`, dins de `net/bluetooth/sco.c`. Aquesta funció llegeix la referència al socket (`conn->sk`) sota el bloqueig `sco_conn_lock()`, però allibera el lock immediatament sense haver pres una referència ferma sobre l'objecte socket. Entre que deixa anar el bloqueig i l'accés posterior a `sk->sk_state`, una operació concurrent de tancament (`close()`) pot alliberar aquest socket. El resultat és un accés a memòria ja alliberada: un use-after-free de manual provocat per una condició de cursa.

La descripció oficial ho resumeix així: la funció llegeix `conn->sk` sota el lock però l'allibera sense retenir una referència, de manera que un `close()` concurrent pot alliberar el socket abans de l'accés següent.

## A qui afecta

A qualsevol sistema Linux amb Bluetooth en ús. Això inclou portàtils, ordinadors d'escriptori, dispositius IoT, sistemes d'infoentreteniment d'automoció i un bon grapat de plaques encastades. El rang de versions vulnerables és ampli: comença a la 2.6.12 i arriba a branques molt recents. Segons les dades de NVD queden afectades, entre altres, totes les sèries fins a 5.15.203, de 5.16 a 6.1.167, de 6.2 a 6.6.130, de 6.7 a 6.12.79, de 6.13 a 6.18.20 i de 6.19 a 6.19.10. Si mantens un nucli LTS, mira en quin punt exacte de la teva sèrie va entrar l'arranjament.

## Com de greu és

El vector CVSS és `AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`. L'`AV:A` (Adjacent) és important: no és un error explotable des de l'altra punta d'internet, sinó des de la xarxa de proximitat Bluetooth. Un atacant ha d'estar dins del radi d'abast i forçar la condició de cursa entre la recepció de trames SCO i el tancament del socket. Aconseguir-ho no és trivial, perquè depèn de la temporització, però l'impacte potencial sí que és seriós: des de la caiguda del nucli fins a, en el pitjor cas, execució de codi. Per això confidencialitat, integritat i disponibilitat consten com a altes.

La part tranquil·litzadora és que el vector de proximitat redueix molt la superfície davant d'un error remot pur. La part incòmoda és que el Bluetooth sol estar encès per defecte a portàtils i cotxes.

## Mitigació

La correcció introdueix un comptatge de referències correcte. S'afegeix `sco_sock_hold()` per retenir el socket abans de deixar anar el bloqueig i es crida `sock_put()` a totes les rutes de sortida, igual que ja feien altres funcions del mateix fitxer. Amb això el socket no es pot alliberar mentre `sco_recv_frame()` l'estigui fent servir.

Què fer a la pràctica:

- Actualitza el nucli a la primera versió de la teva sèrie que incorpori el pegat i reinicia.
- Si per algun motiu no pots pegar de seguida i no fas servir Bluetooth, desactivar-lo (`rfkill block bluetooth` o aturant el servei) deixa l'exposició a zero mentrestant.
- En flotes de dispositius IoT o encastats, prioritza els que tinguin Bluetooth sempre actiu i a l'abast físic de tercers.

Per saber en quin punt de manteniment és el teu sistema, consulta la fitxa de [Linux kernel](/ca/linux-kernel).

## Font

- [NVD - CVE-2026-31408 Detail](https://nvd.nist.gov/vuln/detail/CVE-2026-31408)
- [https://nvd.nist.gov/vuln/detail/CVE-2026-31408](https://nvd.nist.gov/vuln/detail/CVE-2026-31408)
