In the Linux kernel, the following vulnerability has been resolved:
drm/vmwgfx: Fix stale file descriptors on failed usercopy
A failing usercopy of the fence_rep object will lead to a stale entry in
the file descriptor table as put_unused_fd() won’t release it. This
enables userland to refer to a dangling ‘file’ object through that still
valid file descriptor, leading to all kinds of use-after-free
exploitation scenarios.
Fix this by deferring the call to fd_install() until after the usercopy
has succeeded.
[
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "unaffected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/gpu/drm/vmwgfx/vmwgfx_drv.h",
"drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c",
"drivers/gpu/drm/vmwgfx/vmwgfx_fence.c",
"drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
],
"versions": [
{
"version": "c906965dee22",
"lessThan": "e8d092a62449",
"status": "affected",
"versionType": "git"
},
{
"version": "c906965dee22",
"lessThan": "0008a0c78fc3",
"status": "affected",
"versionType": "git"
},
{
"version": "c906965dee22",
"lessThan": "84b1259fe36a",
"status": "affected",
"versionType": "git"
},
{
"version": "c906965dee22",
"lessThan": "ae2b20f27732",
"status": "affected",
"versionType": "git"
},
{
"version": "c906965dee22",
"lessThan": "6066977961fc",
"status": "affected",
"versionType": "git"
},
{
"version": "c906965dee22",
"lessThan": "1d833b27fb70",
"status": "affected",
"versionType": "git"
},
{
"version": "c906965dee22",
"lessThan": "a0f90c881570",
"status": "affected",
"versionType": "git"
}
]
},
{
"product": "Linux",
"vendor": "Linux",
"defaultStatus": "affected",
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"programFiles": [
"drivers/gpu/drm/vmwgfx/vmwgfx_drv.h",
"drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c",
"drivers/gpu/drm/vmwgfx/vmwgfx_fence.c",
"drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
],
"versions": [
{
"version": "4.14",
"status": "affected"
},
{
"version": "0",
"lessThan": "4.14",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "4.14.264",
"lessThanOrEqual": "4.14.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "4.19.227",
"lessThanOrEqual": "4.19.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.4.175",
"lessThanOrEqual": "5.4.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.10.95",
"lessThanOrEqual": "5.10.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.15.18",
"lessThanOrEqual": "5.15.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.16.4",
"lessThanOrEqual": "5.16.*",
"status": "unaffected",
"versionType": "custom"
},
{
"version": "5.17",
"lessThanOrEqual": "*",
"status": "unaffected",
"versionType": "original_commit_for_fix"
}
]
}
]
git.kernel.org/stable/c/0008a0c78fc33a84e2212a7c04e6b21a36ca6f4d
git.kernel.org/stable/c/1d833b27fb708d6fdf5de9f6b3a8be4bd4321565
git.kernel.org/stable/c/6066977961fc6f437bc064f628cf9b0e4571c56c
git.kernel.org/stable/c/84b1259fe36ae0915f3d6ddcea6377779de48b82
git.kernel.org/stable/c/a0f90c8815706981c483a652a6aefca51a5e191c
git.kernel.org/stable/c/ae2b20f27732fe92055d9e7b350abc5cdf3e2414
git.kernel.org/stable/c/e8d092a62449dcfc73517ca43963d2b8f44d0516