Amazon Linux 2:内核 (ALASKERNEL-5.10-2022-002)

high Nessus 插件 ID 160459

简介

远程 Amazon Linux 2 主机缺少安全更新。

描述

远程主机上安装的内核版本低于 5.10.47-39.130。因此,其会受到 ALAS2KERNEL-5.10-2022-002 公告中提及的多个漏洞影响。

- 巩固 Wi-Fi 保护访问(WPA、WPA2 和 WPA3)和有线等效保密 (WEP) 的 802.11 标准不要求在(重新)连接到网络之后,从内存中清除接收到的碎片。在适当的情况下,当其他设备发送使用 WEP、CCMP 或 GCMP 加密的碎片化帧时,这可能被滥用于注入任意网络数据包和/或泄露用户数据。
(CVE-2020-24586)

- 巩固 Wi-Fi 保护访问(WPA、WPA2 和 WPA3)和有线等效保密 (WEP) 的 802.11 标准不要求以相同密钥加密帧的所有碎片。当另一设备发送碎片化帧且 WEP、CCMP 或 GCMP 加密密钥定期更新时,攻击者会滥用此漏洞来解密选中的碎片。(CVE-2020-24587)

- 巩固 Wi-Fi 保护访问(WPA、WPA2 和 WPA3)和有线等效保密 (WEP) 的 802.11 标准不要求明文 QoS 标头字段中的 A-MSDU 标记经过验证。
对于支持接收非 SSP A-MSDU 帧(强制作为 802.11n 的一部分)的设备,攻击者会滥用此漏洞,以注入任意网络数据包。(CVE-2020-24588)

- 在 NetBSD 内核 7.1 中发现一个问题。即使发送者尚未成功对接入点 (AP) 进行身份验证,该 AP 也会将 EAPOL 帧转发到其他客户端。此漏洞可能会在预期的 Wi-Fi 网络中遭到滥用,从而对连接的客户端发起拒绝服务攻击,并更容易在已连接的客户端中利用其他漏洞。(CVE-2020-26139)

- 在 AWUS036H 的 ALFA Windows 10 驱动程序 6.1316.1209 中发现一个问题。Wi-Fi 实现未验证碎片化 TKIP 帧的消息完整性检查(真实性)。攻击者可能滥用此漏洞,在支持 TKIP 数据机密协议的 WPA 或 WPA2 网络中注入并可能解密数据包。 (CVE-2020-26141)

- 在 Samsung Galaxy S3 i9305 4.4.4 设备中发现一个问题。WEP、WPA、WPA2 和 WPA3 实现接受以明文格式发送其他(或后续)广播碎片,并将其作为未碎片化的全帧处理。攻击者可能会滥用此漏洞,以注入与网络配置无关的任意网络数据包。(CVE-2020-26145)

- 在 Linux 内核 5.8.9 中发现一个问题。WEP、WPA、WPA2 和 WPA3 实现会重组碎片,即使其中某些碎片以明文发送。当其他设备发送碎片化帧且使用了 WEP、CCMP 或 GCMP 数据机密协议时,此漏洞可被滥用于注入数据包和/或泄露选中的碎片。(CVE-2020-26147)

- 5.8.13 之前的 Linux 内核未正确强制执行安全启动禁止签名数据库 (aka dbx) 保护机制。这会影响 certs/blacklist.c and certs/system_keyring.c。
(CVE-2020-26541)

- Bluetooth 核心规范 2.1 至 5.2 中的 Bluetooth LE 和 BR/EDR 安全配对可能允许附近的中间人攻击者在配对期间(在密钥身份验证过程中)通过反射发起设备的公钥和身份验证证据来识别所使用的密钥,从而可能允许该攻击者使用配对会话的正确密钥与响应设备完成经过身份验证的配对。此攻击方法一次确定密码值的一位。(CVE-2020-26558)

- BlueZ 中存在访问控制不当,经过身份验证的用户可利用此漏洞,通过邻近访问可能造成信息泄露。(CVE-2021-0129)

- 在 Linux: KVM 中发现一个问题,这是由程序对 KVM 中的 VM_IO|VM_PFNMAP vmas 处理不当造成。此问题可造成用户绕过 RO 检查,并导致页面在 VMM 和来宾机仍可访问时被释放。能够启动和控制 VM 的用户可以利用此问题读取/写入随机内存页面,并可能导致本地特权提升。(CVE-2021-22543)

