Linux Kernel信息泄露误差(CVE-2020-28588)

宣布时间 2021-04-28

0x00 误差概述

CVE  ID

CVE-2020-28588

时    间

2021-04-28

类   型

信息泄露

等    级

高危

远程使用


影响规模


PoC/EXP

未果真

在野使用


 

0x01 误差详情

image.png

2021年04月27日,Cisco Talos果真披露了在Linux内核中发明的一个信息泄露误差 (CVE-2020-28588)。该误差保存于运行Linux的32位ARM装备的/proc/pid/syscall功效中,由于数值类型之间的过失转换,攻击者可以通过读取/proc/<pid>/syscall文件来使用此误差,以审查内核客栈内存信息或通过此误差来使用其它未修复的Linux误差。

别的,攻击者还可以通过此信息泄露误差绕过KASLR。内核地点空间结构随机化(KASLR)是一种反使用手艺,可以将种种工具随机安排,以避免被攻击者推测。

 

误差细节

/Proc是类Unix系统中的一个特殊的虚拟文件系统,用于动态地会见内核中的历程数据。它以类似于文件的条理结构显示有关历程的信息和其它系统信息。例如,它包括/proc/[pid]子目录,每个子目录都包括文件和子目录,这些文件和子目录包括了有关特定历程的信息,而这些信息可以通过使用响应的历程ID来读取。syscall 文件是一个正当的Linux系统文件,它包括内核使用的系统挪用日志。

/proc/pid/syscall文件会袒露系统挪用号码和目今历程正在执行的系统挪用的参数寄存器,以及客栈指针和程序计数器寄存器的值。虽然大大都系统挪用使用的寄存器较少,但所有的六个参数寄存器的值都会被袒露。

攻击者可以通过读取/proc/<pid>/syscall文件来审查内核内存信息,这可以在内核设置了CONFIG_HAVE_ARCH_TRACEHOOK的任何特定Linux系统上看到输出,但攻击无法在远程网络上举行检测。

触发该误差的shell下令为:

# echo 0 > /proc/sys/kernel/randomize_va_space (# only needed for a cleaner output)

$ while true; do cat /proc/self/syscall; done | uniq (# waits for changes)

$ while true; do free &>/dev/null; done (# triggers changes)

 

研究职员首先在Azure Sphere装备(版本20.10,32位ARM装备)上发明了这个误差,该装备运行打了一个补丁的Linux内核。这个误差在v5.1-rc4(提交为631b7abacd02b88f4b0795c08b54ad4fc3e7c7c0)中已经被引入,但在v5.10-rc4中仍然保存,以是这中心的所有版本很可能都受到影响。

 

影响规模

v5.1-rc4 - v5.10-rc4

已测试版本:

Linux Kernel v5.10-rc4

Linux Kernel v5.4.66

Linux Kernel v5.9.8

 

0x02 处置惩罚建议

建议升级到最新版本。

下载链接:

https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.12.tar.xz

 

0x03 参考链接

https://blog.talosintelligence.com/2021/04/vuln-spotlight-linux-kernel.html

https://talosintelligence.com/vulnerability_reports/TALOS-2020-1211

https://threatpost.com/linux-kernel-bug-wider-cyberattacks/165640/

 

0x04 时间线

2021-04-27  Cisco Talos果真误差

2021-04-28  VSRC宣布清静通告

 

0x05 附录

 

CVSS评分标准官网:http://www.first.org/cvss/

image.png