Overview
About vulnerability
In the Linux kernel, the following vulnerability has been resolved:
xfrm: validate new SA’s prefixlen using SA family when sel.family is unset
This expands the validation introduced in commit 07bf7908950a (“xfrm: Validate address prefix lengths in the xfrm selector.”)
syzbot created an SA with usersa.sel.family = AF_UNSPEC usersa.sel.prefixlen_s = 128 usersa.family = AF_INET
Because of the AF_UNSPEC selector, verify_newsa_info doesn’t put limits on prefixlen_{s,d}. But then copy_from_user_state sets x->sel.family to usersa.family (AF_INET). Do the same conversion in verify_newsa_info before validating prefixlen_{s,d}, since that’s how prefixlen is going to be used later on.
Details
- Affected product:
- AlmaLinux 9.2 ESU , CentOS 6 ELS , CentOS 7 ELS , CentOS 8.4 ELS , CentOS 8.5 ELS , CentOS Stream 8 ELS , CloudLinux 6 ELS , CloudLinux 7 ELS , Oracle Linux 6 ELS , Oracle Linux 7 ELS , RHEL 7 ELS , Ubuntu 16.04 ELS , Ubuntu 18.04 ELS
- Affected packages:
- kernel-uek @ 5.4.17 (+15 more)
In the Linux kernel, the following vulnerability has been resolved:
xfrm: validate new SA’s prefixlen using SA family when sel.family is unset
This expands the validation introduced in commit 07bf7908950a (“xfrm: Validate address prefix lengths in the xfrm selector.”)
syzbot created an SA with usersa.sel.family = AF_UNSPEC usersa.sel.prefixlen_s = 128 usersa.family = AF_INET
Because of the AF_UNSPEC selector, verify_newsa_info doesn’t put limits on prefixlen_{s,d}. But then copy_from_user_state sets x->sel.family to usersa.family (AF_INET). Do the same conversion in verify_newsa_info before validating prefixlen_{s,d}, since that’s how prefixlen is going to be used later on.