- 客户端在 Linux xen-netback 中触发释放后使用。恶意或有缺陷的网络 PV 前端可强制 Linux netback 禁用接口,并终止与队列 0 相关的接收内核线程,以响应前端发送畸形数据包。后端遭到破坏时,此类内核线程终止将导致 Linux netback 中发生释放后使用,这是因为与队列 0 相关的内核线程已经退出,因此对过时指针执行 kthread_stop 调用。
(CVE-2021-28691)

- 此漏洞允许本地攻击者提升对 Linux 内核 5.11.15 的受影响装置的特权。要利用此漏洞,攻击者必须首先具备在目标系统上执行低权限代码的能力。处理 eBPF 程序时存在特定缺陷。此问题是在执行用户提供的 eBPF 程序之前,未对其进行正确验证所致。
攻击者可利用此漏洞,在内核的上下文中提升特权和执行任意代码。是 ZDI-CAN-13661。(CVE-2021-31440)

- Linux 内核 5.12.2 及之前版本中的 net/bluetooth/hci_request.c 存在删除 HCI 控制器的争用条件。(CVE-2021-32399)

- 在 Linux 内核 5.12.4 之前的版本中,net/bluetooth/hci_event.c 会在破坏 hci_chan 时出现释放后使用漏洞,亦称 CID-5c4c8c954409。这会导致写入任意值。(CVE-2021-33034)

- 在 Linux 内核 5.12.13 之前版本的 kernel/bpf/verifier.c 中,可能会错误地预测分支(例如,由于类型混淆),因此非特权 BPF 程序可以通过边信道攻击读取任意内存位置,亦称 CID-9183671af6db。(CVE-2021-33624)

- Linux 内核 5.12.10 及之前版本中的 net/can/bcm.c 允许本地用户从内核堆栈内存获取敏感信息,这是部分数据结构未初始化所致。(CVE-2021-34693)

- Linux 内核中的 eBPF RINGBUF bpf_ringbuf_reserve() 函数未检查分配的大小是否小于 ringbuf 大小,攻击者可利用此漏洞,在内核中进行越界写入,进而执行任意代码。此问题已通过提交 4b81ccebaeee (bpf, ringbuf:拒绝保留超过 ringbuf 大小的缓冲区) (v5.13-rc4) 修复,并向后移植到 v5.12.4、v5.11.21 和 v5.10.37 的稳定内核中。此问题经由 457f44363a88 (bpf:实现 BPF 环形缓冲区及其验证程序支持) (v5.8-rc1) 引入。(CVE-2021-3489)

- Linux 内核中按位操作(AND、OR 和 XOR)的 eBPF ALU32 边界跟踪未正确更新 32 位边界,这可能在 Linux 内核中造成越界读取和写入,继而导致任意代码执行问题。此问题已通过提交 049c4e13714e (bpf: 有关按位运算的 alu32 const subreg 边界跟踪修复) (v5.13-rc4) 修复,并向后移植到 v5.12.4、v5.11.21 和 v5.10.37 版的稳定内核中。AND/OR 问题由提交 3f50f132d840 (bpf:验证程序,执行明确的 ALU32 边界跟踪) (5.7-rc1) 引入,XOR 变体由 2921c90d4718 (bpf:使用 xor 修复验证程序失败) ( 5.10-rc1) 引入。(CVE-2021-3490)

- Linux 内核中的 io_uring 子系统允许在 PROVIDE_BUFFERS 运算中绕过 MAX_RW_COUNT 限制,从而导致读取 /proc/<PID>/mem 时在 mem_rw 中使用负值。
此问题可用于引发堆溢出,继而导致在内核中执行任意代码。此问题已通过提交 d1f82808877b (io_uring:在提供缓冲区时截断大于 MAX_RW_COUNT 的长度) (v5.13-rc1) 解决,并向后移植到 v5.12.4、v5.11.21 和 v5.10.37 版的稳定内核中。此问题是在 ddf0322db79c (io_uring: 添加 IORING_OP_PROVIDE_BUFFERS) (v5.7-rc1) 中引入。(CVE-2021-3491)

