CVE-2025-38172 (GCVE-0-2025-38172)
Vulnerability from cvelistv5
Published
2025-07-03 08:36
Modified
2025-07-28 04:14
Severity ?
VLAI Severity ?
EPSS score ?
Summary
In the Linux kernel, the following vulnerability has been resolved:
erofs: avoid using multiple devices with different type
For multiple devices, both primary and extra devices should be the
same type. `erofs_init_device` has already guaranteed that if the
primary is a file-backed device, extra devices should also be
regular files.
However, if the primary is a block device while the extra device
is a file-backed device, `erofs_init_device` will get an ENOTBLK,
which is not treated as an error in `erofs_fc_get_tree`, and that
leads to an UAF:
erofs_fc_get_tree
get_tree_bdev_flags(erofs_fc_fill_super)
erofs_read_superblock
erofs_init_device // sbi->dif0 is not inited yet,
// return -ENOTBLK
deactivate_locked_super
free(sbi)
if (err is -ENOTBLK)
sbi->dif0.file = filp_open() // sbi UAF
So if -ENOTBLK is hitted in `erofs_init_device`, it means the
primary device must be a block device, and the extra device
is not a block device. The error can be converted to -EINVAL.
References
Impacted products
{ "containers": { "cna": { "affected": [ { "defaultStatus": "unaffected", "product": "Linux", "programFiles": [ "fs/erofs/super.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "lessThan": "65115472f741ca000d7ea4a5922214f93cd1516e", "status": "affected", "version": "fb176750266a3d7f42ebdcf28e8ba40350b27847", "versionType": "git" }, { "lessThan": "cd04beb9ce2773a16057248bb4fa424068ae3807", "status": "affected", "version": "fb176750266a3d7f42ebdcf28e8ba40350b27847", "versionType": "git" }, { "lessThan": "9748f2f54f66743ac77275c34886a9f890e18409", "status": "affected", "version": "fb176750266a3d7f42ebdcf28e8ba40350b27847", "versionType": "git" } ] }, { "defaultStatus": "affected", "product": "Linux", "programFiles": [ "fs/erofs/super.c" ], "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "vendor": "Linux", "versions": [ { "status": "affected", "version": "6.12" }, { "lessThan": "6.12", "status": "unaffected", "version": "0", "versionType": "semver" }, { "lessThanOrEqual": "6.12.*", "status": "unaffected", "version": "6.12.34", "versionType": "semver" }, { "lessThanOrEqual": "6.15.*", "status": "unaffected", "version": "6.15.3", "versionType": "semver" }, { "lessThanOrEqual": "*", "status": "unaffected", "version": "6.16", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "cpeMatch": [ { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.12.34", "versionStartIncluding": "6.12", "vulnerable": true }, { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.15.3", "versionStartIncluding": "6.12", "vulnerable": true }, { "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionEndExcluding": "6.16", "versionStartIncluding": "6.12", "vulnerable": true } ], "negate": false, "operator": "OR" } ] } ], "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nerofs: avoid using multiple devices with different type\n\nFor multiple devices, both primary and extra devices should be the\nsame type. `erofs_init_device` has already guaranteed that if the\nprimary is a file-backed device, extra devices should also be\nregular files.\n\nHowever, if the primary is a block device while the extra device\nis a file-backed device, `erofs_init_device` will get an ENOTBLK,\nwhich is not treated as an error in `erofs_fc_get_tree`, and that\nleads to an UAF:\n\n erofs_fc_get_tree\n get_tree_bdev_flags(erofs_fc_fill_super)\n erofs_read_superblock\n erofs_init_device // sbi-\u003edif0 is not inited yet,\n // return -ENOTBLK\n deactivate_locked_super\n free(sbi)\n if (err is -ENOTBLK)\n sbi-\u003edif0.file = filp_open() // sbi UAF\n\nSo if -ENOTBLK is hitted in `erofs_init_device`, it means the\nprimary device must be a block device, and the extra device\nis not a block device. The error can be converted to -EINVAL." } ], "providerMetadata": { "dateUpdated": "2025-07-28T04:14:13.860Z", "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux" }, "references": [ { "url": "https://git.kernel.org/stable/c/65115472f741ca000d7ea4a5922214f93cd1516e" }, { "url": "https://git.kernel.org/stable/c/cd04beb9ce2773a16057248bb4fa424068ae3807" }, { "url": "https://git.kernel.org/stable/c/9748f2f54f66743ac77275c34886a9f890e18409" } ], "title": "erofs: avoid using multiple devices with different type", "x_generator": { "engine": "bippy-1.2.0" } } }, "cveMetadata": { "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "assignerShortName": "Linux", "cveId": "CVE-2025-38172", "datePublished": "2025-07-03T08:36:10.334Z", "dateReserved": "2025-04-16T04:51:23.991Z", "dateUpdated": "2025-07-28T04:14:13.860Z", "state": "PUBLISHED" }, "dataType": "CVE_RECORD", "dataVersion": "5.1", "vulnerability-lookup:meta": { "nvd": "{\"cve\":{\"id\":\"CVE-2025-38172\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-07-03T09:15:32.910\",\"lastModified\":\"2025-07-03T15:13:53.147\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nerofs: avoid using multiple devices with different type\\n\\nFor multiple devices, both primary and extra devices should be the\\nsame type. `erofs_init_device` has already guaranteed that if the\\nprimary is a file-backed device, extra devices should also be\\nregular files.\\n\\nHowever, if the primary is a block device while the extra device\\nis a file-backed device, `erofs_init_device` will get an ENOTBLK,\\nwhich is not treated as an error in `erofs_fc_get_tree`, and that\\nleads to an UAF:\\n\\n erofs_fc_get_tree\\n get_tree_bdev_flags(erofs_fc_fill_super)\\n erofs_read_superblock\\n erofs_init_device // sbi-\u003edif0 is not inited yet,\\n // return -ENOTBLK\\n deactivate_locked_super\\n free(sbi)\\n if (err is -ENOTBLK)\\n sbi-\u003edif0.file = filp_open() // sbi UAF\\n\\nSo if -ENOTBLK is hitted in `erofs_init_device`, it means the\\nprimary device must be a block device, and the extra device\\nis not a block device. The error can be converted to -EINVAL.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: erofs: evitar el uso de m\u00faltiples dispositivos con diferentes tipos Para m\u00faltiples dispositivos, tanto los dispositivos principales como los adicionales deben ser del mismo tipo. `erofs_init_device` ya ha garantizado que si el principal es un dispositivo respaldado por archivos, los dispositivos adicionales tambi\u00e9n deben ser archivos normales. Sin embargo, si el dispositivo principal es un dispositivo de bloque mientras que el dispositivo adicional es un dispositivo respaldado por archivo, `erofs_init_device` obtendr\u00e1 un ENOTBLK, que no se trata como un error en `erofs_fc_get_tree`, y eso lleva a un UAF: erofs_fc_get_tree get_tree_bdev_flags(erofs_fc_fill_super) erofs_read_superblock erofs_init_device // sbi-\u0026gt;dif0 a\u00fan no se ha inicializado, // return -ENOTBLK deactivate_locked_super free(sbi) if (err is -ENOTBLK) sbi-\u0026gt;dif0.file = filp_open() // sbi UAF Entonces, si se alcanza -ENOTBLK en `erofs_init_device`, significa que el dispositivo principal debe ser un dispositivo de bloque y el dispositivo adicional no es un dispositivo de bloque. El error se puede convertir a -EINVAL.\"}],\"metrics\":{},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/65115472f741ca000d7ea4a5922214f93cd1516e\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/9748f2f54f66743ac77275c34886a9f890e18409\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/cd04beb9ce2773a16057248bb4fa424068ae3807\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}" } }
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.
Loading…
Loading…