2025-01-09 17:04:14 +00:00

145 lines
6.5 KiB
JSON

{
"id": "CVE-2021-47026",
"sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"published": "2024-02-28T09:15:39.337",
"lastModified": "2025-01-09T15:04:56.983",
"vulnStatus": "Analyzed",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nRDMA/rtrs-clt: destroy sysfs after removing session from active list\n\nA session can be removed dynamically by sysfs interface \"remove_path\" that\neventually calls rtrs_clt_remove_path_from_sysfs function. The current\nrtrs_clt_remove_path_from_sysfs first removes the sysfs interfaces and\nfrees sess->stats object. Second it removes the session from the active\nlist.\n\nTherefore some functions could access non-connected session and access the\nfreed sess->stats object even-if they check the session status before\naccessing the session.\n\nFor instance rtrs_clt_request and get_next_path_min_inflight check the\nsession status and try to send IO to the session. The session status\ncould be changed when they are trying to send IO but they could not catch\nthe change and update the statistics information in sess->stats object,\nand generate use-after-free problem.\n(see: \"RDMA/rtrs-clt: Check state of the rtrs_clt_sess before reading its\nstats\")\n\nThis patch changes the rtrs_clt_remove_path_from_sysfs to remove the\nsession from the active session list and then destroy the sysfs\ninterfaces.\n\nEach function still should check the session status because closing or\nerror recovery paths can change the status."
},
{
"lang": "es",
"value": "En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: RDMA/rtrs-clt: destruye sysfs despu\u00e9s de eliminar la sesi\u00f3n de la lista activa Una sesi\u00f3n se puede eliminar din\u00e1micamente mediante la interfaz sysfs \"remove_path\" que eventualmente llama a la funci\u00f3n rtrs_clt_remove_path_from_sysfs. El rtrs_clt_remove_path_from_sysfs actual primero elimina las interfaces sysfs y libera el objeto sess->stats. En segundo lugar, elimina la sesi\u00f3n de la lista activa. Por lo tanto, algunas funciones podr\u00edan acceder a sesiones no conectadas y acceder al objeto sess->stats liberado incluso si verifican el estado de la sesi\u00f3n antes de acceder a la sesi\u00f3n. Por ejemplo, rtrs_clt_request y get_next_path_min_inflight verifican el estado de la sesi\u00f3n e intentan enviar IO a la sesi\u00f3n. El estado de la sesi\u00f3n podr\u00eda cambiarse cuando intentan enviar IO pero no pudieron detectar el cambio y actualizar la informaci\u00f3n estad\u00edstica en el objeto sess->stats, y generar un problema de use-after-free. (ver: \"RDMA/rtrs-clt: Verifique el estado de rtrs_clt_sess antes de leer sus estad\u00edsticas\") Este parche cambia rtrs_clt_remove_path_from_sysfs para eliminar la sesi\u00f3n de la lista de sesiones activas y luego destruir las interfaces sysfs. Cada funci\u00f3n a\u00fan debe verificar el estado de la sesi\u00f3n porque el cierre o las rutas de recuperaci\u00f3n de errores pueden cambiar el estado."
}
],
"metrics": {
"cvssMetricV31": [
{
"source": "nvd@nist.gov",
"type": "Primary",
"cvssData": {
"version": "3.1",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"baseScore": 7.8,
"baseSeverity": "HIGH",
"attackVector": "LOCAL",
"attackComplexity": "LOW",
"privilegesRequired": "LOW",
"userInteraction": "NONE",
"scope": "UNCHANGED",
"confidentialityImpact": "HIGH",
"integrityImpact": "HIGH",
"availabilityImpact": "HIGH"
},
"exploitabilityScore": 1.8,
"impactScore": 5.9
}
]
},
"weaknesses": [
{
"source": "nvd@nist.gov",
"type": "Primary",
"description": [
{
"lang": "en",
"value": "CWE-416"
}
]
}
],
"configurations": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.8",
"versionEndExcluding": "5.10.37",
"matchCriteriaId": "CD2F1C00-3D81-452B-AE61-0B2C1A536A1D"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.11",
"versionEndExcluding": "5.11.21",
"matchCriteriaId": "8CBB94EC-EC33-4464-99C5-03E5542715F0"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "5.12",
"versionEndExcluding": "5.12.4",
"matchCriteriaId": "D8C7052F-1B7B-4327-9C2B-84EBF3243838"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/676171f9405dcaa45a33d18241c32f387dbaae39",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/7f4a8592ff29f19c5a2ca549d0973821319afaad",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/b64415c6b3476cf9fa4d0aea3807065b8403a937",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/d3cca8067d43dfee4a3535c645b55f618708dccb",
"source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/676171f9405dcaa45a33d18241c32f387dbaae39",
"source": "af854a3a-2127-422b-91ae-364da2661108",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/7f4a8592ff29f19c5a2ca549d0973821319afaad",
"source": "af854a3a-2127-422b-91ae-364da2661108",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/b64415c6b3476cf9fa4d0aea3807065b8403a937",
"source": "af854a3a-2127-422b-91ae-364da2661108",
"tags": [
"Patch"
]
},
{
"url": "https://git.kernel.org/stable/c/d3cca8067d43dfee4a3535c645b55f618708dccb",
"source": "af854a3a-2127-422b-91ae-364da2661108",
"tags": [
"Patch"
]
}
]
}