Kernel libbpf Buffer Overwrite via Missing OPTS_SET in bpf_xdp_query
CVE-2024-27050 Published on May 1, 2024
libbpf: Use OPTS_SET() macro in bpf_xdp_query()
In the Linux kernel, the following vulnerability has been resolved:
libbpf: Use OPTS_SET() macro in bpf_xdp_query()
When the feature_flags and xdp_zc_max_segs fields were added to the libbpf
bpf_xdp_query_opts, the code writing them did not use the OPTS_SET() macro.
This causes libbpf to write to those fields unconditionally, which means
that programs compiled against an older version of libbpf (with a smaller
size of the bpf_xdp_query_opts struct) will have its stack corrupted by
libbpf writing out of bounds.
The patch adding the feature_flags field has an early bail out if the
feature_flags field is not part of the opts struct (via the OPTS_HAS)
macro, but the patch adding xdp_zc_max_segs does not. For consistency, this
fix just changes the assignments to both fields to use the OPTS_SET()
macro.
Vulnerability Analysis
CVE-2024-27050 is exploitable with local system access, and requires small amount of user privileges. This vulnerability is considered to have a low attack complexity. The potential impact of an exploit of this vulnerability is considered to have no impact on confidentiality and integrity, and a high impact on availability.
Weakness Type
What is a Memory Corruption Vulnerability?
The software writes data past the end, or before the beginning, of the intended buffer. Typically, this can result in corruption of data, a crash, or code execution. The software may modify an index or perform pointer arithmetic that references a memory location that is outside of the boundaries of the buffer. A subsequent write operation then produces undefined or unexpected results.
CVE-2024-27050 has been classified to as a Memory Corruption vulnerability or weakness.
Products Associated with CVE-2024-27050
You can be notified by email with stack.watch whenever vulnerabilities like CVE-2024-27050 are published in these products:
Affected Versions
Linux:- Version 13ce2daa259a3bfbc9a5aeeee8b9a87058703731 and below fa5bef5e80c6a3321b2b1a7070436f3bc5daf07c is affected.
- Version 13ce2daa259a3bfbc9a5aeeee8b9a87058703731 and below 682ddd62abd4bdcee7584246903e7a2df005fe0d is affected.
- Version 13ce2daa259a3bfbc9a5aeeee8b9a87058703731 and below cd3be9843247edb8fc6fcd8d8237cbce2bc19f5e is affected.
- Version 13ce2daa259a3bfbc9a5aeeee8b9a87058703731 and below 92a871ab9fa59a74d013bc04f321026a057618e7 is affected.
- Version 6.6 is affected.
- Before 6.6 is unaffected.
- Version 6.6.23, <= 6.6.* is unaffected.
- Version 6.7.11, <= 6.7.* is unaffected.
- Version 6.8.2, <= 6.8.* is unaffected.
- Version 6.9, <= * is unaffected.
- Version 6.8.2 is unaffected.
- Version 6.7.11 is unaffected.
- Version 6.6.23 is unaffected.
Exploit Probability
EPSS (Exploit Prediction Scoring System) scores estimate the probability that a vulnerability will be exploited in the wild within the next 30 days. The percentile shows you how this score compares to all other vulnerabilities.