Description
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 products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
683703a26e4677db437a1480682851e27c7a154f to < caf09c09e0f323015ab6777ed1bad5aa10688631affected683703a26e4677db437a1480682851e27c7a154f to < 56b12f0cd476e4d90a0e2663a80102b388ebf78caffected683703a26e4677db437a1480682851e27c7a154f to < 88d640efd655b10f9fa4e381caf777da1f17c2a6affected683703a26e4677db437a1480682851e27c7a154f to < d54a044136b129822715e8798899af540ec7a9e9affected683703a26e4677db437a1480682851e27c7a154f to < 8a04047c6dbff2f49a561b1ff53b043f4807e855affected683703a26e4677db437a1480682851e27c7a154f to < 530ae0a1458078c7a81fbffd9ff17d42129364d9affected683703a26e4677db437a1480682851e27c7a154f to < 03b672eba4937ff18337049824a114012d57f202affected683703a26e4677db437a1480682851e27c7a154f to < 439f392084f8f7f59ab9d47a9579185accefe1d8affected
Linux Linux
Default version status: affected
2.6.31affected0 to < 2.6.31unaffected5.10.271 to ≤ 5.10.*unaffected5.15.222 to ≤ 5.15.*unaffected6.1.189 to ≤ 6.1.*unaffected6.6.158 to ≤ 6.6.*unaffected6.12.112 to ≤ 6.12.*unaffected6.18.54 to ≤ 6.18.*unaffected7.2.8 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
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 ↗