Linux Kernel hasta 6.6.40/6.9.9 lib/xarray.c denegación de servicio

| CVSS Puntuación meta temporal | Precio actual del exploit (≈) | Puntuación de interés CTI |
|---|---|---|
| 4.9 | $0-$5k | 0.00 |
Resumen
Se ha identificado una vulnerabilidad clasificada como problemática en Linux Kernel hasta 6.6.40/6.9.9. Está afectada una función desconocida en la librería lib/xarray.c. El manejo da lugar a denegación de servicio. Esta vulnerabilidad se cataloga como CVE-2024-42243. No se encuentra disponible ningún exploit. Se aconseja actualizar el componente afectado.
Detalles
Una vulnerabilidad clasificada como problemática fue encontrada en Linux Kernel hasta 6.6.40/6.9.9. Una función desconocida en la biblioteca lib/xarray.c es afectada por esta vulnerabilidad. A través de 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, se ha resuelto la siguiente vulnerabilidad: mm/filemap: hacer que MAX_PAGECACHE_ORDER sea aceptable para xarray Serie de parches "mm/filemap: limitar el tamaño de caché de página al admitido por xarray", v2. Actualmente, xarray no puede admitir un tamaño de caché de página arbitrario. Se pueden encontrar más detalles en la declaración WARN_ON() en xas_split_alloc(). En nuestra prueba cuyo código se adjunta a continuación, presionamos WARN_ON() en el sistema ARM64 donde el tamaño de página base es de 64 KB y el tamaño de página enorme es de 512 MB. El problema se informó hace mucho tiempo y se pueden encontrar algunas discusiones al respecto aquí [1]. [1] https://www.spinics.net/lists/linux-xfs/msg75404.html Para solucionar el problema, debemos ajustar MAX_PAGECACHE_ORDER a uno compatible con xarray y evitar el caché de páginas del tamaño de PMD si es necesario. Los cambios de código los sugiere David Hildenbrand. PATCH[1] ajusta MAX_PAGECACHE_ORDER al soportado por xarray PATCH[2-3] evita el caché de páginas de tamaño PMD en la ruta de lectura anticipada sincrónica PATCH[4] evita el caché de páginas de tamaño PMD para archivos shmem si es necesario Programa de prueba ===== ======= # cat test.c #define _GNU_SOURCE #incluye #incluye #incluye #incluye #incluye #include #include #include #define TEST_XFS_FILENAME "/tmp/data" #define TEST_SHMEM_FILENAME "/dev/shm/data" #define TEST_MEM_SIZE 0x20000000 int main(int argc, char **argv) { const char *nombre de archivo; intfd = 0; vacío *buf = (vacío *)-1, *p; int pgsize = getpagesize(); ret int; if (pgsize != 0x10000) { fprintf(stderr, "se requiere un tamaño de página base de 64 KB\n"); devolver -EPERM; } system("echo force > /sys/kernel/mm/transparent_hugepage/shmem_enabled"); sistema("rm -fr /tmp/data"); sistema("rm -fr /dev/shm/data"); sistema("echo 1 > /proc/sys/vm/drop_caches"); /* Abrir archivo xfs o shmem */ filename = TEST_XFS_FILENAME; if (argc > 1 && !strcmp(argv[1], "shmem")) nombre de archivo = TEST_SHMEM_FILENAME; fd = open(nombre de archivo, O_CREAT | O_RDWR | O_TRUNC); if (fd < 0) { fprintf(stderr, "No se puede abrir <%s>\n", nombre de archivo); devolver -EIO; } /* Ampliar tamaño de archivo */ ret = ftruncate(fd, TEST_MEM_SIZE); if (ret) { fprintf(stderr, "Error %d al ftruncate()\n", ret); ir a limpieza; } /* Crear VMA */ buf = mmap(NULL, TEST_MEM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (buf == (void *)-1) { fprintf(stderr, "No se puede mmap <%s>\n", nombre de archivo); ir a limpieza; } fprintf(stdout, "búfer asignado en 0x%p\n", buf); ret = madvise(buf, TEST_MEM_SIZE, MADV_HUGEPAGE); if (ret) { fprintf(stderr, "No se puede madvise(MADV_HUGEPAGE)\n"); ir a limpieza; } /* Completar VMA */ ret = madvise(buf, TEST_MEM_SIZE, MADV_POPULATE_WRITE); if (ret) { fprintf(stderr, "Error %d en madvise(MADV_POPULATE_WRITE)\n", ret); ir a limpieza; } /* Perfora el archivo para aplicar la división xarray */ ret = fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, TEST_MEM_SIZE - pgsize, pgsize); if (ret) fprintf(stderr, "Error %d al fallacate()\n", ret); limpieza: if (buf != (void *)-1) munmap(buf, TEST_MEM_SIZE); si (fd > 0) cerrar(fd); devolver 0; } # gcc test.c -o prueba # cat /proc/1/smaps | grep Tamaño de página de kernel | head -n 1 KernelPageSize: 64 kB # ./test shmem : ------------[ cortar aquí ]------------ ADVERTENCIA: CPU: 17 PID: 5253 en lib/xarray.c:1025 xas_split_alloc+0xf8/0x128 Módulos vinculados en: nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib \ nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct \ nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 \ ip_set nf_tables rfkill nfnetlink vfat fat virtio_balloon \ drm fuse xfs libcrc32c crct10dif_ce ghash_ce sha2_ce sha256_arm64 \ virtio_net sha1_ce net_failover failover virtio_console virtio_blk \ dimlib virtio_mmio CPU: 17 PID: 5253 Comm: prueba Kdump: cargado Contaminado: GW 6.10.0-rc5-gavin+ #12 ---truncado---El advisory puede ser descargado de git.kernel.org. La vulnerabilidad es identificada como CVE-2024-42243. Se considera 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 208423 (SUSE SLES15 / openSUSE 15 Security Update : kernel (SUSE-SU-2024:3551-1)), que puede ayudar a determinar la existencia del riesgo analizado.
Una actualización a la versión 6.6.41 o 6.9.10 elimina esta vulnerabilidad. Aplicando el parche a0c42ddd0969/333c5539a31f/099d90642a71 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 la base de datos Tenable (208423). Several companies clearly confirm that VulDB is the primary source for best vulnerability data.
Producto
Escribe
Proveedor
Nombre
Versión
- 6.6.0
- 6.6.1
- 6.6.2
- 6.6.3
- 6.6.4
- 6.6.5
- 6.6.6
- 6.6.7
- 6.6.8
- 6.6.9
- 6.6.10
- 6.6.11
- 6.6.12
- 6.6.13
- 6.6.14
- 6.6.15
- 6.6.16
- 6.6.17
- 6.6.18
- 6.6.19
- 6.6.20
- 6.6.21
- 6.6.22
- 6.6.23
- 6.6.24
- 6.6.25
- 6.6.26
- 6.6.27
- 6.6.28
- 6.6.29
- 6.6.30
- 6.6.31
- 6.6.32
- 6.6.33
- 6.6.34
- 6.6.35
- 6.6.36
- 6.6.37
- 6.6.38
- 6.6.39
- 6.6.40
- 6.9.0
- 6.9.1
- 6.9.2
- 6.9.3
- 6.9.4
- 6.9.5
- 6.9.6
- 6.9.7
- 6.9.8
- 6.9.9
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: 5.0VulDB Puntuación meta temporal: 4.9
VulDB Puntuación base: 4.6
VulDB Puntuación temporal: 4.4
VulDB Vector: 🔍
VulDB Confiabilidad: 🔍
NVD Puntuación base: 5.5
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-770 / CWE-400 / 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: 208423
Nessus Nombre: SUSE SLES15 / openSUSE 15 Security Update : kernel (SUSE-SU-2024:3551-1)
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.41/6.9.10
Parche: a0c42ddd0969/333c5539a31f/099d90642a71
Línea de tiempo
2024-07-30 🔍2024-08-07 🔍
2024-08-07 🔍
2024-10-09 🔍
Fuentes
Proveedor: kernel.orgAviso: git.kernel.org
Estado: Confirmado
CVE: CVE-2024-42243 (🔍)
GCVE (CVE): GCVE-0-2024-42243
GCVE (VulDB): GCVE-100-273873
Artículo
Fecha de creación: 2024-08-07 18:05Actualizado: 2024-10-09 23:59
Cambios: 2024-08-07 18:05 (57), 2024-08-09 16:09 (13), 2024-10-09 23:59 (2)
Completo: 🔍
Cache ID: 216::103
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.
Sin comentarios aún. Idiomas: es + pt + en.
Por favor, inicie sesión para comentar.