Medium · published November 7, 2024
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.
| Product | Versions | Fixed in |
|---|---|---|
| linux/linux_kernel | ≥ 2.6.12, < 4.19.323 | 4.19.323 |
| linux/linux_kernel | ≥ 4.20, < 5.4.285 | 5.4.285 |
| linux/linux_kernel | ≥ 5.5, < 5.10.229 | 5.10.229 |
| linux/linux_kernel | ≥ 5.11, < 5.15.170 | 5.15.170 |
| linux/linux_kernel | ≥ 5.16, < 6.1.115 | 6.1.115 |
| linux/linux_kernel | ≥ 6.2, < 6.6.59 | 6.6.59 |
| linux/linux_kernel | ≥ 6.7, < 6.11.6 | 6.11.6 |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |
| linux/linux_kernel | all versions | — |