// For flags

CVE-2023-52792

cxl/region: Do not try to cleanup after cxl_region_setup_targets() fails

Severity Score

"-"
*CVSS v-

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

Track
*SSVC
Descriptions

In the Linux kernel, the following vulnerability has been resolved:

cxl/region: Do not try to cleanup after cxl_region_setup_targets() fails

Commit 5e42bcbc3fef ("cxl/region: decrement ->nr_targets on error in
cxl_region_attach()") tried to avoid 'eiw' initialization errors when
->nr_targets exceeded 16, by just decrementing ->nr_targets when
cxl_region_setup_targets() failed.

Commit 86987c766276 ("cxl/region: Cleanup target list on attach error")
extended that cleanup to also clear cxled->pos and p->targets[pos]. The
initialization error was incidentally fixed separately by:
Commit 8d4285425714 ("cxl/region: Fix port setup uninitialized variable
warnings") which was merged a few days after 5e42bcbc3fef.

But now the original cleanup when cxl_region_setup_targets() fails
prevents endpoint and switch decoder resources from being reused:

1) the cleanup does not set the decoder's region to NULL, which results
in future dpa_size_store() calls returning -EBUSY
2) the decoder is not properly freed, which results in future commit
errors associated with the upstream switch

Now that the initialization errors were fixed separately, the proper
cleanup for this case is to just return immediately. Then the resources
associated with this target get cleanup up as normal when the failed
region is deleted.

The ->nr_targets decrement in the error case also helped prevent
a p->targets[] array overflow, so add a new check to prevent against
that overflow.

Tested by trying to create an invalid region for a 2 switch * 2 endpoint
topology, and then following up with creating a valid region.

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: cxl/region: no intente realizar la limpieza después de que cxl_region_setup_targets() falle. Confirme 5e42bcbc3fef ("cxl/region: decrement ->nr_targets on error in cxl_region_attach()") intentó evitar ' Los mismos errores de inicialización cuando ->nr_targets excedieron 16, simplemente disminuyendo ->nr_targets cuando cxl_region_setup_targets() falló. La confirmación 86987c766276 ("cxl/region: Limpiar lista de objetivos al adjuntar error") extendió esa limpieza para borrar también cxled->pos y p->targets[pos]. El error de inicialización se solucionó por separado mediante: Commit 8d4285425714 ("cxl/region: Reparar advertencias de variables no inicializadas de configuración de puerto") que se fusionó unos días después de 5e42bcbc3fef. Pero ahora la limpieza original cuando falla cxl_region_setup_targets() impide que se reutilicen los recursos del decodificador de conmutador y punto final: 1) la limpieza no establece la región del decodificador en NULL, lo que da como resultado que futuras llamadas a dpa_size_store() devuelvan -EBUSY 2) el decodificador no liberado correctamente, lo que resulta en futuros errores de confirmación asociados con el conmutador ascendente. Ahora que los errores de inicialización se solucionaron por separado, la limpieza adecuada para este caso es simplemente regresar inmediatamente. Luego, los recursos asociados con este objetivo se limpian normalmente cuando se elimina la región fallida. La disminución de ->nr_targets en el caso de error también ayudó a evitar un desbordamiento de la matriz p->targets[], así que agregue una nueva verificación para evitar ese desbordamiento. Probado intentando crear una región no válida para una topología de 2 conmutadores * 2 puntos finales y luego creando una región válida.

*Credits: N/A
CVSS Scores
Attack Vector
-
Attack Complexity
-
Privileges Required
-
User Interaction
-
Scope
-
Confidentiality
-
Integrity
-
Availability
-
* Common Vulnerability Scoring System
SSVC
  • Decision:Track
Exploitation
None
Automatable
No
Tech. Impact
Partial
* Organization's Worst-case Scenario
Timeline
  • 2024-05-21 CVE Reserved
  • 2024-05-21 CVE Published
  • 2024-05-22 EPSS Updated
  • 2024-08-02 CVE Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 6.0 < 6.1.64
Search vendor "Linux" for product "Linux Kernel" and version " >= 6.0 < 6.1.64"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 6.0 < 6.5.13
Search vendor "Linux" for product "Linux Kernel" and version " >= 6.0 < 6.5.13"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 6.0 < 6.6.3
Search vendor "Linux" for product "Linux Kernel" and version " >= 6.0 < 6.6.3"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 6.0 < 6.7
Search vendor "Linux" for product "Linux Kernel" and version " >= 6.0 < 6.7"
en
Affected