- 在 5.12.0-rc4 之前版本的 Linux 内核中,在 f2fs 模块的 fs/f2fs/node.c 中发现一个越界 (OOB) 内存访问缺陷。由于边界检查失败,本地攻击者可获取越界内存的访问权限,从而导致系统崩溃或内部内核信息泄露。此漏洞最大的威胁在于系统可用性。(CVE-2021-3506)

- 在 Enclaves VM 强制关闭 enclave 文件描述符的方式中,发现 Nitro Enclaves 内核驱动程序中存在空指针取消引用缺陷。本地主机用户可利用此缺陷造成系统崩溃,或提升其在系统中的权限。(CVE-2021-3543)

- 在用户连接恶意 HCI TTY 蓝牙设备的方式中,发现 Linux 内核 HCI 设备初始化子系统中存在双重释放内存损坏缺陷。本地用户可利用此缺陷导致系统崩溃。此缺陷影响从 3.13 开始的所有 Linux 内核版本。(CVE-2021-3564)

- 在用户调用 ioct HCIUNBLOCKADDR 的方式或触发调用 hci_unregister_dev() 及 hci_sock_blacklist_add()、hci_sock_blacklist_del()、hci_get_conn_info()、hci_get_auth_info() 调用之一的争用条件的方式中,发现 Linux 内核 HCI 子系统的 hci_sock_bound_ioctl() 函数中存在释放后使用漏洞。特权本地用户可利用此缺陷造成系统崩溃,或提升其在系统中的特权。此缺陷影响 5.13-rc5 之前的 Linux 内核版本。(CVE-2021-3573)

- Linux 内核 5.12.10 之前版本中的 net/nfc/llcp_sock.c 允许本地非特权用户通过在某种类型的绑定调用失败后进行 getsockname 调用,从而造成拒绝服务(空指针取消引用和错误)。(CVE-2021-38208)

- 解决了 Linux 内核中的以下漏洞:HID: usbhid:修复 hid_submit_ctrl 中的信息泄漏。在 hid_submit_ctrl() 中,计算报告长度的方式未考虑 report->size 可能为零。运行 syzkaller 复制器时,大小为 0 的报告会造成 hid_submit_ctrl) 将 transfer_buffer_length 计算为 16384。将此 urb 传递到 usb 核心层时,KMSAN 会报告 16384 字节的信息泄漏。若要修复此问题,请首先修改 hid_report_len(),通过在除法中使用 DIV_ROUND_UP 来说明报告大小为零的情况。然后,从 hid_submit_ctrl() 调用它。(CVE-2021-46906)

