Bug 248353 (CVE-2007-3732)

Summary: CVE-2007-3732 kernel: Reset %fs early in iret_exc
Product: [Other] Security Response Reporter: Marcel Holtmann <holtmann>
Component: vulnerabilityAssignee: Red Hat Product Security <security-response-team>
Status: CLOSED ERRATA QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: vdanen
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-04-16 02:02:37 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Marcel Holtmann 2007-07-16 12:03:17 UTC
The iret_exc fixup path, run when iret generates an exception due to bogus
%cs:%eip or %ss:%esp on the way back to user mode, has been broken since the
%fs-percpu-current changes.  The kernel's %fs needs to be restored before the
call in TRACE_IRQS_ON and before enabling interrupts, so that "current"
references work.  Without this, "current" used in the window between iret_exc
and the middle of error_code where %fs is reset, would crash (or get bogus
values, perhaps exploitable in fancy ways).

Comment 2 Eugene Teo (Security Response) 2010-04-16 02:02:37 UTC
Upstream commit:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a10d9a71bafd3a283da240d2868e71346d2aef6f

Commit a10d9a71 is the fix for CVE-2007-3732. When this patch was backported to the -stable kernel, it was wrongly listed as CVE-2007-3731. And when we were dealing with CVE-2007-3731, our developer backported this patch too even though we have filed a separate bug for CVE-2007-3732, so this was fixed. What a mess, but I'm glad we cleared this up afterall.

https://bugzilla.redhat.com/show_bug.cgi?id=248324#c4
https://bugzilla.redhat.com/show_bug.cgi?id=248324#c7