Files
vuln-cve/data/2022/49xxx/CVE-2022-49170.json
T

201 lines
12 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"cveMetadata": {
"cveId": "CVE-2022-49170",
"assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"state": "PUBLISHED",
"assignerShortName": "Linux",
"dateReserved": "2025-02-26T01:49:39.279Z",
"datePublished": "2025-02-26T01:55:27.562Z",
"dateUpdated": "2026-08-12T23:58:11.094Z"
},
"containers": {
"cna": {
"providerMetadata": {
"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
"shortName": "Linux",
"dateUpdated": "2026-08-12T23:58:11.094Z"
},
"descriptions": [
{
"lang": "en",
"value": "In the Linux kernel, the following vulnerability has been resolved:\n\nf2fs: fix to do sanity check on curseg->alloc_type\n\nAs Wenqing Liu reported in bugzilla:\n\nhttps://bugzilla.kernel.org/show_bug.cgi?id=215657\n\n- Overview\nUBSAN: array-index-out-of-bounds in fs/f2fs/segment.c:3460:2 when mount and operate a corrupted image\n\n- Reproduce\ntested on kernel 5.17-rc4, 5.17-rc6\n\n1. mkdir test_crash\n2. cd test_crash\n3. unzip tmp2.zip\n4. mkdir mnt\n5. ./single_test.sh f2fs 2\n\n- Kernel dump\n[ 46.434454] loop0: detected capacity change from 0 to 131072\n[ 46.529839] F2FS-fs (loop0): Mounted with checkpoint version = 7548c2d9\n[ 46.738319] ================================================================================\n[ 46.738412] UBSAN: array-index-out-of-bounds in fs/f2fs/segment.c:3460:2\n[ 46.738475] index 231 is out of range for type 'unsigned int [2]'\n[ 46.738539] CPU: 2 PID: 939 Comm: umount Not tainted 5.17.0-rc6 #1\n[ 46.738547] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.13.0-1ubuntu1.1 04/01/2014\n[ 46.738551] Call Trace:\n[ 46.738556] <TASK>\n[ 46.738563] dump_stack_lvl+0x47/0x5c\n[ 46.738581] ubsan_epilogue+0x5/0x50\n[ 46.738592] __ubsan_handle_out_of_bounds+0x68/0x80\n[ 46.738604] f2fs_allocate_data_block+0xdff/0xe60 [f2fs]\n[ 46.738819] do_write_page+0xef/0x210 [f2fs]\n[ 46.738934] f2fs_do_write_node_page+0x3f/0x80 [f2fs]\n[ 46.739038] __write_node_page+0x2b7/0x920 [f2fs]\n[ 46.739162] f2fs_sync_node_pages+0x943/0xb00 [f2fs]\n[ 46.739293] f2fs_write_checkpoint+0x7bb/0x1030 [f2fs]\n[ 46.739405] kill_f2fs_super+0x125/0x150 [f2fs]\n[ 46.739507] deactivate_locked_super+0x60/0xc0\n[ 46.739517] deactivate_super+0x70/0xb0\n[ 46.739524] cleanup_mnt+0x11a/0x200\n[ 46.739532] __cleanup_mnt+0x16/0x20\n[ 46.739538] task_work_run+0x67/0xa0\n[ 46.739547] exit_to_user_mode_prepare+0x18c/0x1a0\n[ 46.739559] syscall_exit_to_user_mode+0x26/0x40\n[ 46.739568] do_syscall_64+0x46/0xb0\n[ 46.739584] entry_SYSCALL_64_after_hwframe+0x44/0xae\n\nThe root cause is we missed to do sanity check on curseg->alloc_type,\nresult in out-of-bound accessing on sbi->block_count[] array, fix it."
}
],
"metrics": [
{
"cvssV3_1": {
"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"
},
"scenarios": [
{
"lang": "en",
"value": "AV:L - The bug is reached only through the local f2fs mount/VFS path (mount crafted image → write/sync/umount → f2fs_allocate_data_block → stat_inc_block_count), not via network protocol handlers or packet processing.\nAC:L - A crafted checkpoint with an invalid curseg alloc_type (unsigned char, attacker-chosen) deterministically causes an out-of-bounds increment of sbi->block_count[] once allocation runs; CONFIG_F2FS_STAT_FS defaults to y and no attacker-uncontrollable race is required.\nPR:L - After the malicious f2fs volume is mounted (Android/udisks automount of removable media, or shared workstation), an unprivileged local user can trigger allocation via ordinary writes/sync; CAP_SYS_ADMIN is not required on that path (f2fs is not FS_USERNS_MOUNT, but mount itself is not required once the image is already mounted).\nUI:N - Once the crafted image is present and mounted via automount or delegated mount rights, the attacker drives block allocation themselves through write/sync/umount with no further separate victim action.\nS:U - Corruption and crash remain within the host kernel’s f2fs/sbi memory authority; this is standard local kernel impact, not a VM escape, IOMMU bypass, or other cross-boundary break.\nC:H - Attacker-controlled alloc_type indexes past block_count[2] into adjacent f2fs_sb_info fields (pointers, kobjects, locks), which is out-of-bounds memory corruption leverageable for kernel information disclosure under the overestimate-severity rule.\nI:H - The same OOB is a write primitive (block_count[idx]++), and repeated allocations let the attacker increment a chosen offset many times into critical sbi fields, enabling heap/metadata corruption and control-flow impact.\nA:H - The reported UBSAN out-of-bounds access in f2fs_allocate_data_block on umount/writeback can oops or panic the kernel when the corrupted sbi fields are later used, yielding a full denial of service."
}
]
}
],
"affected": [
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"fs/f2fs/segment.c"
],
"versions": [
{
"version": "351df4b201157351c7d26bf12c3eeb9dbce98854",
"lessThan": "498b7088db71f9707359448cd6800bbb1882f4c3",
"status": "affected",
"versionType": "git"
},
{
"version": "351df4b201157351c7d26bf12c3eeb9dbce98854",
"lessThan": "f68caedf264a95c0b02dfd0d9f92ac2637d5848a",
"status": "affected",
"versionType": "git"
},
{
"version": "351df4b201157351c7d26bf12c3eeb9dbce98854",
"lessThan": "0748a0f7dcb9d9dddc80302d73ebcecef6782ef0",
"status": "affected",
"versionType": "git"
},
{
"version": "351df4b201157351c7d26bf12c3eeb9dbce98854",
"lessThan": "c12765e3f129b144421c80d3383df885f85ee290",
"status": "affected",
"versionType": "git"
},
{
"version": "351df4b201157351c7d26bf12c3eeb9dbce98854",
"lessThan": "f41ee8b91c00770d718be2ff4852a80017ae9ab3",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "affected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"fs/f2fs/segment.c"
],
"versions": [
{
"version": "3.8",
"status": "affected"
},
{
"version": "0",
"lessThan": "3.8",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.10.110",
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.15.33",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.16.19",
"lessThanOrEqual": "5.16.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.17.2",
"lessThanOrEqual": "5.17.*",
"status": "unaffected",
"versionType": "semver"
},
{
"version": "5.18",
"lessThanOrEqual": "*",
"status": "unaffected",
"versionType": "original_commit_for_fix"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"operator": "OR",
"negate": false,
"cpeMatch": [
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "3.8",
"versionEndExcluding": "5.10.110"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "3.8",
"versionEndExcluding": "5.15.33"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "3.8",
"versionEndExcluding": "5.16.19"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "3.8",
"versionEndExcluding": "5.17.2"
},
{
"vulnerable": true,
"criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
"versionStartIncluding": "3.8",
"versionEndExcluding": "5.18"
}
]
}
]
}
],
"references": [
{
"url": "https://git.kernel.org/stable/c/498b7088db71f9707359448cd6800bbb1882f4c3"
},
{
"url": "https://git.kernel.org/stable/c/f68caedf264a95c0b02dfd0d9f92ac2637d5848a"
},
{
"url": "https://git.kernel.org/stable/c/0748a0f7dcb9d9dddc80302d73ebcecef6782ef0"
},
{
"url": "https://git.kernel.org/stable/c/c12765e3f129b144421c80d3383df885f85ee290"
},
{
"url": "https://git.kernel.org/stable/c/f41ee8b91c00770d718be2ff4852a80017ae9ab3"
}
],
"title": "f2fs: fix to do sanity check on curseg->alloc_type",
"x_generator": {
"engine": "bippy-1.2.0"
}
}
}
}