Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en kernel de Linux (CVE-2022-48662)

Gravedad CVSS v3.1:
ALTA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
28/04/2024
Última modificación:
26/08/2024

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: drm/i915/gem: realmente mueva i915_gem_context.link bajo protección de referencia. i915_perf supone que puede usar la referencia i915_gem_context para proteger su iteración i915->gem.contexts.list. Sin embargo, esto requiere que no eliminemos el contexto de la lista hasta que eliminemos la referencia final y liberemos la estructura. Si, como actualmente, eliminamos el contexto de la lista durante context_close(), el puntero link.next puede envenenarse mientras mantenemos la referencia de contexto y provocar un GPF: [ 4070.573157] i915 0000:00:02.0: [drm: i915_perf_open_ioctl [i915]] filtrado en ctx_id=0x1fffff ctx_id_mask=0x1fffff [4070.574881] falla de protección general, probablemente para dirección no canónica 0xdead000000000100: 0000 [#1] PREEMPT SMP [ 4070.574897] : 1 PID: 284392 Comunicaciones: AMD_Performance Contaminado: GE 5.17.9 #180 [ 4070.574903] Nombre del hardware: Intel Corporation NUC7i5BNK/NUC7i5BNB, BIOS BNKBL357.86A.0052.2017.0918.1346 18/09/2017 [ 4070.574907] RIP: oa_configure_all_contexts.is ra.0+0x222/0x350 [i915] [ 4070.574982] Código: 08 e8 32 6e 10 e1 4d 8b 6d 50 b8 ff ff ff ff 49 83 ed 50 f0 41 0f c1 04 24 83 f8 01 0f 84 e3 00 00 00 85 c0 0f 8e fa 00 00 <49> 8b 45 50 48 8d 70 b0 49 8d 45 50 48 39 44 24 10 0f 85 34 fe ff [ 4070.574990] RSP: 0018:ffffc90002077b78 EFLAGS: 00010202 [ 4070.574995] : 0000000000000002 RBX: 0000000000000002 RCX: 0000000000000000 [ 4070.575000] RDX: 0000000000000001 RSI : ffffc90002077b20 RDI: ffff88810ddc7c68 [ 4070.575004] RBP: 0000000000000001 R08: ffff888103242648 R09: ffffffffffffffc [ 4070.575008] R10: 2c50bc0 R11: 0000000000025c80 R12: ffff888101bf1860 [ 4070.575012] R13: muerto0000000000b0 R14: ffffc90002077c04 R15: ffff88810be5cabc [ 4070.57501 6]FS: 00007f1ed50c0780(0000) GS:ffff88885ec80000(0000) knlGS:0000000000000000 [ 4070.575021] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 4070.575025] CR2: 5590280 CR3: 000000010ef6f005 CR4: 00000000003706e0 [ 4070.575029] Seguimiento de llamadas: [ 4070.575033] [ 4070.575037 ] lrc_configure_all_contexts+0x13e/0x150 [i915] [ 4070.575103] gen8_enable_metric_set+0x4d/0x90 [i915] [ 4070.575164] i915_perf_open_ioctl+0xbc0/0x1500 [i915] [ 4070.5 75224] ? asm_common_interrupt+0x1e/0x40 [4070.575232]? i915_oa_init_reg_state+0x110/0x110 [i915] [ 4070.575290] drm_ioctl_kernel+0x85/0x110 [ 4070.575296] ? update_load_avg+0x5f/0x5e0 [ 4070.575302] drm_ioctl+0x1d3/0x370 [ 4070.575307] ? i915_oa_init_reg_state+0x110/0x110 [i915] [4070.575382]? gen8_gt_irq_handler+0x46/0x130 [i915] [ 4070.575445] __x64_sys_ioctl+0x3c4/0x8d0 [ 4070.575451] ? __do_softirq+0xaa/0x1d2 [ 4070.575456] do_syscall_64+0x35/0x80 [ 4070.575461] Entry_SYSCALL_64_after_hwframe+0x44/0xae [ 4070.575467] RIP: 0x7f1ed5c10397 [ 4070.575471] Código: 3c 1c e8 1c ff ff ff 85 c0 79 87 49 c7 c4 ff ff ff ff 5b 5d 4c 89 e0 41 5c c3 66 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d a9 da 0d 00 f7 d8 64 89 01 48 [ 4070.575478] RSP: 002b:00007ffd65c8d7a8 EFLAGS: 00000246 ORIG_RAX: 0000000000000010 [ 4070.575484] RAX: ffffffffffffffda RBX: 0000000000000006 X: 00007f1ed5c10397 [ 4070.575488] RDX: 00007ffd65c8d7c0 RSI: 0000000040106476 RDI: 0000000000000006 [ 4070.575492] RBP: 00005620972f9c 60 R08: 000000000000000a R09: 0000000000000005 [ 4070.575496] R10: 000000000000000d R11: 0000000000000246 R12: 000000000000000a [ 4070.575500] R13: 000000000000000d R14: 0000000000 R15: 00007ffd65c8d7c0 [ 4070.575505] [ 4070.575507] Módulos vinculados en: nls_ascii(E) nls_cp437(E) vfat(E) fat(E) i915(E) x86_pkg_temp_thermal(E) intel_powerclamp(E) crct10dif_pclmul(E) crc32_pclmul(E) crc32c_intel(E) aesni_intel(E) crypto_simd(E) intel_gtt(E) cryptd(E) ttm(E) rapl( E) intel_cstate(E) drm_kms_helper(E) cfbfillrect(E) syscopyarea(E) cfbimgblt(E) intel_uncore(E) sysfillrect(E) mei_me(E) sysimgblt(E) i2c_i801(E) fb_sys_fops(E) mei(E) intel_pch_thermal(E) i2c_smbus ---truncado---

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.15 (incluyendo) 5.15.72 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 5.19.12 (excluyendo)