cve-2022-48838
Vulnerability from cvelistv5
Published
2024-07-16 12:25
Modified
2024-11-04 12:17
Severity ?
EPSS score ?
Summary
usb: gadget: Fix use-after-free bug by not setting udc->dev.driver
References
Impacted products
{ "containers": { "adp": [ { "providerMetadata": { "dateUpdated": "2024-08-03T15:25:01.785Z", "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE" }, "references": [ { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/4325124dde6726267813c736fee61226f1d38f0b" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/e2d3a7009e505e120805f449c832942660f3f7f3" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/609a7119bffe3ddd7c93f2fa65be8917e02a0b7e" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/2282a6eb6d4e118e294e43dcc421e0e0fe4040b5" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/00bdd9bf1ac6d401ad926d3d8df41b9f1399f646" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/2015c23610cd0efadaeca4d3a8d1dae9a45aa35a" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/27d64436984fb8835a8b7e95993193cc478b162e" }, { "tags": [ "x_transferred" ], "url": "https://git.kernel.org/stable/c/16b1941eac2bd499f065a6739a40ce0011a3d740" } ], "title": "CVE Program Container" }, { "metrics": [ { "other": { "content": { "id": "CVE-2022-48838", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "role": "CISA Coordinator", "timestamp": "2024-09-10T16:57:03.624451Z", "version": "2.0.3" }, "type": "ssvc" } } ], "providerMetadata": { "dateUpdated": "2024-09-11T17:34:10.138Z", "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP" }, "title": "CISA ADP Vulnrichment" } ], "cna": { "affected": [ { "defaultStatus": "unaffected", "product": "Linux", "programFiles": [ "drivers/usb/gadget/udc/core.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "lessThan": "4325124dde67", "status": "affected", "version": "2ccea03a8f7e", "versionType": "git" }, { "lessThan": "e2d3a7009e50", "status": "affected", "version": "2ccea03a8f7e", "versionType": "git" }, { "lessThan": "609a7119bffe", "status": "affected", "version": "2ccea03a8f7e", "versionType": "git" }, { "lessThan": "2282a6eb6d4e", "status": "affected", "version": "2ccea03a8f7e", "versionType": "git" }, { "lessThan": "00bdd9bf1ac6", "status": "affected", "version": "2ccea03a8f7e", "versionType": "git" }, { "lessThan": "2015c23610cd", "status": "affected", "version": "2ccea03a8f7e", "versionType": "git" }, { "lessThan": "27d64436984f", "status": "affected", "version": "2ccea03a8f7e", "versionType": "git" }, { "lessThan": "16b1941eac2b", "status": "affected", "version": "2ccea03a8f7e", "versionType": "git" } ] }, { "defaultStatus": "affected", "product": "Linux", "programFiles": [ "drivers/usb/gadget/udc/core.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "status": "affected", "version": "3.1" }, { "lessThan": "3.1", "status": "unaffected", "version": "0", "versionType": "semver" }, { "lessThanOrEqual": "4.9.*", "status": "unaffected", "version": "4.9.308", "versionType": "semver" }, { "lessThanOrEqual": "4.14.*", "status": "unaffected", "version": "4.14.273", "versionType": "semver" }, { "lessThanOrEqual": "4.19.*", "status": "unaffected", "version": "4.19.236", "versionType": "semver" }, { "lessThanOrEqual": "5.4.*", "status": "unaffected", "version": "5.4.187", "versionType": "semver" }, { "lessThanOrEqual": "5.10.*", "status": "unaffected", "version": "5.10.108", "versionType": "semver" }, { "lessThanOrEqual": "5.15.*", "status": "unaffected", "version": "5.15.31", "versionType": "semver" }, { "lessThanOrEqual": "5.16.*", "status": "unaffected", "version": "5.16.17", "versionType": "semver" }, { "lessThanOrEqual": "*", "status": "unaffected", "version": "5.17", "versionType": "original_commit_for_fix" } ] } ], "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nusb: gadget: Fix use-after-free bug by not setting udc-\u003edev.driver\n\nThe syzbot fuzzer found a use-after-free bug:\n\nBUG: KASAN: use-after-free in dev_uevent+0x712/0x780 drivers/base/core.c:2320\nRead of size 8 at addr ffff88802b934098 by task udevd/3689\n\nCPU: 2 PID: 3689 Comm: udevd Not tainted 5.17.0-rc4-syzkaller-00229-g4f12b742eb2b #0\nHardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014\nCall Trace:\n \u003cTASK\u003e\n __dump_stack lib/dump_stack.c:88 [inline]\n dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106\n print_address_description.constprop.0.cold+0x8d/0x303 mm/kasan/report.c:255\n __kasan_report mm/kasan/report.c:442 [inline]\n kasan_report.cold+0x83/0xdf mm/kasan/report.c:459\n dev_uevent+0x712/0x780 drivers/base/core.c:2320\n uevent_show+0x1b8/0x380 drivers/base/core.c:2391\n dev_attr_show+0x4b/0x90 drivers/base/core.c:2094\n\nAlthough the bug manifested in the driver core, the real cause was a\nrace with the gadget core. dev_uevent() does:\n\n\tif (dev-\u003edriver)\n\t\tadd_uevent_var(env, \"DRIVER=%s\", dev-\u003edriver-\u003ename);\n\nand between the test and the dereference of dev-\u003edriver, the gadget\ncore sets dev-\u003edriver to NULL.\n\nThe race wouldn\u0027t occur if the gadget core registered its devices on\na real bus, using the standard synchronization techniques of the\ndriver core. However, it\u0027s not necessary to make such a large change\nin order to fix this bug; all we need to do is make sure that\nudc-\u003edev.driver is always NULL.\n\nIn fact, there is no reason for udc-\u003edev.driver ever to be set to\nanything, let alone to the value it currently gets: the address of the\ngadget\u0027s driver. After all, a gadget driver only knows how to manage\na gadget, not how to manage a UDC.\n\nThis patch simply removes the statements in the gadget core that touch\nudc-\u003edev.driver." } ], "providerMetadata": { "dateUpdated": "2024-11-04T12:17:34.138Z", "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux" }, "references": [ { "url": "https://git.kernel.org/stable/c/4325124dde6726267813c736fee61226f1d38f0b" }, { "url": "https://git.kernel.org/stable/c/e2d3a7009e505e120805f449c832942660f3f7f3" }, { "url": "https://git.kernel.org/stable/c/609a7119bffe3ddd7c93f2fa65be8917e02a0b7e" }, { "url": "https://git.kernel.org/stable/c/2282a6eb6d4e118e294e43dcc421e0e0fe4040b5" }, { "url": "https://git.kernel.org/stable/c/00bdd9bf1ac6d401ad926d3d8df41b9f1399f646" }, { "url": "https://git.kernel.org/stable/c/2015c23610cd0efadaeca4d3a8d1dae9a45aa35a" }, { "url": "https://git.kernel.org/stable/c/27d64436984fb8835a8b7e95993193cc478b162e" }, { "url": "https://git.kernel.org/stable/c/16b1941eac2bd499f065a6739a40ce0011a3d740" } ], "title": "usb: gadget: Fix use-after-free bug by not setting udc-\u003edev.driver", "x_generator": { "engine": "bippy-9e1c9544281a" } } }, "cveMetadata": { "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "assignerShortName": "Linux", "cveId": "CVE-2022-48838", "datePublished": "2024-07-16T12:25:09.859Z", "dateReserved": "2024-07-16T11:38:08.907Z", "dateUpdated": "2024-11-04T12:17:34.138Z", "state": "PUBLISHED" }, "dataType": "CVE_RECORD", "dataVersion": "5.1", "meta": { "nvd": "{\"cve\":{\"id\":\"CVE-2022-48838\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2024-07-16T13:15:11.280\",\"lastModified\":\"2024-11-21T07:34:11.053\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nusb: gadget: Fix use-after-free bug by not setting udc-\u003edev.driver\\n\\nThe syzbot fuzzer found a use-after-free bug:\\n\\nBUG: KASAN: use-after-free in dev_uevent+0x712/0x780 drivers/base/core.c:2320\\nRead of size 8 at addr ffff88802b934098 by task udevd/3689\\n\\nCPU: 2 PID: 3689 Comm: udevd Not tainted 5.17.0-rc4-syzkaller-00229-g4f12b742eb2b #0\\nHardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014\\nCall Trace:\\n \u003cTASK\u003e\\n __dump_stack lib/dump_stack.c:88 [inline]\\n dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106\\n print_address_description.constprop.0.cold+0x8d/0x303 mm/kasan/report.c:255\\n __kasan_report mm/kasan/report.c:442 [inline]\\n kasan_report.cold+0x83/0xdf mm/kasan/report.c:459\\n dev_uevent+0x712/0x780 drivers/base/core.c:2320\\n uevent_show+0x1b8/0x380 drivers/base/core.c:2391\\n dev_attr_show+0x4b/0x90 drivers/base/core.c:2094\\n\\nAlthough the bug manifested in the driver core, the real cause was a\\nrace with the gadget core. dev_uevent() does:\\n\\n\\tif (dev-\u003edriver)\\n\\t\\tadd_uevent_var(env, \\\"DRIVER=%s\\\", dev-\u003edriver-\u003ename);\\n\\nand between the test and the dereference of dev-\u003edriver, the gadget\\ncore sets dev-\u003edriver to NULL.\\n\\nThe race wouldn\u0027t occur if the gadget core registered its devices on\\na real bus, using the standard synchronization techniques of the\\ndriver core. However, it\u0027s not necessary to make such a large change\\nin order to fix this bug; all we need to do is make sure that\\nudc-\u003edev.driver is always NULL.\\n\\nIn fact, there is no reason for udc-\u003edev.driver ever to be set to\\nanything, let alone to the value it currently gets: the address of the\\ngadget\u0027s driver. After all, a gadget driver only knows how to manage\\na gadget, not how to manage a UDC.\\n\\nThis patch simply removes the statements in the gadget core that touch\\nudc-\u003edev.driver.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: usb: gadget: corrige el error de use-after-free al no configurar udc-\u0026gt;dev.driver El syzbot fuzzer encontr\u00f3 un error de use-after-free: ERROR: KASAN: uso- after-free en dev_uevent+0x712/0x780 drivers/base/core.c:2320 Lectura de tama\u00f1o 8 en addr ffff88802b934098 por tarea udevd/3689 CPU: 2 PID: 3689 Comm: udevd Not tainted 5.17.0-rc4-syzkaller-00229 -g4f12b742eb2b #0 Nombre del hardware: PC est\u00e1ndar QEMU (Q35 + ICH9, 2009), BIOS 1.14.0-2 01/04/2014 Seguimiento de llamadas: __dump_stack lib/dump_stack.c:88 [en l\u00ednea] dump_stack_lvl+0xcd/ 0x134 lib/dump_stack.c:106 print_address_description.constprop.0.cold+0x8d/0x303 mm/kasan/report.c:255 __kasan_report mm/kasan/report.c:442 [en l\u00ednea] kasan_report.cold+0x83/0xdf mm/ kasan/report.c:459 dev_uevent+0x712/0x780 drivers/base/core.c:2320 uevent_show+0x1b8/0x380 drivers/base/core.c:2391 dev_attr_show+0x4b/0x90 drivers/base/core.c:2094 Aunque El error se manifest\u00f3 en el n\u00facleo del controlador, la verdadera causa fue una ejecuci\u00f3n con el n\u00facleo del dispositivo. dev_uevent() hace: if (dev-\u0026gt;driver) add_uevent_var(env, \\\"DRIVER=%s\\\", dev-\u0026gt;driver-\u0026gt;name); y entre la prueba y la desreferencia de dev-\u0026gt;driver, el n\u00facleo del gadget establece dev-\u0026gt;driver en NULL. La ejecuci\u00f3n no ocurrir\u00eda si el n\u00facleo del dispositivo registrara sus dispositivos en un autob\u00fas real, utilizando las t\u00e9cnicas de sincronizaci\u00f3n est\u00e1ndar del n\u00facleo del conductor. Sin embargo, no es necesario realizar un cambio tan grande para corregir este error; todo lo que tenemos que hacer es asegurarnos de que udc-\u0026gt;dev.driver sea siempre NULL. De hecho, no hay ninguna raz\u00f3n para que udc-\u0026gt;dev.driver se establezca en alg\u00fan momento, y mucho menos en el valor que obtiene actualmente: la direcci\u00f3n del controlador del dispositivo. Despu\u00e9s de todo, un controlador de dispositivo s\u00f3lo sabe c\u00f3mo administrar un dispositivo, no c\u00f3mo administrar un UDC. Este parche simplemente elimina las declaraciones en el n\u00facleo del gadget que tocan udc-\u0026gt;dev.driver.\"}],\"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:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"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\":\"3.1\",\"versionEndExcluding\":\"4.9.308\",\"matchCriteriaId\":\"6B0F08D1-9BA3-4198-9925-28CA83858D6E\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"4.10\",\"versionEndExcluding\":\"4.14.273\",\"matchCriteriaId\":\"A1E9CE4F-B0EA-4F88-9562-4F113E598085\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"4.15\",\"versionEndExcluding\":\"4.19.236\",\"matchCriteriaId\":\"09979837-E01F-4E28-B943-9F680CA3D278\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"4.20\",\"versionEndExcluding\":\"5.4.187\",\"matchCriteriaId\":\"D9FFB805-4ED2-4FAE-9EF4-8AB4BC9D8F5C\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.5\",\"versionEndExcluding\":\"5.10.108\",\"matchCriteriaId\":\"24925527-AC4A-4594-8D6C-3B34D31862C5\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.11\",\"versionEndExcluding\":\"5.15.31\",\"matchCriteriaId\":\"F25C317E-A673-47D1-844E-171C9BFDF352\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"5.16\",\"versionEndExcluding\":\"5.16.17\",\"matchCriteriaId\":\"DC9A634D-C617-4F8C-ADEF-AF94CE69D687\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/00bdd9bf1ac6d401ad926d3d8df41b9f1399f646\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/16b1941eac2bd499f065a6739a40ce0011a3d740\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/2015c23610cd0efadaeca4d3a8d1dae9a45aa35a\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/2282a6eb6d4e118e294e43dcc421e0e0fe4040b5\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/27d64436984fb8835a8b7e95993193cc478b162e\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/4325124dde6726267813c736fee61226f1d38f0b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/609a7119bffe3ddd7c93f2fa65be8917e02a0b7e\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/e2d3a7009e505e120805f449c832942660f3f7f3\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/00bdd9bf1ac6d401ad926d3d8df41b9f1399f646\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/16b1941eac2bd499f065a6739a40ce0011a3d740\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/2015c23610cd0efadaeca4d3a8d1dae9a45aa35a\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/2282a6eb6d4e118e294e43dcc421e0e0fe4040b5\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/27d64436984fb8835a8b7e95993193cc478b162e\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/4325124dde6726267813c736fee61226f1d38f0b\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/609a7119bffe3ddd7c93f2fa65be8917e02a0b7e\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/e2d3a7009e505e120805f449c832942660f3f7f3\",\"source\":\"af854a3a-2127-422b-91ae-364da2661108\",\"tags\":[\"Patch\"]}]}}" } }
Loading…
Loading…
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.