Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: drop_monitor: fix out-of-bounds write in reset_per_cpu_data() In reset_per_cpu_data(), al is computed as: al = sizeof(struct net_dm_alert_msg); al += dm_hit_limit * sizeof(struct net_dm_drop_point); al += sizeof(struct nlattr); skb = genlmsg_new(al, GFP_KERNEL); ... nla = nla_reserve(skb, NLA_UNSPEC, sizeof(struct net_dm_alert_msg)); ... msg = nla_data(nla); memset(msg, 0, al); Because al includes sizeof(struct nlattr) (the 4-byte attribute header), genlmsg_new() allocates al bytes of tailroom starting at nla. However, msg points to nla_data(nla), which is located sizeof(struct nlattr) bytes past nla. Calling memset(msg, 0, al) therefore writes al bytes starting from msg, exceeding the allocated buffer by sizeof(struct nlattr) (4 bytes) and corrupting skb_shared_info. Fix this by letting al represent only the payload length, allocating the skb with genlmsg_new(nla_total_size(al), GFP_KERNEL), and zeroing al bytes from msg.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected 683703a26e4677db437a1480682851e27c7a154f before caf09c09e0f323015ab6777ed1bad5aa10688631; affected 683703a26e4677db437a1480682851e27c7a154f before 56b12f0cd476e4d90a0e2663a80102b388ebf78c; affected 683703a26e4677db437a1480682851e27c7a154f before 88d640efd655b10f9fa4e381caf777da1f17c2a6; affected 683703a26e4677db437a1480682851e27c7a154f before d54a044136b129822715e8798899af540ec7a9e9; affected 683703a26e4677db437a1480682851e27c7a154f before 8a04047c6dbff2f49a561b1ff53b043f4807e855; affected 683703a26e4677db437a1480682851e27c7a154f before 530ae0a1458078c7a81fbffd9ff17d42129364d9; affected 683703a26e4677db437a1480682851e27c7a154f before 03b672eba4937ff18337049824a114012d57f202; affected 683703a26e4677db437a1480682851e27c7a154f before 439f392084f8f7f59ab9d47a9579185accefe1d8 |
| Linux / Linux | affected 2.6.31; unaffected 0 before 2.6.31; unaffected 5.10.271 through 5.10.*; unaffected 5.15.222 through 5.15.*; unaffected 6.1.189 through 6.1.*; unaffected 6.6.158 through 6.6.*; unaffected 6.12.112 through 6.12.*; unaffected 6.18.54 through 6.18.*; unaffected 7.2.8 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/caf09c09e0f323015ab6777ed1bad5aa10688631
- https://git.kernel.org/stable/c/56b12f0cd476e4d90a0e2663a80102b388ebf78c
- https://git.kernel.org/stable/c/88d640efd655b10f9fa4e381caf777da1f17c2a6
- https://git.kernel.org/stable/c/d54a044136b129822715e8798899af540ec7a9e9
- https://git.kernel.org/stable/c/8a04047c6dbff2f49a561b1ff53b043f4807e855
- https://git.kernel.org/stable/c/530ae0a1458078c7a81fbffd9ff17d42129364d9
- https://git.kernel.org/stable/c/03b672eba4937ff18337049824a114012d57f202
- https://git.kernel.org/stable/c/439f392084f8f7f59ab9d47a9579185accefe1d8