CVE-2022-49802

Summary

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

ftrace: Fix null pointer dereference in ftrace_add_mod()

The @ftrace_mod is allocated by kzalloc(), so both the members {prev,next} of @ftrace_mode->list are NULL, it's not a valid state to call list_del(). If kstrdup() for @ftrace_mod->{func|module} fails, it goes to @out_free tag and calls free_ftrace_mod() to destroy @ftrace_mod, then list_del() will write prev->next and next->prev, where null pointer dereference happens.

BUG: kernel NULL pointer dereference, address: 0000000000000008 Oops: 0002 [#1] PREEMPT SMP NOPTI Call Trace: <TASK> ftrace_mod_callback+0x20d/0x220 ? do_filp_open+0xd9/0x140 ftrace_process_regex.isra.51+0xbf/0x130 ftrace_regex_write.isra.52.part.53+0x6e/0x90 vfs_write+0xee/0x3a0 ? __audit_filter_op+0xb1/0x100 ? auditd_test_task+0x38/0x50 ksys_write+0xa5/0xe0 do_syscall_64+0x3a/0x90 entry_SYSCALL_64_after_hwframe+0x63/0xcd Kernel panic - not syncing: Fatal exception

So call INIT_LIST_HEAD() to initialize the list member to fix this issue.

Affected Software

VendorProductVersion RangeStatus
LinuxLinux673feb9d76ab3eddde7acfd94b206e321cfc90b9 < 665b4c6648bf2b91f69b33817f4321cf4c3cafe9affected
LinuxLinux673feb9d76ab3eddde7acfd94b206e321cfc90b9 < b5bfc61f541d3f092b13dedcfe000d86eb8e133caffected
LinuxLinux673feb9d76ab3eddde7acfd94b206e321cfc90b9 < f715f31559b82e3f75ce047fa476de63d8107584affected
LinuxLinux673feb9d76ab3eddde7acfd94b206e321cfc90b9 < 6a14828caddad0d989495a72af678adf60992704affected
LinuxLinux673feb9d76ab3eddde7acfd94b206e321cfc90b9 < 1bea037a1abb23a6729bef36a2265a4565f5ea77affected
LinuxLinux673feb9d76ab3eddde7acfd94b206e321cfc90b9 < 6e50eb4b1807017f6c2d5089064256ce2de8aef1affected
LinuxLinux673feb9d76ab3eddde7acfd94b206e321cfc90b9 < 19ba6c8af9382c4c05dc6a0a79af3013b9a35cd0affected
LinuxLinux4.13affected
LinuxLinux0 < 4.13unaffected
LinuxLinux4.14.300 <= 4.14.*unaffected
LinuxLinux4.19.267 <= 4.19.*unaffected
LinuxLinux5.4.225 <= 5.4.*unaffected
LinuxLinux5.10.156 <= 5.10.*unaffected
LinuxLinux5.15.80 <= 5.15.*unaffected
LinuxLinux6.0.10 <= 6.0.*unaffected
LinuxLinux6.1 <= *unaffected

Weaknesses

References