| From bippy-5f407fcff5a0 Mon Sep 17 00:00:00 2001 |
| From: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| To: <linux-cve-announce@vger.kernel.org> |
| Reply-to: <cve@kernel.org>, <linux-kernel@vger.kernel.org> |
| Subject: CVE-2022-49085: drbd: Fix five use after free bugs in get_initial_state |
| |
| Description |
| =========== |
| |
| In the Linux kernel, the following vulnerability has been resolved: |
| |
| drbd: Fix five use after free bugs in get_initial_state |
| |
| In get_initial_state, it calls notify_initial_state_done(skb,..) if |
| cb->args[5]==1. If genlmsg_put() failed in notify_initial_state_done(), |
| the skb will be freed by nlmsg_free(skb). |
| Then get_initial_state will goto out and the freed skb will be used by |
| return value skb->len, which is a uaf bug. |
| |
| What's worse, the same problem goes even further: skb can also be |
| freed in the notify_*_state_change -> notify_*_state calls below. |
| Thus 4 additional uaf bugs happened. |
| |
| My patch lets the problem callee functions: notify_initial_state_done |
| and notify_*_state_change return an error code if errors happen. |
| So that the error codes could be propagated and the uaf bugs can be avoid. |
| |
| v2 reports a compilation warning. This v3 fixed this warning and built |
| successfully in my local environment with no additional warnings. |
| v2: https://lore.kernel.org/patchwork/patch/1435218/ |
| |
| The Linux kernel CVE team has assigned CVE-2022-49085 to this issue. |
| |
| |
| Affected and fixed versions |
| =========================== |
| |
| Issue introduced in 4.5 with commit a29728463b254ce81ecefdf20c1a02e01d9361da and fixed in 4.9.311 with commit 0489700bfeb1e53eb2039c2291c67e71b0b40103 |
| Issue introduced in 4.5 with commit a29728463b254ce81ecefdf20c1a02e01d9361da and fixed in 4.14.276 with commit dcf6be17b5c53b741898d2223b23e66d682de300 |
| Issue introduced in 4.5 with commit a29728463b254ce81ecefdf20c1a02e01d9361da and fixed in 4.19.238 with commit 188fe6b26765edbad4055611c0f788b6870f4024 |
| Issue introduced in 4.5 with commit a29728463b254ce81ecefdf20c1a02e01d9361da and fixed in 5.4.189 with commit b6a4055036eed1f5e239ce3d8b0db1ce38bba447 |
| Issue introduced in 4.5 with commit a29728463b254ce81ecefdf20c1a02e01d9361da and fixed in 5.10.111 with commit 594205b4936771a250f9d141e7e0fff21c3dd2d9 |
| Issue introduced in 4.5 with commit a29728463b254ce81ecefdf20c1a02e01d9361da and fixed in 5.15.34 with commit a972c768723359ec995579902473028fe3cd64b1 |
| Issue introduced in 4.5 with commit a29728463b254ce81ecefdf20c1a02e01d9361da and fixed in 5.16.20 with commit de63e74da2333b4068bb79983e632db730fea97e |
| Issue introduced in 4.5 with commit a29728463b254ce81ecefdf20c1a02e01d9361da and fixed in 5.17.3 with commit 226e993c39405292781bfcf4b039a8db56aab362 |
| Issue introduced in 4.5 with commit a29728463b254ce81ecefdf20c1a02e01d9361da and fixed in 5.18 with commit aadb22ba2f656581b2f733deb3a467c48cc618f6 |
| |
| Please see https://www.kernel.org for a full list of currently supported |
| kernel versions by the kernel community. |
| |
| Unaffected versions might change over time as fixes are backported to |
| older supported kernel versions. The official CVE entry at |
| https://cve.org/CVERecord/?id=CVE-2022-49085 |
| will be updated if fixes are backported, please check that for the most |
| up to date information about this issue. |
| |
| |
| Affected files |
| ============== |
| |
| The file(s) affected by this issue are: |
| drivers/block/drbd/drbd_int.h |
| drivers/block/drbd/drbd_nl.c |
| drivers/block/drbd/drbd_state.c |
| drivers/block/drbd/drbd_state_change.h |
| |
| |
| Mitigation |
| ========== |
| |
| The Linux kernel CVE team recommends that you update to the latest |
| stable kernel version for this, and many other bugfixes. Individual |
| changes are never tested alone, but rather are part of a larger kernel |
| release. Cherry-picking individual commits is not recommended or |
| supported by the Linux kernel community at all. If however, updating to |
| the latest release is impossible, the individual changes to resolve this |
| issue can be found at these commits: |
| https://git.kernel.org/stable/c/0489700bfeb1e53eb2039c2291c67e71b0b40103 |
| https://git.kernel.org/stable/c/dcf6be17b5c53b741898d2223b23e66d682de300 |
| https://git.kernel.org/stable/c/188fe6b26765edbad4055611c0f788b6870f4024 |
| https://git.kernel.org/stable/c/b6a4055036eed1f5e239ce3d8b0db1ce38bba447 |
| https://git.kernel.org/stable/c/594205b4936771a250f9d141e7e0fff21c3dd2d9 |
| https://git.kernel.org/stable/c/a972c768723359ec995579902473028fe3cd64b1 |
| https://git.kernel.org/stable/c/de63e74da2333b4068bb79983e632db730fea97e |
| https://git.kernel.org/stable/c/226e993c39405292781bfcf4b039a8db56aab362 |
| https://git.kernel.org/stable/c/aadb22ba2f656581b2f733deb3a467c48cc618f6 |