- 在 Linux 内核中,以下漏洞已修复:dm rq:修复表加载失败后,移除设备时发生 blk_mq_tag_set 双重释放 当为基于请求的映射设备加载 device-mapper 表以及为设备分配/初始化 blk_mq_tag_set 失败时,下面的设备移除将导致双重释放。例如 (dmesg):device-mapper:core:无法为基于请求的 dm-mq 映射设备 device-mapper 初始化队列:ioctl:无法为新表格设置设备队列。
无法处理虚拟内核地址空间中的内核指针取消引用 未解决:
0305e098835de000 TEID:0305e098835de803 使用内核 ASCE 时,主页空间模式发生错误。
AS:000000025efe0007 R3:0000000000000024 Oops:0038 ilc:3 [#1] SMP 模块链接位置:…许多模块… 支持与否:是,外部 CPU:0 PID:7348 命令:multipathd Kdump:已加载 已感染:G W X 5.3.18-53-default #1 SLE15-SP3 硬件名称:IBM 8561 T01 7I2 (LPAR) Krnl PSW:0704e00180000000 000000025e368eca (kfree+0x42/0x330) R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:2 PM:0 RI:0 EA:3 Krnl GPRS:000000000000004a 000000025efe5230 c1773200d779968d 0000000000000000 000000025e520270 000000025e8d1b40 0000000000000003 00000007aae10000 000000025e5202a2 0000000000000001 c1773200d779968d 0305e098835de640 00000007a8170000 000003ff80138650 000000025e5202a2 000003e00396faa8 Krnl 代码:
000000025e368eb8:c4180041e100 lgrl %r1,25eba50b8 000000025e368ebe:ecba06b93a55 risbg %r11,%r10,6,185,58 #000000025e368ec4: e3b010000008 ag %r11,0(%r1) >000000025e368eca:e310b0080004 lg %r1,8(%r11) 000000025e368ed0:a7110001 tmll %r1,1 000000025e368ed4:a7740129 brc 7,25e369126 000000025e368ed8:
e320b0080004 lg %r2,8(%r11) 000000025e368ede: b904001b lgr %r1,%r11 调用跟踪:[<000000025e368eca>] kfree+0x42/0x330 [<000000025e5202a2>] blk_mq_free_tag_set+0x72/0xb8 [<000003ff801316a8>] dm_mq_cleanup_mapped_device+0x38/0x50 [dm_mod] [<000003ff80120082>] free_dev+0x52/0xd0 [dm_mod] [<000003ff801233f0>] __dm_destroy+0x150/0x1d0 [dm_mod] [<000003ff8012bb9a>] dev_remove+0x162/0x1c0 [dm_mod] [<000003ff8012a988>] ctl_ioctl+0x198/0x478 [dm_mod] [<000003ff8012ac8a>] dm_ctl_ioctl+0x22/0x38 [dm_mod] [<000000025e3b11ee>] ksys_ioctl+0xbe/0xe0 [<000000025e3b127a>] __s390x_sys_ioctl+0x2a/0x40 [<000000025e8c15ac>] system_call+0xd8/0x2c8 上次突发事件地址:[<000000025e52029c>] blk_mq_free_tag_set+0x6c/0xb8 内核错误 - 不同步:致命异常:panic_on_oops 分配/初始化 dm_mq_init_request_queue() 中的 blk_mq_tag_set 失败后,指针不会被取消初始化/释放,而且也不会被重置为空;因此,当 dev_remove() 之后进入 dm_mq_cleanup_mapped_device() 时,它会发现该指针,并再次尝试取消初始化并释放该指针。在处理 dm_mq_init_request_queue() 错误时将指针设置为空即可解决此问题。还可以在 dm_mq_cleanup_mapped_device() 中将其设置为空。(CVE-2021-46938)

- 在 Linux 内核中,以下漏洞已修复:tracing:重构 trace_clock_global(),使其永不拦截 据报告,对环形缓冲区递归检测的修复导致计算机执行暂停/恢复测试时发生挂起。从调试该案例中提取了以下回溯:调用跟踪:trace_clock_global+0x91/0xa0 __rb_reserve_next+0x237/0x460 ring_buffer_lock_reserve+0x12a/0x3f0 trace_buffer_lock_reserve+0x10/0x50 __trace_graph_return+0x1f/0x80 trace_graph_return+0xb7/0xf0 ? trace_clock_global+0x91/0xa0 ftrace_return_to_handler+0x8b/0xf0 ? pv_hash+0xa0/0xa0 return_to_handler+0x15/0x30 ? ftrace_graph_caller+0xa0/0xa0 ? trace_clock_global+0x91/0xa0 ? __rb_reserve_next+0x237/0x460 ? ring_buffer_lock_reserve+0x12a/0x3f0 ? trace_event_buffer_lock_reserve+0x3c/0x120 ? trace_event_buffer_reserve+0x6b/0xc0 ? trace_event_raw_event_device_pm_callback_start+0x125/0x2d0 ? dpm_run_callback+0x3b/0xc0 ? pm_ops_is_empty+0x50/0x50 ? platform_get_irq_byname_optional+0x90/0x90 ? trace_device_pm_callback_start+0x82/0xd0 ? dpm_run_callback+0x49/0xc0 具有以下 RIP:RIP:
0010:native_queued_spin_lock_slowpath+0x69/0x200 由于对递归检测的修复使跟踪时发生单一递归,这会导致 trace_clock_global() 发生旋转锁定,然后尝试再次获取:ring_buffer_lock_reserve() { trace_clock_global() { arch_spin_lock() {queued_spin_lock_slowpath() { /* 发生锁定 */(函数图形跟踪器跟踪其他对象)ring_buffer_lock_reserve() { trace_clock_global() { arch_spin_lock() { queued_spin_lock_slowpath() { /* 死锁!*/ 跟踪应该 *永不* 拦截,因为会导致与上述类似的奇怪锁定。重构 race_clock_global() 代码以直接使用,而不是简单地获取锁定以更新记录的 prev_time,因为同时调用此代码的两个不同 CPU 上会发生两个事件,所以哪个先执行并不重要。使用 trylock 获取用于更新 prev_time 的锁定,如果失败,只需下次重试即可。如果失败,则表示已有其他程序对其进行更新。Bugzilla:https://bugzilla.kernel.org/show_bug.cgi?id=212761 (CVE-2021-46939)

- 在 Linux 内核中,以下漏洞已修复:md/raid1:结束失败的写入请求时,正确表示失败 此补丁解决了使用位图的 raid1 数组中的数据损坏错误。如果不执行此修复,则失败的 I/O 的位图位最终会被清除。由于我们处于 raid1_end_write_request 的失败段中,如果不再次尝试提出请求 (R1BIO_WriteError),则会发生失败 (R1BIO_Degraded)。(CVE-2021-46950)

- 在 Linux 内核中,以下漏洞已修复:NFS:fs_context:验证 UDP retrans,以防位移越界 修复 xprt_calc_majortimeo() 中的位移越界。这是因传递到 nfs 挂载的 garbage 超时 (retrans) 挂载选项所致,在本例中,从 syzkaller 传递。如果协议为 XPRT_TRANSPORT_UDP,则“retrans”是 64 位长整数的位移值,因此“retrans”不能大于等于 64。如果大于等于 64,则挂载失败并返回错误。(CVE-2021-46952)

- 在 Linux 内核中,以下漏洞已修复:ACPI:GTDT:监视窗口探测失败时,不要损坏中断映射 因固件属性无效而发生驱动器探测失败时,GTDT 驱动程序会取消映射之前映射的中断。但是,它从不检查中断的映射实际上是否成功。此外,如果固件报告与 GIC SGI 范围重叠的非法中断号,这会导致 IPI 被取消映射,以及后续的各种问题(据 Dann Frazier 报告)。改进驱动程序,赋予更强大的功能,使其能够在取消映射对象之前实际检查是否已映射中断。(CVE-2021-46953)

- 在 Linux 内核中,以下漏洞已修复:irqchip/gic-v3:在处理虚假中断时,不启用 irqs 我们在利用向后移植的 pseudo-NMI 补丁运行 4.19 内核时,触发了以下错误:[14.816231] ------------[在此处剪切]------------ [14.816231] irq.c:99 的内核错误![14.816232] 内部错误:Oops - 错误:0 [#1] SMP [ 14.816232] 进程 swapper/0(pid:
0,堆栈限制 = 0x(____ptrval____))[ 14.816233] CPU:0 PID:0 命令:swapper/0 已感染:G O 4.19.95.aarch64 #14 [ 14.816233] 硬件名称:evb (DT) [ 14.816234] 粘贴:80400085 (Nzcv daIf +PAN
-UAO) [ 14.816234] pc:asm_nmi_enter+0x94/0x98 [ 14.816235] lr:asm_nmi_enter+0x18/0x98 [ 14.816235] sp:ffff000008003c50 [ 14.816235] pmr_save:00000070 [ 14.816237] x29:ffff000008003c50 x28:
ffff0000095f56c0 [ 14.816238] x27:0000000000000000 x26:ffff000008004000 [ 14.816239] x25:
00000000015e0000 x24:ffff8008fb916000 [ 14.816240] x23:0000000020400005 x22:ffff0000080817cc [14.816241] x21:ffff000008003da0 x20:0000000000000060 [ 14.816242] x19:00000000000003ff x18:
ffffffffffffffff [ 14.816243] x17:0000000000000008 x16:003d090000000000 [ 14.816244] x15:
ffff0000095ea6c8 x14:ffff8008fff5ab40 [ 14.816244] x13:ffff8008fff58b9d x12:0000000000000000 [14.816245] x11:ffff000008c8a200 x10:000000008e31fca5 [ 14.816246] x9:ffff000008c8a208 x8:
000000000000000f [ 14.816247] x7:0000000000000004 x6:ffff8008fff58b9e [ 14.816248] x5:
0000000000000000 x4 : 0000000080000000 [ 14.816249] x3 : 0000000000000000 x2 : 0000000080000000 [14.816250] x1 : 0000000000120000 x0 : ffff0000095f56c0 [ 14.816251] 调用跟踪:[ 14.816251] asm_nmi_enter+0x94/0x98 [ 14.816251] el1_irq+0x8c/0x180 (IRQ C) [ 14.816252] gic_handle_irq+0xbc/0x2e4 [14.816252] el1_irq+0xcc/0x180 (IRQ B) [ 14.816253] arch_timer_handler_virt+0x38/0x58 [ 14.816253] handle_percpu_devid_irq+0x90/0x240 [ 14.816253] generic_handle_irq+0x34/0x50 [ 14.816254]
__handle_domain_irq+0x68/0xc0 [ 14.816254] gic_handle_irq+0xf8/0x2e4 [ 14.816255] el1_irq+0xcc/0x180 (IRQ A) [ 14.816255] arch_cpu_idle+0x34/0x1c8 [ 14.816255] default_idle_call+0x24/0x44 [ 14.816256] do_idle+0x1d0/0x2c8 [ 14.816256] cpu_startup_entry+0x28/0x30 [ 14.816256] rest_init+0xb8/0xc8 [ 14.816257] start_kernel+0x4c8/0x4f4 [ 14.816257] 代码:940587f1 d5384100 b9401001 36a7fd01 (d4210000) [ 14.816258] 模块链接位置:start_dp(O) smeth(O) [ 15.103092] ---[ 结束跟踪 701753956cb14aa8 ]--- [ 15.103093] 内核错误 - 不同步:中断发生致命异常 [ 15.103099] SMP:终止辅助 CPU [15.103100] 内核偏移:已禁用 [ 15.103100] CPU 功能:0x36,a2400218 [ 15.103100] 内存限制:
无,因 nmi_enter() 中的“BUG_ON(in_nmi())”导致。根据调用跟踪,我们可以发现三个中断(在上面标记的 A、B、C):中断 (A) 被 (B) 抢占,(B) 进一步被 (C) 中断。
后续调查显示 (B) 导致 nmi_enter() 被调用,但其实际上是虚假中断。此外,中断在 (B) 的上下文中被重新启用,并且 (C) 触发了 NMI 优先级。最终出现了我们绝对不想(也无法)处理的嵌套 NMI 情况。此处的错误在于虚假中断绝不会导致任何状态变更,我们只需返回被中断的上下文即可。尽早处理 GICv3 处理程序中的虚假中断可解决此问题。[maz:重写提交消息,已纠正 修复内容:标签] (CVE-2021-46961)

- 在 Linux 内核中,以下漏洞已修复:sched:修复 ucclamp 中的越界访问 出于性能原因,Util-clamp 会根据其钳制值将任务放置在不同的存储桶中。
但是,当前存储桶的大小按照除法计算结果舍入而来,这会导致在某些配置中发生差一错误。例如,如果有 20 个存储桶,则存储桶的大小为 1024/20=51。钳制值为 1024 的任务将映射到存储桶 ID 1024/51=20。遗憾的是,正确的索引位范围为 [0,19],因而会导致越界内存访问。钳制存储桶 ID,以解决此问题。
(CVE-2021-46993)

- 在 Linux 内核中,以下漏洞已修复:netfilter:nftables:修复新对象中用户数据错误路径存在的内存泄漏 如果用户数据分配失败,则会释放对象名称。(CVE-2021-46996)

- 在 Linux 内核中,以下漏洞已修复:mm:memcontrol:slab:修复对正在释放的 memcg 补丁系列的引用 使用 obj_cgroup API 向 kmem 页面收取费用,v5。自 Roman 的系列 已应用新的 cgroup slab 内存控制器。所有 slab 对象均按照 obj_cgroup 的新 API 收取费用。新 API 引入了 struct obj_cgroup 来向 slab 对象收取费用。这样做可防止长期限对象固定内存中的原始内存 cgroup。但仍有一些极端对象(例如,SLUB 上大于 order-1 页面的分配)不使用新的 API 收取费用。这些对象(包括直接由 buddy 分配器分配的页面)会按照 kmem 页面被收取费用,因为 kmem 页面仍会保持引用内存 cgroup。例如我们知道内核堆栈作为 kmem 页面被收取费用,因为内核堆栈的大小可能大于 2 个页面(例如,在 x86_64 或 arm64 上为 16 KB)。如果我们创建线程(假设线程堆栈计入内存 cgroup A),然后将其从内存 cgroup A 移动到内存 cgroup B。因为线程的内核堆栈会保持引用内存 cgroup A。即使我们移除 cgroup A,线程仍可以固定内存中的内存 cgroup A。如果我们希望看到此场景,请使用以下脚本。我们可以看到,系统已添加 500 个即将终止的 cgroup(这不是实际问题,而仅是用于显示大型 kmalloc 按 kmem 页面(可以固定内存中的内存 cgroup)被收取费用的脚本)。#!/bin/bash cat /proc/cgroups | grep memory cd /sys/fs/cgroup/memory echo 1 > memory.move_charge_at_immigrate for i in range{1..500} do mkdir kmem_test echo $$ > kmem_test/cgroup.procs sleep 3600 & echo $$ > cgroup.procs echo `cat kmem_test/cgroup.procs` > cgroup.procs rmdir kmem_test done cat /proc/cgroups | grep 内存 此补丁集旨在通过使用 obj_cgroup 的 API,使这些 kmem 页面终止引用内存 cgroup。最后,我们可以看到,如果运行上述测试脚本,即将终止的 cgroup 的数量不会增加。此补丁(共 7 个):rcu_read_lock/unlock 仅可以保证不会释放 memcg,但无法保证 css_get(缓存的 memcg 发生变化时,位于 refill_stock 中)成功传输至 memcg。rcu_read_lock() memcg = obj_cgroup_memcg(old) __memcg_kmem_uncharge(memcg) refill_stock(memcg) if (stock->cached != memcg) // css_get 可以将 ref 计数器从 0 改回 1。css_get(&memcg->css) rcu_read_unlock() 此补丁与以下提交非常相似:eefbfa7fd678(mm:memcg/slab:修复 obj_cgroup_charge 中的释放后使用漏洞)解决方法:在调用 __memcg_kmem_uncharge() 前,
保持引用传递到 __memcg_kmem_uncharge() 的 memcg。(CVE-2021-47011)

请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。

解决方案

运行“yum update kernel”以更新系统。

另见

https://alas.aws.amazon.com/AL2/ALASKERNEL-5.10-2022-002.html

https://alas.aws.amazon.com/faqs.html

https://alas.aws.amazon.com/cve/html/CVE-2020-24586.html

https://alas.aws.amazon.com/cve/html/CVE-2020-24587.html

https://alas.aws.amazon.com/cve/html/CVE-2020-24588.html

https://alas.aws.amazon.com/cve/html/CVE-2020-26139.html

https://alas.aws.amazon.com/cve/html/CVE-2020-26141.html

https://alas.aws.amazon.com/cve/html/CVE-2020-26145.html

https://alas.aws.amazon.com/cve/html/CVE-2020-26147.html

https://alas.aws.amazon.com/cve/html/CVE-2020-26541.html

https://alas.aws.amazon.com/cve/html/CVE-2020-26558.html

https://alas.aws.amazon.com/cve/html/CVE-2021-0129.html

https://alas.aws.amazon.com/cve/html/CVE-2021-3489.html

https://alas.aws.amazon.com/cve/html/CVE-2021-3490.html

https://alas.aws.amazon.com/cve/html/CVE-2021-3491.html

https://alas.aws.amazon.com/cve/html/CVE-2021-3506.html

https://alas.aws.amazon.com/cve/html/CVE-2021-3543.html

https://alas.aws.amazon.com/cve/html/CVE-2021-3564.html

https://alas.aws.amazon.com/cve/html/CVE-2021-3573.html

https://alas.aws.amazon.com/cve/html/CVE-2021-22543.html

https://alas.aws.amazon.com/cve/html/CVE-2021-28691.html

https://alas.aws.amazon.com/cve/html/CVE-2021-31440.html

https://alas.aws.amazon.com/cve/html/CVE-2021-32399.html

https://alas.aws.amazon.com/cve/html/CVE-2021-33034.html

https://alas.aws.amazon.com/cve/html/CVE-2021-33624.html

https://alas.aws.amazon.com/cve/html/CVE-2021-34693.html

https://alas.aws.amazon.com/cve/html/CVE-2021-38208.html

https://alas.aws.amazon.com/cve/html/CVE-2021-46906.html

https://alas.aws.amazon.com/cve/html/CVE-2021-46938.html

https://alas.aws.amazon.com/cve/html/CVE-2021-46939.html

https://alas.aws.amazon.com/cve/html/CVE-2021-46950.html

https://alas.aws.amazon.com/cve/html/CVE-2021-46952.html

https://alas.aws.amazon.com/cve/html/CVE-2021-46953.html

https://alas.aws.amazon.com/cve/html/CVE-2021-46961.html

https://alas.aws.amazon.com/cve/html/CVE-2021-46993.html

https://alas.aws.amazon.com/cve/html/CVE-2021-46996.html

https://alas.aws.amazon.com/cve/html/CVE-2021-47011.html

插件详情

严重性: High

ID: 160459

文件名: al2_ALASKERNEL-5_10-2022-002.nasl

版本: 1.11

类型: local

代理: unix

发布时间: 2022/5/2

最近更新时间: 2024/4/25

支持的传感器: Agentless Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Nessus Agent, Nessus

风险信息

VPR

风险因素: Critical

分数: 9.2

CVSS v2

风险因素: High

基本分数: 7.2

时间分数: 6.3

矢量: CVSS2#AV:L/AC:L/Au:N/C:C/I:C/A:C

CVSS 分数来源: CVE-2021-3543

CVSS v3

风险因素: High

基本分数: 8.8

时间分数: 8.4

矢量: CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

时间矢量: CVSS:3.0/E:H/RL:O/RC:C

CVSS 分数来源: CVE-2021-3491

漏洞信息

CPE: p-cpe:/a:amazon:linux:bpftool, p-cpe:/a:amazon:linux:bpftool-debuginfo, p-cpe:/a:amazon:linux:kernel, p-cpe:/a:amazon:linux:kernel-debuginfo, p-cpe:/a:amazon:linux:kernel-debuginfo-common-aarch64, p-cpe:/a:amazon:linux:kernel-debuginfo-common-x86_64, p-cpe:/a:amazon:linux:kernel-devel, p-cpe:/a:amazon:linux:kernel-headers, p-cpe:/a:amazon:linux:kernel-tools, p-cpe:/a:amazon:linux:kernel-tools-debuginfo, p-cpe:/a:amazon:linux:kernel-tools-devel, p-cpe:/a:amazon:linux:perf, p-cpe:/a:amazon:linux:perf-debuginfo, p-cpe:/a:amazon:linux:python-perf, p-cpe:/a:amazon:linux:python-perf-debuginfo, cpe:/o:amazon:linux:2

必需的 KB 项: Host/local_checks_enabled, Host/AmazonLinux/release, Host/AmazonLinux/rpm-list

可利用: true

易利用性: Exploits are available

补丁发布日期: 2022/1/20

漏洞发布日期: 2020/10/2

可利用的方式

Core Impact

Metasploit (Linux eBPF ALU32 32-bit Invalid Bounds Tracking LPE)

参考资料信息

CVE: CVE-2020-24586, CVE-2020-24587, CVE-2020-24588, CVE-2020-26139, CVE-2020-26141, CVE-2020-26145, CVE-2020-26147, CVE-2020-26541, CVE-2020-26558, CVE-2021-0129, CVE-2021-22543, CVE-2021-28691, CVE-2021-31440, CVE-2021-32399, CVE-2021-33034, CVE-2021-33624, CVE-2021-34693, CVE-2021-3489, CVE-2021-3490, CVE-2021-3491, CVE-2021-3506, CVE-2021-3543, CVE-2021-3564, CVE-2021-3573, CVE-2021-38208, CVE-2021-46906, CVE-2021-46938, CVE-2021-46939, CVE-2021-46950, CVE-2021-46952, CVE-2021-46953, CVE-2021-46961, CVE-2021-46993, CVE-2021-46996, CVE-2021-47011

IAVA: 2021-A-0222-S, 2021-A-0223-S