Bug 1759313 (CVE-2019-15030)

Summary: CVE-2019-15030 kernel: powerpc: local user can read vector registers of other users' processes via a Facility Unavailable exception
Product: [Other] Security Response Reporter: Guilherme de Almeida Suckevicz <gsuckevi>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: acaringi, airlied, allarkin, bdettelb, bhu, blc, brdeoliv, bskeggs, dhoward, dvlasenk, esammons, fhrbata, hdegoede, hkrzesin, iboverma, ichavero, itamar, jarodwilson, jeremy, jforbes, jglisse, jlelli, john.j5live, jonathan, josef, jross, jschorr, jshortt, jstancek, jwboyer, kernel-maint, kernel-mgr, labbott, lgoncalv, linville, masami256, matt, mchehab, mcressma, mjg59, mlangsdo, nmurray, plougher, qzhao, rt-maint, rvrbovsk, steved, williams
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
A flaw in the Linux kernel on the PowerPC platform, was found where a local user can read vector registers of other user processes (via a Facility Unavailable exception). An attacker must start a transaction when the FPU operation begins or there is no leakage. Vector registers will become corrupted with values from the different local Linux processes, because of the missing check inside arch/powerpc/kernel/process.c. The highest threat from this vulnerability is confidentiality of data and availability of the system.
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-03-09 16:31:48 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On: 1750653, 1788861, 1788862, 1788863, 1788864    
Bug Blocks: 1759315    

Description Guilherme de Almeida Suckevicz 2019-10-07 19:53:43 UTC
In the Linux kernels through 5.2.14 on the powerpc platform, a local user can read vector registers of other users processes via a Facility Unavailable exception (in the way the Linux kernel save and restore the FPU registers during task switch).
To exploit the vulnerability, a local user starts a transaction (via the hardware transactional memory instruction tbegin) and then accesses vector registers, however, this user cannot predict when it happens (if switch task doesn't happen exactly when FPU operation, then no leakage).
At some point, the vector registers will be corrupted with the values from a different local Linux process because of a missed check in arch/powerpc/kernel/process.c.
The only mitigation for this issue: not using FPU completely (then can use emulation instead). 

References:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8205d5d98ef7f155de211f5e2eb6ca03d95a5a60

Comment 1 Justin M. Forbes 2019-10-08 13:33:10 UTC
This was fixed for Fedora with the 5.2.15 stable kernel updates.

Comment 8 Petr Matousek 2020-02-04 10:49:38 UTC
Mitigation:

When applicable rely on FPU emulation (for example by rebuilding the critical services code) instead of the hardware FPU.

Comment 9 errata-xmlrpc 2020-03-09 14:31:49 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 7

Via RHSA-2020:0740 https://access.redhat.com/errata/RHSA-2020:0740

Comment 10 Product Security DevOps Team 2020-03-09 16:31:48 UTC
This bug is now closed. Further updates for individual products will be reflected on the CVE page(s):

https://access.redhat.com/security/cve/cve-2019-15030

Comment 11 errata-xmlrpc 2020-04-07 12:23:56 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2020:1372 https://access.redhat.com/errata/RHSA-2020:1372