In the Linux kernel, the following vulnerability has been resolved:
ext4: filter out EXT4FCREPLAY from on-disk superblock field s_state
The EXT4FCREPLAY bit in sbi->smountstate is used to indicate that we are in the middle of replay the fast commit journal. This was actually a mistake, since the sbi->smountinfo is initialized from es->sstate. Arguably smountstate is misleadingly named, but the name is historical --- smountstate and sstate dates back to ext2.
What should have been used is the ext4{set,clear,test}mountflag() inline functions, which sets EXT4MF* bits in sbi->smount_flags.
The problem with using EXT4FCREPLAY is that a maliciously corrupted superblock could result in EXT4FCREPLAY getting set in smountstate. This bypasses some sanity checks, and this can trigger a BUG() in ext4escacheextent(). As a easy-to-backport-fix, filter out the EXT4FCREPLAY bit for now. We should eventually transition away from EXT4FCREPLAY to something like EXT4MF_REPLAY.
[
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-0b48bef0",
"digest": {
"function_hash": "129068632470326796533071533260191665141",
"length": 30545.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@55b4dbb29054a05d839562f6d635ce05669b016d",
"signature_type": "Function",
"target": {
"function": "__ext4_fill_super",
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-1164766e",
"digest": {
"function_hash": "129068632470326796533071533260191665141",
"length": 30545.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@af2f1932743fb52ebcb008ad7ac500d9df0aa796",
"signature_type": "Function",
"target": {
"function": "__ext4_fill_super",
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-20615569",
"digest": {
"function_hash": "39575156605062913016759116719539568946",
"length": 6350.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c878bea3c9d724ddfa05a813f30de3d25a0ba83f",
"signature_type": "Function",
"target": {
"function": "__ext4_remount",
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-28282733",
"digest": {
"line_hashes": [
"103087129196120074781398971051630387786",
"256693918772985038915949492047575416866",
"230287399509997419866128189001051840122",
"320700882669317313192827613025803346140",
"129190064389231335058929493407611415788",
"215317676840479377384067826597101013591",
"142180516223170287587452137302291433945",
"49045832508875946639288004231094458482"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@55b4dbb29054a05d839562f6d635ce05669b016d",
"signature_type": "Line",
"target": {
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-520071e0",
"digest": {
"function_hash": "295073298123568992768829087838553206084",
"length": 6754.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b99fd73418350dea360da8311e87a6a7b0e15a4c",
"signature_type": "Function",
"target": {
"function": "ext4_remount",
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-526f87d9",
"digest": {
"function_hash": "39575156605062913016759116719539568946",
"length": 6350.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@55b4dbb29054a05d839562f6d635ce05669b016d",
"signature_type": "Function",
"target": {
"function": "__ext4_remount",
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-649c9cb9",
"digest": {
"line_hashes": [
"103087129196120074781398971051630387786",
"256693918772985038915949492047575416866",
"230287399509997419866128189001051840122",
"320700882669317313192827613025803346140",
"129190064389231335058929493407611415788",
"215317676840479377384067826597101013591",
"142180516223170287587452137302291433945",
"49045832508875946639288004231094458482"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c878bea3c9d724ddfa05a813f30de3d25a0ba83f",
"signature_type": "Line",
"target": {
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-6a83ac93",
"digest": {
"line_hashes": [
"103087129196120074781398971051630387786",
"256693918772985038915949492047575416866",
"230287399509997419866128189001051840122",
"320700882669317313192827613025803346140",
"129190064389231335058929493407611415788",
"215317676840479377384067826597101013591",
"142180516223170287587452137302291433945",
"49045832508875946639288004231094458482"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@af2f1932743fb52ebcb008ad7ac500d9df0aa796",
"signature_type": "Line",
"target": {
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-6c3c7aa3",
"digest": {
"function_hash": "132609336233617559129886893457612630069",
"length": 31339.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cc5b09cb6dacd4b32640537929ab4ee8fb2b9e04",
"signature_type": "Function",
"target": {
"function": "ext4_fill_super",
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-6f8c5079",
"digest": {
"function_hash": "258746279548665955369858238946910671657",
"length": 31764.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b99fd73418350dea360da8311e87a6a7b0e15a4c",
"signature_type": "Function",
"target": {
"function": "ext4_fill_super",
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-77fe7fef",
"digest": {
"function_hash": "302219015839291609961880109132719998360",
"length": 6591.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cc5b09cb6dacd4b32640537929ab4ee8fb2b9e04",
"signature_type": "Function",
"target": {
"function": "ext4_remount",
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-8236ef13",
"digest": {
"line_hashes": [
"103087129196120074781398971051630387786",
"256693918772985038915949492047575416866",
"230287399509997419866128189001051840122",
"320700882669317313192827613025803346140",
"129190064389231335058929493407611415788",
"215317676840479377384067826597101013591",
"142180516223170287587452137302291433945",
"49045832508875946639288004231094458482"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@cc5b09cb6dacd4b32640537929ab4ee8fb2b9e04",
"signature_type": "Line",
"target": {
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-9ff5de2b",
"digest": {
"line_hashes": [
"103087129196120074781398971051630387786",
"256693918772985038915949492047575416866",
"230287399509997419866128189001051840122",
"320700882669317313192827613025803346140",
"129190064389231335058929493407611415788",
"215317676840479377384067826597101013591",
"142180516223170287587452137302291433945",
"49045832508875946639288004231094458482"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b99fd73418350dea360da8311e87a6a7b0e15a4c",
"signature_type": "Line",
"target": {
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-b26e99d4",
"digest": {
"function_hash": "129068632470326796533071533260191665141",
"length": 30545.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c878bea3c9d724ddfa05a813f30de3d25a0ba83f",
"signature_type": "Function",
"target": {
"function": "__ext4_fill_super",
"file": "fs/ext4/super.c"
}
},
{
"signature_version": "v1",
"deprecated": false,
"id": "CVE-2022-49348-f4a4d4fc",
"digest": {
"function_hash": "39575156605062913016759116719539568946",
"length": 6350.0
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@af2f1932743fb52ebcb008ad7ac500d9df0aa796",
"signature_type": "Function",
"target": {
"function": "__ext4_remount",
"file": "fs/ext4/super.c"
}
}
]