Specification says "The SerAuxErrBar record specifies properties of an error bar". So it should be related with error bar. But WTF is Error Bar [3]? Specification help us again; "An error bar is a set of lines displayed on a chart (section 2.2.3.3) that indicates a range of uncertainty in the measurement of each data points (section 2.2.3.10) in a series (section 2.2.3.9).". So I start with creating a bar chart, set a Error Bar and search for SerAuxErrBar structure in binary format.
I was set my error bars as vertical so started search with 0x03, my ebsrc choice was Custom Values (that means 0x04 should follow 0x03) etc..
After half an hour, I found SerAuxErrBar structure (see below picture).
Another interesting thing in this structure is numValue field. It's 8 byte length and contains an Xnum (WTF is Xnum? Thanks god there are references and converters about Xnum on Internet [4][5]) Xnum is a "64-bit binary floating-point number as specified in [IEEE754]." (from MSDN).
I got following crash after changed some value in SerAuxErrBar structure.
(2514.f0c): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. *** ERROR: Symbol file could not be found. Defaulted to export symbols for Excel.exe - Excel!Ordinal40+0x20b3b2: 00000001`3fd7b3b2 66394808 cmp word ptr [rax+8],cx ds:00000000`00000008=???? 0:000> r rax=0000000000000000 rbx=0000000000000000 rcx=000000000000089e rdx=0000000000000002 rsi=0000000000000000 rdi=00000000036fba20 rip=000000013fd7b3b2 rsp=000000000017f690 rbp=0000000000000000 r8=00000000ffffffff r9=0000000000000003 r10=00000000004e3570 r11=0000000003656c00 r12=00000000036543c0 r13=000000000443bc80 r14=0000000000000339 r15=00000000ffffffff iopl=0 nv up ei pl nz na pe nc cs=0033 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010202 Excel!Ordinal40+0x20b3b2: 00000001`3fd7b3b2 66394808 cmp word ptr [rax+8],cx ds:00000000`00000008=???? 0:000> kpL 10 Child-SP RetAddr Call Site 00000000`0017f690 00000001`3fd51e24 Excel!Ordinal40+0x20b3b2 00000000`0017f6e0 00000001`3fd54d33 Excel!Ordinal40+0x1e1e24 00000000`0017f740 00000001`3fd5c034 Excel!Ordinal40+0x1e4d33 00000000`0017f8b0 00000001`3fd5bca5 Excel!Ordinal40+0x1ec034 00000000`0017fa30 00000001`3fd5b91d Excel!Ordinal40+0x1ebca5 00000000`0017fb00 00000001`3fd5b834 Excel!Ordinal40+0x1eb91d 00000000`0017fbd0 00000001`3fd5ac97 Excel!Ordinal40+0x1eb834 00000000`00181db0 00000001`3fd5aa5f Excel!Ordinal40+0x1eac97 00000000`00181ee0 00000001`3fd5b2d4 Excel!Ordinal40+0x1eaa5f 00000000`00181ff0 00000001`3fd5cddc Excel!Ordinal40+0x1eb2d4 00000000`00183630 00000001`3fd71d1c Excel!Ordinal40+0x1ecddc 00000000`001836b0 00000001`3fd721ee Excel!Ordinal40+0x201d1c 00000000`00183710 00000001`3fd09027 Excel!Ordinal40+0x2021ee 00000000`00183750 00000001`3fcdadba Excel!Ordinal40+0x199027 00000000`00183c00 00000001`3fcf1abb Excel!Ordinal40+0x16adba 00000000`00185e40 00000001`4021805c Excel!Ordinal40+0x181abb
and hours later my journey finished at memmove crash.
0:014> g (2af8.171c): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. MSVCR90!memmove+0xd6: 00000000`721ae306 4c8951f8 mov qword ptr [rcx-8],r10 ds:00000000`1db3c000=???????????????? *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Program Files\Microsoft Office\Office14\EXCEL.EXE - 0:000> kv Child-SP RetAddr : Args to Child : Call Site 00000000`0024f4d8 00000001`3f82517c : 00000000`1dd95a60 00000000`00000000 00000000`00000004 00000000`00000003 : MSVCR90!memmove+0xd6 00000000`0024f4e0 00000001`3f827d1a : 00000000`00000002 00000000`0000000a 00000000`00000002 00000000`00000001 : EXCEL!Ordinal40+0x1a517c 00000000`00251bc0 00000001`3f82878a : 00000000`0000000a 00000000`0000000a 00000000`00000000 00000000`00000000 : EXCEL!Ordinal40+0x1a7d1a 00000000`002523e0 00000001`3f82d798 : 00000000`00000000 00000000`00000000 00000000`1e40df80 00000000`01a60000 : EXCEL!Ordinal40+0x1a878a 00000000`002526c0 00000001`3f832f89 : 00000000`01a60000 00000001`3f85f4a3 00000000`00253240 00000000`00000000 : EXCEL!Ordinal40+0x1ad798 00000000`00252ff0 00000001`3f8266c0 : 00000000`00253240 00000000`00000080 00000000`00000001 00000000`00000000 : EXCEL!Ordinal40+0x1b2f89 00000000`00253020 00000001`3f8264cd : 00000000`002563c0 000007fe`0000001a 00000000`00253240 00000000`1e417f50 : EXCEL!Ordinal40+0x1a66c0 00000000`00253210 00000001`3f825f0f : 00000000`1e417f50 000007fe`e231600c 00000000`00000008 00000000`00253960 : EXCEL!Ordinal40+0x1a64cd *** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Program Files\Common Files\Microsoft Shared\office14\mso.dll - 00000000`002533b0 000007fe`e241a48f : 00000000`00000008 00000000`1e417f50 00000000`00253960 00000000`1e417f00 : EXCEL!Ordinal40+0x1a5f0f 00000000`002533f0 000007fe`e2419c01 : 00000000`00000001 00000001`00000001 00000000`1e417f50 00000000`00000001 : mso!Ordinal450+0x28f3 00000000`00253500 000007fe`e2419ed7 : 00000000`000000c6 00000000`00000000 00000000`00000000 00000000`1e41df00 : mso!Ordinal450+0x2065 00000000`002535a0 000007fe`e2419c01 : 00000000`1e41df00 00000000`00000000 00000000`1e427d20 00000000`00275270 : mso!Ordinal450+0x233b 00000000`00253660 000007fe`e241968c : 00000000`000000c6 00000000`0000f002 00000000`0000f002 00000000`1e427d20 : mso!Ordinal450+0x2065 00000000`00253700 000007fe`e2418511 : 00000000`00000008 00000000`00002020 00000000`1e427d20 00000000`00253960 : mso!Ordinal450+0x1af0 00000000`00253870 00000001`3f826056 : 00000000`1e427d20 00000000`1deddd10 00000000`1e427d20 00000000`00002020 : mso!Ordinal450+0x975 00000000`002538e0 00000001`3f80e2e7 : 00000000`00000000 00000000`00002020 00000000`1de9fdb8 00000000`00000000 : EXCEL!Ordinal40+0x1a6056 00000000`002539e0 00000001`3f7e96cd : 00000000`1e003fc0 00000000`1e278fd0 00000000`00000010 00000000`00000000 : EXCEL!Ordinal40+0x18e2e7 00000000`00254cb0 00000001`3f818c14 : 00000000`18efe470 00000000`00255f00 00000000`0025a240 00000000`00000000 : EXCEL!Ordinal40+0x1696cd 00000000`00255e90 00000001`3f7eadba : 00000000`00000001 00000000`00000001 00000000`00000000 00000000`00000000 : EXCEL!Ordinal40+0x198c14 00000000`00256340 00000001`3f801abb : 00000000`00258650 00000000`0025a450 00000000`0025a240 00000000`0025a240 : EXCEL!Ordinal40+0x16adba 00000000`00258580 00000001`3fd2805c : 00000000`00001008 000007fe`00000026 00000000`00000000 00000000`0025ef78 : EXCEL!Ordinal40+0x181abb 00000000`0025ede0 00000001`3fd27ebf : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`0025f260 : EXCEL!Ordinal40+0x6a805c 00000000`0025f090 00000001`4006f88f : 00000000`0025f260 00000000`00000000 00000000`00000001 00000000`00001008 : EXCEL!Ordinal40+0x6a7ebf 00000000`0025f240 00000001`3f79249f : 00000000`000003f8 00000000`00000800 00000000`00000800 00000000`0000bfff : EXCEL!Ordinal40+0x9ef88f 00000000`0025f440 00000001`3f7d3041 : 00000000`00000000 00000000`0000ffff 00000000`00000000 00000001`40cdde30 : EXCEL!Ordinal40+0x11249f 00000000`0025f610 00000001`3f73a32c : 00000000`00000000 00000000`ffffffff 00000000`01af3ff7 00000000`00000800 : EXCEL!Ordinal40+0x153041 00000000`0025f820 00000001`3f7e1b46 : 00000000`00000000 00000000`00000000 00000000`00000000 00000001`00000001 : EXCEL!Ordinal40+0xba32c 00000000`0025f910 00000000`772a652d : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : EXCEL!Ordinal40+0x161b46 00000000`0025f9c0 00000000`7789c521 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0xd 00000000`0025f9f0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x1d
Exploitable? Yes it's exploitable but needs some kung-foo. PoC? Meh, prepare it yourself and e-mail me if you're not exploit kit developer and failed to trigger it :p
References
- http://technet.microsoft.com/en-us/security/bulletin/ms12-076
- http://msdn.microsoft.com/en-us/library/dd920699(v=office.12).aspx
- http://msdn.microsoft.com/en-us/library/dd908530(v=office.12).aspx
- http://msdn.microsoft.com/en-us/library/dd953512(v=office.12).aspx
- http://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html
This comment has been removed by a blog administrator.
ReplyDeleteCould you please explain the the basics reagrding the following in detail - "I was set my error bars as vertical so started search with 0x03, my ebsrc choice was Custom Values (that means 0x04 should follow 0x03) etc."
ReplyDelete