CVE-2022-50466

Summary

In the Linux kernel, the following vulnerability has been resolved:

fs/binfmt_elf: Fix memory leak in load_elf_binary()

There is a memory leak reported by kmemleak:

unreferenced object 0xffff88817104ef80 (size 224): comm "xfs_admin", pid 47165, jiffies 4298708825 (age 1333.476s) hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ……………. 60 a8 b3 00 81 88 ff ff a8 10 5a 00 81 88 ff ff `………Z….. backtrace: [<ffffffff819171e1>] __alloc_file+0x21/0x250 [<ffffffff81918061>] alloc_empty_file+0x41/0xf0 [<ffffffff81948cda>] path_openat+0xea/0x3d30 [<ffffffff8194ec89>] do_filp_open+0x1b9/0x290 [<ffffffff8192660e>] do_open_execat+0xce/0x5b0 [<ffffffff81926b17>] open_exec+0x27/0x50 [<ffffffff81a69250>] load_elf_binary+0x510/0x3ed0 [<ffffffff81927759>] bprm_execve+0x599/0x1240 [<ffffffff8192a997>] do_execveat_common.isra.0+0x4c7/0x680 [<ffffffff8192b078>] __x64_sys_execve+0x88/0xb0 [<ffffffff83bbf0a5>] do_syscall_64+0x35/0x80

If "interp_elf_ex" fails to allocate memory in load_elf_binary(), the program will take the "out_free_ph" error handing path, resulting in "interpreter" file resource is not released.

Fix it by adding an error handing path "out_free_file", which will release the file resource when "interp_elf_ex" failed to allocate memory.

Affected Software

VendorProductVersion RangeStatus
LinuxLinux0693ffebcfe5ac7b31f63ad54587007f7d96fb7b < 706215300411d48db6b51a5832b872632a84bbc1affected
LinuxLinux0693ffebcfe5ac7b31f63ad54587007f7d96fb7b < 265b6fb780f57d10449a40e94219b28fa52479ccaffected
LinuxLinux0693ffebcfe5ac7b31f63ad54587007f7d96fb7b < acd9b4914f1c5928c7ae8ebc623d6291eb1a573aaffected
LinuxLinux0693ffebcfe5ac7b31f63ad54587007f7d96fb7b < 594d2a14f2168c09b13b114c3d457aa939403e52affected
LinuxLinux5.7affected
LinuxLinux0 < 5.7unaffected
LinuxLinux5.10.153 <= 5.10.*unaffected
LinuxLinux5.15.77 <= 5.15.*unaffected
LinuxLinux6.0.7 <= 6.0.*unaffected
LinuxLinux6.1 <= *unaffected

Weaknesses

References