UBUNTU-CVE-2022-49390
In the Linux kernel, the following vulnerability has been resolved: macsec: fix UAF bug for real_dev Create a new macsec device but not get reference to real_dev. That can not ensure that real_dev is freed after macsec. That will trigger the UAF bug for real_dev as following: ================================================================== BUG: KASAN: use-after-free in macsec_get_iflink+0x5f/0x70 drivers/net/macsec.c:3662 Call Trace: ... macsec_get_iflink+0x5f/0x70 drivers/net/macsec.c:3662 dev_get_iflink+0x73/0xe0 net/core/dev.c:637 default_operstate net/core/link_watch.c:42 [inline] rfc2863_policy+0x233/0x2d0 net/core/link_watch.c:54 linkwatch_do_dev+0x2a/0x150 net/core/link_watch.c:161 Allocated by task 22209: ... alloc_netdev_mqs+0x98/0x1100 net/core/dev.c:10549 rtnl_create_link+0x9d7/0xc00 net/core/rtnetlink.c:3235 veth_newlink+0x20e/0xa90 drivers/net/veth.c:1748 Freed by task 8: ... kfree+0xd6/0x4d0 mm/slub.c:4552 kvfree+0x42/0x50 mm/util.c:615 device_release+0x9f/0x240 drivers/base/core.c:2229 kobject_cleanup lib/kobject.c:673 [inline] kobject_release lib/kobject.c:704 [inline] kref_put include/linux/kref.h:65 [inline] kobject_put+0x1c8/0x540 lib/kobject.c:721 netdev_run_todo+0x72e/0x10b0 net/core/dev.c:10327 After commit faab39f63c1f ("net: allow out-of-order netdev unregistration") and commit e5f80fcf869a ("ipv6: give an IPv6 dev to blackhole_netdev"), we can add dev_hold_track() in macsec_dev_init() and dev_put_track() in macsec_free_netdev() to fix the problem.
02 / AFFECTED SOFTWARE
Affected packages
108 explicit affected versions
76 explicit affected versions
50 explicit affected versions
6 explicit affected versions
12 explicit affected versions
19 explicit affected versions
6 explicit affected versions
86 explicit affected versions
71 explicit affected versions
71 explicit affected versions
83 explicit affected versions
77 explicit affected versions
66 explicit affected versions
10 explicit affected versions
78 explicit affected versions
7 explicit affected versions
75 explicit affected versions
13 explicit affected versions
77 explicit affected versions
35 explicit affected versions
38 explicit affected versions
36 explicit affected versions
18 explicit affected versions
33 explicit affected versions
109 explicit affected versions
64 explicit affected versions
113 explicit affected versions
13 explicit affected versions
4 explicit affected versions
23 explicit affected versions
116 explicit affected versions
1 explicit affected versions
21 explicit affected versions
16 explicit affected versions
10 explicit affected versions
67 explicit affected versions
7 explicit affected versions
12 explicit affected versions
12 explicit affected versions
14 explicit affected versions
1 explicit affected versions
7 explicit affected versions
97 explicit affected versions
12 explicit affected versions
99 explicit affected versions
12 explicit affected versions
32 explicit affected versions
10 explicit affected versions
37 explicit affected versions
13 explicit affected versions
10 explicit affected versions
53 explicit affected versions
1 explicit affected versions
26 explicit affected versions
13 explicit affected versions
25 explicit affected versions
1 explicit affected versions
29 explicit affected versions
103 explicit affected versions
13 explicit affected versions
83 explicit affected versions
94 explicit affected versions
78 explicit affected versions
41 explicit affected versions
33 explicit affected versions
23 explicit affected versions
47 explicit affected versions
10 explicit affected versions
107 explicit affected versions
11 explicit affected versions
12 explicit affected versions
130 explicit affected versions
7 explicit affected versions
12 explicit affected versions
63 explicit affected versions
122 explicit affected versions
79 explicit affected versions
144 explicit affected versions
10 explicit affected versions
26 explicit affected versions
1 explicit affected versions
55 explicit affected versions
13 explicit affected versions
130 explicit affected versions
71 explicit affected versions
16 explicit affected versions
77 explicit affected versions
3 explicit affected versions
124 explicit affected versions
84 explicit affected versions
1 explicit affected versions
2 explicit affected versions
51 explicit affected versions
83 explicit affected versions
12 explicit affected versions
64 explicit affected versions
66 explicit affected versions
27 explicit affected versions
52 explicit affected versions
113 explicit affected versions
1 explicit affected versions
88 explicit affected versions
8 explicit affected versions
43 explicit affected versions
5 explicit affected versions
8 explicit affected versions
1 explicit affected versions
10 explicit affected versions
13 explicit affected versions
102 explicit affected versions
13 explicit affected versions
64 explicit affected versions
7 explicit affected versions
85 explicit affected versions
10 explicit affected versions
12 explicit affected versions
26 explicit affected versions
101 explicit affected versions
74 explicit affected versions
48 explicit affected versions
44 explicit affected versions
16 explicit affected versions
3 explicit affected versions
13 explicit affected versions
26 explicit affected versions
45 explicit affected versions
37 explicit affected versions
14 explicit affected versions
38 explicit affected versions
9 explicit affected versions
11 explicit affected versions
79 explicit affected versions
7 explicit affected versions
134 explicit affected versions
113 explicit affected versions
4 explicit affected versions
68 explicit affected versions
1 explicit affected versions
1 explicit affected versions
77 explicit affected versions
104 explicit affected versions
68 explicit affected versions
67 explicit affected versions
13 explicit affected versions
43 explicit affected versions
69 explicit affected versions
111 explicit affected versions
158 explicit affected versions
10 explicit affected versions
8 explicit affected versions
81 explicit affected versions
14 explicit affected versions
4 explicit affected versions
78 explicit affected versions
11 explicit affected versions
1 explicit affected versions
60 explicit affected versions
115 explicit affected versions
67 explicit affected versions
11 explicit affected versions
45 explicit affected versions
03 / CONNECTIONS
Connected vulnerabilities
04 / EVIDENCE
Source records
In the Linux kernel, the following vulnerability has been resolved: macsec: fix UAF bug for real_dev Create a new macsec device but not get reference to real_dev. That can not ensure that real_dev is freed after macsec. That will trigger the UAF bug for real_dev as following: ================================================================== BUG: KASAN: use-after-free in macsec_get_iflink+0x5f/0x70 drivers/net/macsec.c:3662 Call Trace: ... macsec_get_iflink+0x5f/0x70 drivers/net/macsec.c:3662 dev_get_iflink+0x73/0xe0 net/core/dev.c:637 default_operstate net/core/link_watch.c:42 [inline] rfc2863_policy+0x233/0x2d0 net/core/link_watch.c:54 linkwatch_do_dev+0x2a/0x150 net/core/link_watch.c:161 Allocated by task 22209: ... alloc_netdev_mqs+0x98/0x1100 net/core/dev.c:10549 rtnl_create_link+0x9d7/0xc00 net/core/rtnetlink.c:3235 veth_newlink+0x20e/0xa90 drivers/net/veth.c:1748 Freed by task 8: ... kfree+0xd6/0x4d0 mm/slub.c:4552 kvfree+0x42/0x50 mm/util.c:615 device_release+0x9f/0x240 drivers/base/core.c:2229 kobject_cleanup lib/kobject.c:673 [inline] kobject_release lib/kobject.c:704 [inline] kref_put include/linux/kref.h:65 [inline] kobject_put+0x1c8/0x540 lib/kobject.c:721 netdev_run_todo+0x72e/0x10b0 net/core/dev.c:10327 After commit faab39f63c1f ("net: allow out-of-order netdev unregistration") and commit e5f80fcf869a ("ipv6: give an IPv6 dev to blackhole_netdev"), we can add dev_hold_track() in macsec_dev_init() and dev_put_track() in macsec_free_netdev() to fix the problem.
05 / REFERENCES
Further evidence
- https://git.kernel.org/linus/196a888ca6571deb344468e1d7138e3273206335
- https://git.kernel.org/stable/c/196a888ca6571deb344468e1d7138e3273206335
- https://git.kernel.org/stable/c/78933cbc143b82d02330e00900d2fd08f2682f4e
- https://git.kernel.org/stable/c/d130282179aa6051449ac8f8df1115769998a665
- https://ubuntu.com/security/CVE-2022-49390
- https://ubuntu.com/security/notices/USN-7907-1
- https://ubuntu.com/security/notices/USN-7907-2
- https://ubuntu.com/security/notices/USN-7907-3
- https://ubuntu.com/security/notices/USN-7907-4
- https://ubuntu.com/security/notices/USN-7907-5
- https://ubuntu.com/security/notices/USN-7922-1
- https://ubuntu.com/security/notices/USN-7922-2
- https://ubuntu.com/security/notices/USN-7922-3
- https://ubuntu.com/security/notices/USN-7922-4
- https://ubuntu.com/security/notices/USN-7922-5
- https://ubuntu.com/security/notices/USN-7928-1
- https://ubuntu.com/security/notices/USN-7928-2
- https://ubuntu.com/security/notices/USN-7928-3
- https://ubuntu.com/security/notices/USN-7928-4
- https://ubuntu.com/security/notices/USN-7928-5
- https://ubuntu.com/security/notices/USN-7937-1
- https://ubuntu.com/security/notices/USN-7938-1
- https://ubuntu.com/security/notices/USN-7939-1
- https://ubuntu.com/security/notices/USN-7939-2
- https://www.cve.org/CVERecord?id=CVE-2022-49390