Linux Kernel hasta 6.6.126/6.12.73/6.18.12/6.19.2 F2FS fs/f2fs/data.c denegación de servicio

| CVSS Puntuación meta temporal | Precio actual del exploit (≈) | Puntuación de interés CTI |
|---|---|---|
| 6.2 | $0-$5k | 0.00 |
Resumen
Se ha identificado una vulnerabilidad clasificada como crítica en Linux Kernel hasta 6.6.126/6.12.73/6.18.12/6.19.2. Se ve afectada una función desconocida del archivo fs/f2fs/data.c del componente F2FS. A través de la manipulación de un input desconocido se causa una vulnerabilidad de clase denegación de servicio. Esta vulnerabilidad está identificada como CVE-2026-23233. No hay ningún exploit disponible. Es recomendable actualizar el componente afectado.
Detalles
Una vulnerabilidad fue encontrada en Linux Kernel hasta 6.6.126/6.12.73/6.18.12/6.19.2 y clasificada como crítica. Una función desconocida del archivo fs/f2fs/data.c del componente F2FS es afectada por esta vulnerabilidad. Por la manipulación de un input desconocido se causa una vulnerabilidad de clase denegación de servicio. Esto tiene repercusión sobre la la disponibilidad. El resumen de CVE es:
En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:
f2fs: corrección para evitar mapear un bloque físico incorrecto para el archivo de intercambio
Xiaolong Guo informó de un error de f2fs en bugzilla [1]
[1] HTTPS://bugzilla.kernel.org/show_bug.cgi?id=220951
Citado:
Cuando se utiliza la prueba de estrés de intercambio de stress-ng en el sistema de archivos F2FS con kernel 6.6+, el sistema experimenta corrupción de datos que lleva a una de las siguientes situaciones:
1 errores de corrupción de dm-verity y reinicio del dispositivo
2 errores de corrupción de nodo F2FS y cuelgues de arranque
El problema ocurre específicamente cuando:
1 Se utiliza el sistema de archivos F2FS (ext4 no se ve afectado)
2 El tamaño del archivo de intercambio es menor que el tamaño de sección de F2FS (2MB)
3 El archivo de intercambio tiene un diseño físico fragmentado (múltiples extensiones no contiguas)
4 La versión del kernel es 6.6+ (6.1 no se ve afectada)
La causa raíz está en la función check_swap_activate() en fs/f2fs/data.c. Cuando la primera extensión de un archivo de intercambio pequeño (< 2MB) no está alineada con los límites de sección, la función lo trata incorrectamente como la última extensión, fallando en mapear extensiones subsiguientes. Esto resulta en una creación incorrecta de swap_extent donde solo la primera extensión es mapeada, causando que las escrituras de intercambio subsiguientes sobrescriban ubicaciones físicas incorrectas (datos de otros archivos).
Pasos para Reproducir
1 Configurar un dispositivo con una partición de datos de usuario formateada en F2FS
2 Compilar stress-ng desde HTTPS://github.com/ColinIanKing/stress-ng
3 Ejecutar la prueba de estrés de intercambio: (dispositivos Android)
adb shell 'cd /data/stressng; ./stress-ng-64 --metrics-brief --timeout 60 --swap 0'
Registro:
1 Ftrace muestra que en el kernel 6.6, solo la primera extensión se mapea durante la segunda llamada a f2fs_map_blocks en check_swap_activate():
stress-ng-swap-8990: f2fs_map_blocks: ino=11002, file offset=0, start blkaddr=0x43143, len=0x1
(Solo 4KB mapeados, no el archivo de intercambio completo)
2 en el kernel 6.1, ambas extensiones se mapean correctamente:
stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=0, start blkaddr=0x13cd4, len=0x1
stress-ng-swap-5966: f2fs_map_blocks: ino=28011, file offset=1, start blkaddr=0x60c84b, len=0xff
El código problemático está en check_swap_activate():
if ((pblock - SM_I(sbi)->main_blkaddr) % blks_per_sec ||
nr_pblocks % blks_per_sec ||
!f2fs_valid_pinned_area(sbi, pblock)) {
bool last_extent = false;
not_aligned++;
nr_pblocks = roundup(nr_pblocks, blks_per_sec);
if (cur_lblock + nr_pblocks > sis->max)
nr_pblocks -= blks_per_sec;
/* esta extensión es la última */
if (!nr_pblocks) {
nr_pblocks = last_lblock - cur_lblock;
last_extent = true;
}
ret = f2fs_migrate_blocks(inode, cur_lblock, nr_pblocks);
if (ret) {
if (ret == -ENOENT)
ret = -EINVAL;
goto out;
}
if (!last_extent)
goto retry;
}
Cuando la primera extensión no está alineada y roundup(nr_pblocks, blks_per_sec) excede sis->max, restamos blks_per_sec resultando en nr_pblocks = 0. El código asume incorrectamente que esta es la última extensión, establece nr_pblocks = last_lblock - cur_lblock (archivo de intercambio completo), y realiza la migración. Después de la migración, no reintenta el mapeo, por lo que las extensiones subsiguientes nunca se procesan.
Para solucionar este problema, necesitamos buscar la información de mapeo de bloques después de migrar todos los bloques en la cola del archivo de intercambio.El advisory puede ser descargado de git.kernel.org. La vulnerabilidad es identificada como CVE-2026-23233. Es difícil de explotar. Detalles técnicos son conocidos, pero no hay ningún exploit público disponible.
Para el scanner Nessus se dispone de un plugin ID 301080 (Linux Distros Unpatched Vulnerability : CVE-2026-23233), que puede ayudar a determinar la existencia del riesgo analizado.
Una actualización a la versión 6.6.127, 6.12.74, 6.18.13, 6.19.3 o 7.0-rc1 elimina esta vulnerabilidad. Aplicando el parche d4534a7f6c92baaf7e12a45fc6e37332cafafc33/1ff415eef513bf12deb058fc50d57788c46c48e6/fee27b69dde1a05908b350eea42937af2387c4fe/607cb9d83838d2cd9f0406c2403ed61aadf0edff/5c145c03188bc9ba1c29e0bc4d527a5978fc47f9 es posible eliminar el problema. El parche puede ser descargado de git.kernel.org. El mejor modo sugerido para mitigar el problema es Actualización.
La vulnerabilidad también está documentado en las bases de datos Tenable (301080), EUVD (EUVD-2026-9405) y CERT Bund (WID-SEC-2026-0614). Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.
Afectado
- Google Container-Optimized OS
- Debian Linux
- Amazon Linux 2
- Red Hat Enterprise Linux
- SUSE Linux
- Oracle Linux
- SUSE openSUSE
- RESF Rocky Linux
- Microsoft Azure Linux
- Open Source Linux Kernel
- IBM QRadar SIEM
Producto
Escribe
Proveedor
Nombre
Versión
- 6.6.126
- 6.12.0
- 6.12.1
- 6.12.2
- 6.12.3
- 6.12.4
- 6.12.5
- 6.12.6
- 6.12.7
- 6.12.8
- 6.12.9
- 6.12.10
- 6.12.11
- 6.12.12
- 6.12.13
- 6.12.14
- 6.12.15
- 6.12.16
- 6.12.17
- 6.12.18
- 6.12.19
- 6.12.20
- 6.12.21
- 6.12.22
- 6.12.23
- 6.12.24
- 6.12.25
- 6.12.26
- 6.12.27
- 6.12.28
- 6.12.29
- 6.12.30
- 6.12.31
- 6.12.32
- 6.12.33
- 6.12.34
- 6.12.35
- 6.12.36
- 6.12.37
- 6.12.38
- 6.12.39
- 6.12.40
- 6.12.41
- 6.12.42
- 6.12.43
- 6.12.44
- 6.12.45
- 6.12.46
- 6.12.47
- 6.12.48
- 6.12.49
- 6.12.50
- 6.12.51
- 6.12.52
- 6.12.53
- 6.12.54
- 6.12.55
- 6.12.56
- 6.12.57
- 6.12.58
- 6.12.59
- 6.12.60
- 6.12.61
- 6.12.62
- 6.12.63
- 6.12.64
- 6.12.65
- 6.12.66
- 6.12.67
- 6.12.68
- 6.12.69
- 6.12.70
- 6.12.71
- 6.12.72
- 6.12.73
- 6.18.0
- 6.18.1
- 6.18.2
- 6.18.3
- 6.18.4
- 6.18.5
- 6.18.6
- 6.18.7
- 6.18.8
- 6.18.9
- 6.18.10
- 6.18.11
- 6.18.12
- 6.19.0
- 6.19.1
- 6.19.2
Licencia
Sitio web
- Proveedor: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔒VulDB Confiabilidad: 🔍
CVSSv3
VulDB Puntuación meta base: 6.3VulDB Puntuación meta temporal: 6.2
VulDB Puntuación base: 4.8
VulDB Puntuación temporal: 4.6
VulDB Vector: 🔒
VulDB Confiabilidad: 🔍
NVD Puntuación base: 7.8
NVD Vector: 🔒
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complejidad | Autenticación | Confidencialidad | Integridad | Disponibilidad |
|---|---|---|---|---|---|
| Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
| Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
| Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
VulDB Puntuación base: 🔒
VulDB Puntuación temporal: 🔒
VulDB Confiabilidad: 🔍
Explotación
Clase: Denegación de servicioCWE: CWE-404
CAPEC: 🔒
ATT&CK: 🔒
Físico: En parte
Local: Sí
Remoto: En parte
Disponibilidad: 🔒
Estado: No está definido
EPSS Score: 🔒
EPSS Percentile: 🔒
Predicción de precios: 🔍
Estimación del precio actual: 🔒
| 0-Day | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
|---|---|---|---|---|
| Hoy | Desbloquear | Desbloquear | Desbloquear | Desbloquear |
Nessus ID: 301080
Nessus Nombre: Linux Distros Unpatched Vulnerability : CVE-2026-23233
Inteligencia de amenazas
Interés: 🔍Actores activos: 🔍
Grupos APT activos: 🔍
Contramedidas
Recomendación: ActualizaciónEstado: 🔍
Hora de 0 días: 🔒
Actualización: Kernel 6.6.127/6.12.74/6.18.13/6.19.3/7.0-rc1
Parche: d4534a7f6c92baaf7e12a45fc6e37332cafafc33/1ff415eef513bf12deb058fc50d57788c46c48e6/fee27b69dde1a05908b350eea42937af2387c4fe/607cb9d83838d2cd9f0406c2403ed61aadf0edff/5c145c03188bc9ba1c29e0bc4d527a5978fc47f9
Línea de tiempo
2026-01-13 CVE asignado2026-03-04 Aviso publicado
2026-03-04 Entrada de VulDB creada
2026-05-24 Última actualización de VulDB
Fuentes
Proveedor: kernel.orgAviso: git.kernel.org
Estado: Confirmado
CVE: CVE-2026-23233 (🔒)
GCVE (CVE): GCVE-0-2026-23233
GCVE (VulDB): GCVE-100-348731
EUVD: 🔒
CERT Bund: WID-SEC-2026-0614 - Linux Kernel: Mehrere Schwachstellen
Artículo
Fecha de creación: 2026-03-04 16:06Actualizado: 2026-05-24 22:11
Cambios: 2026-03-04 16:06 (59), 2026-03-05 13:23 (7), 2026-03-07 22:18 (2), 2026-03-18 06:43 (12), 2026-04-20 11:35 (1), 2026-04-29 22:59 (1), 2026-05-24 22:11 (1)
Completo: 🔍
Cache ID: 216::103
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.
Sin comentarios aún. Idiomas: es + pt + en.
Por favor, inicie sesión para comentar.