-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ben Hutchings wrote:
> On Fri, 2014-01-03 at 23:20 +0000, halfdog wrote:
>> Here is some more information from my latest tests:
>> 
>> * Although first observed with virtual-8086 mode, the bug is not 
>> specific to virtual-8086 mode, it can be triggered with normal
>> x86 userspace code also, even with better reproducibility.
>> 
>> * It seems, that when changing the FPU control word with "fstcw"
>> just before exit of the process, then another process could
>> suffer when doing __do_switch
>> 
>> * By having two rogue processes writing data to each other via a 
>> socket, time and code-position of OOPS can be influenced.
>> 
>> * When deactivating mmap_min_addr, the NULL-dereferences during 
>> task-switch are exploitable, if kernel memory layout is known
>> from System.map, privilege escalation might be quite likely.
> 
> This is why no-one sets mmap_min_addr to 0 any more...

Yes, I know. It's just for learning purposes ...

>> * I've not yet tried to build a 64-bit version, but since
>> vm86-syscall is not required any more, there could be problems
>> there also.
>> 
>> You can find the new improved test code without virtual-8086 mode
>> here:
>> 
>> http://www.halfdog.net/Security/2013/Vm86SyscallTaskSwitchKernelPanic/FpuStateTaskSwitchOops.c
>
>> 
> I commented-out the mmap-ing as I just want to see the oops rather
> than work out how exploitable it might be.
> 
> But I didn't get an oops when running on either the -486 or
> -686-pae kernel flavour, in a VM on an Intel or AMD 64-bit CPU, or
> directly on an Intel 64-bit CPU.  (The AMD system is a server I
> don't want to take down.)
> 
> Can you confirm that you are able to reproduce this without a VM,
> and send the contents of /proc/cpuinfo on the affected system(s)?

So, after completing my privilege escalation-POC, I'm back on
searching for the root cause. I've run tests without and within
VirtualBox, the results were the same. The local-root also works on
the native CPU without virtualization. So if you can't reproduce, the
CPU or some CPU-related kernel features might be the problem:

My CPU is a dual-core AMD, but the Debian 486-kernel does use only one
of those:

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 20
model           : 1
model name      : AMD E-350 Processor
stepping        : 0
microcode       : 0x5000028
cpu MHz         : 1596.563
cache size      : 512 KB
fdiv_bug        : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 6
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pdpe1gb rdtscp lm constant_tsc nonstop_tsc extd_apicid aperfmperf pni
monitor ssse3 cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy
abm sse4a misalignsse 3dnowprefetch ibs skinit wdt arat hw_pstate npt
lbrv svm_lock nrip_save pausefilter
bogomips        : 3193.12
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management: ts ttp tm stc 100mhzsteps hwpstate



Another hot candidate might be the "noxsave" switch:

[BUGS=X86] Disables x86 extended register state save and restore using
xsave. The kernel will fallback to enabling legacy floating-point and
sse state.



While reading the Intel architecture manuals to develop the POC, I
stumbled multiple times over relations between the problematic "emms"
instruction, the FPU control word handling and the xsave instruction,
but do not have a complete picture on that yet.

- -- 
http://www.halfdog.net/
PGP: 156A AE98 B91F 0114 FE88  2BD8 C459 9386 feed a bee
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iEYEARECAAYFAlLMkKoACgkQxFmThv7tq+5JBwCeNYfa/QmHq3sI2O45fDcwd62j
Tb8An3iIs5yPFxIFBCIUGXX/PVrzB4xu
=KZ07
-----END PGP SIGNATURE-----


-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/52cc90bd.3040...@halfdog.net

Reply via email to