精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

CVE-2020-25291:金山WPS Office遠程堆溢出漏洞分析

安全 漏洞
WPS Office軟件中存在一個遠程執行代碼漏洞,是當Office軟件在分析特制Office文件時不正確地處理內存中的對象時引起的。成功利用此漏洞的攻擊者可以在當前用戶的上下文中運行任意代碼。

[[348239]]

0x01 漏洞描述

WPS Office是適用于Microsoft Windows,macOS,Linux,iOS和Android的辦公軟件,由總部位于珠海的中國軟件開發商金山軟件公司開發。WPS Office由三個主要組件組成:WPS Writer,WPS Presentation和WPS Spreadsheet。個人基本版本可以免費使用,WPS Office軟件中存在一個遠程執行代碼漏洞,是當Office軟件在分析特制Office文件時不正確地處理內存中的對象時引起的。成功利用此漏洞的攻擊者可以在當前用戶的上下文中運行任意代碼。漏洞可能會導致拒絕服務,易受攻擊的產品WPS Office,影響版本11.2.0.9453。

0x02 漏洞分析

在WPS Office中用于圖像格式解析的Qt模塊中發現存在堆溢出。嵌入WPS office的特制圖像文件可能會觸發此漏洞。打開特制的文檔文件時,觸發訪問沖突。EDX指向數組的指針,而EAX是指向數組的索引。

  1. 0:000> g 
  2.  
  3. (c50.b4): Access violation - code c0000005 (first chance) 
  4.  
  5. First chance exceptions are reported before any exception handling. 
  6.  
  7. This exception may be expected and handled. 
  8.  
  9. eax=000000c0 ebx=006f1c48 ecx=cd2aefbc edx=cd2c6f80 esi=2ed7ae18 edi=0000001c 
  10.  
  11. eip=6ba13321 esp=006f1b44 ebp=006f1b44 iopl=0 nv up ei pl nz na po ;nc ;
  12.  
  13. cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00210202 
  14.  
  15. QtCore4!QMatrix::dy+0x48a8: 
  16.  
  17. 6ba13321 8b448210 mov eax,dword ptr [edx+eax*4+10h] ds:002b:cd2c7290=???????? 

崩潰是如何觸發的?讓我們看一下PNG標頭格式。

  1. 00029E30 FF 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 ÿ‰PNG........IHD 
  2.  
  3. 00029E40 52 00 00 02 80 00 00 01 C6 04 03 00 00 00 16 0A R...€...Æ....... 
  4.  
  5. 00029E50 27 FC 00 00 00 04 67 41 4D 41 00 00 B1 88 95 98 'ü....gAMA..±ˆ•˜ 
  6.  
  7. 00029E60 F4 A6 00 00 00 30 50 4C 54 45 00 00 00 80 00 00 ô¦...0PLTE...€.. 
  8.  
  9. 00029E70 00 80 00 80 80 00 00 00 80 80 00 80 00 80 80 80 .€.€€...€€.€.€€€ 
  10.  
  11. 00029E80 80 80 C0 C0 C0 FF 00 00 00 FF 00 FF FF 00 00 00 €€ÀÀÀÿ...ÿ.ÿÿ... 
  12.  
  13. 00029E90 FF FF 00 FF 00 FF FF FF FF FF 7B 1F B1 C4 00 00 ÿÿ.ÿ.ÿÿÿÿÿ{.±Ä.. 

從偏移量0x29E31開始-0x29E34是PNG文件格式的簽名標頭。PNG頭文件的結構:

  1. PNG signature --> IHDR --> gAMA --> PLTE --> pHYs --> IDAT --> IEND 

在這種情況下,當WPS Office Suite中使用的QtCore庫解析PLTE結構并觸發堆溢出時,該漏洞位于Word文檔中的嵌入式PNG文件中。在偏移量0x29E82到0x29E85處,調色板的解析失敗,從而觸發了堆中的內存損壞。崩潰觸發之前的堆棧跟蹤:

  1. 00 00ee1790 6b8143ef QtCore4!path_gradient_span_gen::path_gradient_span_gen+0x6a71 
  2.  
  3. 01 00ee17f0 6b814259 QtCore4!QBrush::setMatrix+0x234 
  4.  
  5. 02 00ee58d4 6b8249a4 QtCore4!QBrush::setMatrix+0x9e 
  6.  
  7. 03 00ee58ec 6b80cc84 QtCore4!QImage::rect+0x22b 
  8.  
  9. 04 00ee5908 6b857ccc QtCore4!QTransform::inverted+0xec8 
  10.  
  11. 05 00ee629c 6b81c55b QtCore4!QSvgFillStyle::setFillOpacity+0x1b59 
  12.  
  13. 06 00ee6480 6b896844 QtCore4!QPainter::drawPixmap+0x1c98 
  14.  
  15. 07 00ee6574 6d1e0fbd QtCore4!QPainter::drawImage+0x325 
  16.  
  17. 08 00ee6594 6d0dd155 kso!GdiDrawHoriLineIAlt+0x11a1a 

在QtCore4解析嵌入式圖像之前,我們可以看到來自KSO模塊的最后一次調用,試圖處理圖像kso!GdiDrawHoriLineIAlt。使用IDA Pro分解應用程序來分析發生異常的函數。最后的崩潰路徑如下(WinDBG結果):

  1. QtCore4!QMatrix::dy+0x48a8: 
  2.  
  3. 6ba13321 8b448210 mov eax,dword ptr [edx+eax*4+10h] ds:002b:cd2c7290=???????? 

在IDA Pro中打開時,我們可以按以下方式反匯編該函數:

  1. .text:67353315 push ebp 
  2.  
  3. .text:67353316 mov ebp, esp 
  4.  
  5. .text:67353318 movzx eax, byte ptr [ecx+edx] ; crash here 
  6.  
  7. .text:6735331C mov ecx, [ebp+arg_0] 
  8.  
  9. .text:6735331F mov edx, [ecx] 
  10.  
  11. .text:67353321 mov eax, [edx+eax*4+10h] 
  12.  
  13. .text:67353325 mov ecx, eax 

使用crashs轉儲中的信息,我們知道應用程序在0x67353321(mov eax,[edx + eax * 4 + 10h])處觸發了訪問沖突。我們可以看到EAX寄存器由0xc0值控制。因此,從這里我們可以根據導致異常的指令對寄存器的狀態進行一些假設。需要注意的重要一點是,在發生異常之前,我們可以看到ECX(0xc0)中包含的值被寫入到以下指令所定義的任意位置:

  1. mov ecx, [ebp+arg_0] 

此外,我們注意到,在我們的故障指令之外,EBP的偏移量存儲在ECX寄存器中。我們在前面提到的指令(偏移量為0x6ba1331c)上設置了一個斷點,以觀察內存。斷點觸發后,我們可以看到第一個值c45adfbc指向另一個指針,該指針應該是指向數組的指針。

  1. Breakpoint 0 hit 
  2.  
  3. eax=0000000f ebx=004f1b40 ecx=d3544100 edx=0000001c esi=d1200e18 edi=0000001c 
  4.  
  5. eip=6ba1331c esp=004f1a34 ebp=004f1a34 iopl=0 nv up ei pl nz na po ;nc ;
  6.  
  7. cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202 
  8.  
  9. QtCore4!QMatrix::dy+0x48a3: 
  10.  
  11. 6ba1331c 8b4d08 mov ecx,dword ptr [ebp+8] ss:002b:004f1a3c=c45adfbc 
  12.  
  13. 0:000> dc ebp+8 
  14.  
  15. 004f1a3c c45adfbc 00000048 00000000 6f13830f ..Z.H..........o 
  16.  
  17. 004f1a4c 004f5cc8 00000000 00000000 00000000 .\O............. 
  18.  
  19. 004f1a5c 00000000 004f65a0 004f662c 00000000 .....eO.,fO..... 
  20.  
  21. 004f1a6c 779eae8e 00000000 00000001 3f800000 ...w...........? 
  22.  
  23. 004f1a7c 3f800000 3f31e4f8 3f800000 3f800000 ...?..1?...?...? 
  24.  
  25. 004f1a8c 3f800000 3f31e4f8 3f800000 3de38800 ...?..1?...?...= 
  26.  
  27. 004f1a9c 3de38800 3d9e1c8a 3c834080 004f3c00 ...=...=.@.<. 
  28.  
  29. 004f1aac 4101c71c 6ba13315 3f800000 4081c71c ...A.3.k...?...@ 

從c45adfbc觀察內存引用,發現另一個指針。第一個值ab69cf80始終表示為指向它所引用的任何地方的指針。指針ab69cf80基本上是我們指針的索引數組。

  1. 0:000> dc c45adfbc 
  2.  
  3. c45adfbc ab69cf80 d3544100 00000003 00000280 ..i..AT......... 
  4.  
  5. c45adfcc 0000055a 00000012 c0c0c0c0 1c3870e2 Z............p8. 
  6.  
  7. c45adfdc 40ad870e 1c3870e2 40ad870e 00000000 ...@.p8....@.... 
  8.  
  9. c45adfec 00000000 c0c0c0c1 6c1d12c0 00000000 ...........l.... 
  10.  
  11. c45adffc c0c0c0c0 ???????? ???????? ???????? ....???????????? 
  12.  
  13. c45ae00c ???????? ???????? ???????? ???????? ???????????????? 
  14.  
  15. c45ae01c ???????? ???????? ???????? ???????? ???????????????? 
  16.  
  17. c45ae02c ???????? ???????? ???????? ???????? ???????????????? 
  18.  
  19. 0:000> dc ab69cf80 
  20.  
  21. ab69cf80 00000001 0000001c 00000010 00000001 ................ // 0000001c is overwritten in the register EDX and EDI before we trigger crash 
  22.  
  23. ab69cf90 ff000000 ff800000 ff008000 ff808000 ................ 
  24.  
  25. ab69cfa0 ff000080 ff800080 ff008080 ff808080 ................ 
  26.  
  27. ab69cfb0 ffc0c0c0 ffff0000 ff00ff00 ffffff00 ................ // ffc0c0c0 where it will be stored in EAX after crash, at the moment it only takes 0xf value in EAX 
  28.  
  29. ab69cfc0 ff0000ff ffff00ff ff00ffff ffffffff ................ 
  30.  
  31. ab69cfd0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 
  32.  
  33. ab69cfe0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 
  34.  
  35. ab69cff0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 

因為我們知道崩潰的路徑,所以可以使用下面的命令簡單地設置一個斷點。該命令將獲得指針值“ edx + eax * 4 + 10”,并檢查其是否滿足0xc0。

  1. bp 6ba13321 ".if (poi(edx+eax*4+10) == 0xc0) {} .else {gc}" 
  2.  
  3. 0:000> g 
  4.  
  5. eax=000000c0 ebx=004f1b40 ecx=c45adfbc edx=ab69cf80 esi=d1200e18 edi=0000001c 
  6.  
  7. eip=6ba13321 esp=004f1a34 ebp=004f1a34 iopl=0 nv up ei pl nz na po ;nc ;
  8.  
  9. cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202 
  10.  
  11. QtCore4!QMatrix::dy+0x48a8: 
  12.  
  13. 6ba13321 8b448210 mov eax,dword ptr [edx+eax*4+10h] ds:002b:ab69d290=???????? 

觀察堆棧,可以看到以下執行:

  1. 004f1a38 6ba3cb98 QtCore4!path_gradient_span_gen::path_gradient_span_gen+0x6a74 
  2.  
  3. 004f1a3c c45adfbc 
  4.  
  5. 004f1a40 00000048 
  6.  
  7. 004f1a44 00000000 
  8.  
  9. 004f1a48 6f13830f verifier!DphCommitMemoryForPageHeap+0x16f 
  10.  
  11. 004f1a4c 004f5cc8 
  12.  
  13. 004f1a50 00000000 
  14.  
  15. 004f1a54 00000000 
  16.  
  17. 004f1a58 00000000 
  18.  
  19. 004f1a5c 00000000 
  20.  
  21. 004f1a60 004f65a0 
  22.  
  23. 004f1a64 004f662c 
  24.  
  25. 004f1a68 00000000 
  26.  
  27. 004f1a6c 779eae8e ntdll!RtlAllocateHeap+0x3e 

如果我們反匯編6ba3cb98,則可以看到以下反匯編代碼,真正的漏洞根本原因在于此代碼。

  1. 6ba3cb89 8b96b4000000 mov edx,dword ptr [esi+0B4h] 
  2.  
  3. 6ba3cb8f 8b4df4 mov ecx,dword ptr [ebp-0Ch] 
  4.  
  5. 6ba3cb92 52 push edx 
  6.  
  7. 6ba3cb93 8bd7 mov edx,edi 
  8.  
  9. 6ba3cb95 ff5580 call dword ptr [ebp-80h] 
  10.  
  11. 6ba3cb98 8b4e7c mov ecx,dword ptr [esi+7Ch] 
  12.  
  13. C pseudo code 
  14.  
  15. grad = *(&ptr_grad); 
  16.  
  17. if ( grad > 0.0099999998 ) 
  18.  
  19.  
  20. input_value = grad_size(checksize, input); 
  21.  
  22. ptr_grad = *(input); 
  23.  
  24. ... cut here ... 

我們在6ba3cb89地址上設置斷點并觀察ESI + 0xB4,我們可以看到一個指針指向另一個位置:

  1. 0:000> r 
  2.  
  3. eax=00000000 ebx=00791878 ecx=00000005 edx=00793938 esi=cb07de18 edi=0000001c 
  4.  
  5. eip=6ba3cb89 esp=00791780 ebp=00791870 iopl=0 nv up ei pl nz na po ;nc ;
  6.  
  7. cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202 
  8.  
  9. QtCore4!path_gradient_span_gen::path_gradient_span_gen+0x6a65: 
  10.  
  11. 6ba3cb89 8b96b4000000 mov edx,dword ptr [esi+0B4h] ds:002b:cb07decc=cf69afbc 
  12.  
  13. 0:000> dc esi+0B4h 
  14.  
  15. cb07decc cf69afbc c0c0c000 00000000 00000100 ..i............. 
  16.  
  17. cb07dedc c0c0c0c0 00000000 00000000 00000000 ................ 
  18.  
  19. cb07deec 00000000 00000000 00000000 00000000 ................ 
  20.  
  21. cb07defc 00000000 cf030fd0 00000000 00000000 ................ 
  22.  
  23. cb07df0c 00000000 00000000 00000000 00000000 ................ 
  24.  
  25. cb07df1c c0c0c0c0 00000000 3ff00000 00000000 ...........?.... 
  26.  
  27. cb07df2c 00000000 00000000 00000000 00000000 ................ 
  28.  
  29. cb07df3c 00000000 00000000 3ff00000 00000000 ...........?.... 
  30.  
  31. 0:000> dc cf69afbc 
  32.  
  33. cf69afbc c88baf80 d1326100 00000003 00000280 .....a2......... 
  34.  
  35. cf69afcc 0000055f 00000012 c0c0c0c0 1c3870e2 _............p8. 
  36.  
  37. cf69afdc 40ad870e 1c3870e2 40ad870e 00000000 ...@.p8....@.... 
  38.  
  39. cf69afec 00000000 c0c0c0c1 6c1d12c0 00000000 ...........l.... 
  40.  
  41. cf69affc c0c0c0c0 ???????? ???????? ???????? ....???????????? 
  42.  
  43. cf69b00c ???????? ???????? ???????? ???????? ???????????????? 
  44.  
  45. cf69b01c ???????? ???????? ???????? ???????? ???????????????? 
  46.  
  47. cf69b02c ???????? ???????? ???????? ???????? ???????????????? 
  48.  
  49. 0:000> dc c88baf80 
  50.  
  51. c88baf80 00000001 0000001c 00000010 00000001 ................ 
  52.  
  53. c88baf90 ff000000 ff800000 ff008000 ff808000 ................ 
  54.  
  55. c88bafa0 ff000080 ff800080 ff008080 ff808080 ................ 
  56.  
  57. c88bafb0 ffc0c0c0 ffff0000 ff00ff00 ffffff00 ................ 
  58.  
  59. c88bafc0 ff0000ff ffff00ff ff00ffff ffffffff ................ 
  60.  
  61. c88bafd0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 
  62.  
  63. c88bafe0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 
  64.  
  65. c88baff0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 

從這里我們可以知道代碼實際上沒有從指針釋放任何東西。一旦移至EDX,EDX將保留指向索引數組的指針:

  1. eax=00000000 ebx=00791878 ecx=00000005 edx=cf69afbc esi=cb07de18 edi=0000001c 
  2.  
  3. eip=6ba3cb8f esp=00791780 ebp=00791870 iopl=0 nv up ei pl nz na po ;nc ;
  4.  
  5. cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202 
  6.  
  7. QtCore4!path_gradient_span_gen::path_gradient_span_gen+0x6a6b: 
  8.  
  9. 6ba3cb8f 8b4df4 mov ecx,dword ptr [ebp-0Ch] ss:002b:00791864=d1326100 
  10.  
  11. 0:000> dc cf69afbc 
  12.  
  13. cf69afbc c88baf80 d1326100 00000003 00000280 .....a2......... 
  14.  
  15. cf69afcc 0000055f 00000012 c0c0c0c0 1c3870e2 _............p8. 
  16.  
  17. cf69afdc 40ad870e 1c3870e2 40ad870e 00000000 ...@.p8....@.... 
  18.  
  19. cf69afec 00000000 c0c0c0c1 6c1d12c0 00000000 ...........l.... 
  20.  
  21. cf69affc c0c0c0c0 ???????? ???????? ???????? ....???????????? 
  22.  
  23. cf69b00c ???????? ???????? ???????? ???????? ???????????????? 
  24.  
  25. cf69b01c ???????? ???????? ???????? ???????? ???????????????? 
  26.  
  27. cf69b02c ???????? ???????? ???????? ???????? ???????????????? 
  28.  
  29. 0:000> dc c88baf80 
  30.  
  31. c88baf80 00000001 0000001c 00000010 00000001 ................ 
  32.  
  33. c88baf90 ff000000 ff800000 ff008000 ff808000 ................ 
  34.  
  35. c88bafa0 ff000080 ff800080 ff008080 ff808080 ................ 
  36.  
  37. c88bafb0 ffc0c0c0 ffff0000 ff00ff00 ffffff00 ................ 
  38.  
  39. c88bafc0 ff0000ff ffff00ff ff00ffff ffffffff ................ 
  40.  
  41. c88bafd0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 
  42.  
  43. c88bafe0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 
  44.  
  45. c88baff0 c0c0c0c0 c0c0c0c0 c0c0c0c0 c0c0c0c0 ................ 

崩潰后的堆棧跟蹤:

  1. 0:000> kvL 
  2.  
  3. # ChildEBP RetAddr Args to Child 
  4.  
  5. 00 012f18d4 6ba3cb98 cc53afbc 00000048 00000000 QtCore4!QMatrix::dy+0x48a8 
  6.  
  7. 01 012f19d0 6b8143ef 00000000 012f1b78 012f1a5c QtCore4!path_gradient_span_gen::path_gradient_span_gen+0x6a74 
  8.  
  9. 02 012f1a30 6b814259 0000002e 012f5bd0 00000000 QtCore4!QBrush::setMatrix+0x234 
  10.  
  11. 03 012f5b14 6b8249a4 0000003b 012f5b68 cc780e18 QtCore4!QBrush::setMatrix+0x9e 
  12.  
  13. 04 012f5b2c 6b80cc84 0000003b 012f5b68 cc780e18 QtCore4!QImage::rect+0x22b 
  14.  
  15. 05 012f5b48 6b857ccc 0000003b 012f5b68 cc780e18 QtCore4!QTransform::inverted+0xec8 
  16.  
  17. 06 012f64dc 6b81c55b 00000000 003c0000 00000000 QtCore4!QSvgFillStyle::setFillOpacity+0x1b59 
  18.  
  19. 07 012f66c0 6b896844 012f6724 cc818ff0 0000001c QtCore4!QPainter::drawPixmap+0x1c98 
  20.  
  21. 08 012f67b4 6d1e0fbd 012f69ec 012f66d4 012f6864 QtCore4!QPainter::drawImage+0x325 
  22.  
  23. 09 012f67d4 6d0dd155 012f6a54 012f69ec 012f6864 kso!GdiDrawHoriLineIAlt+0x11a1a 
  24.  
  25. 0a 012f67ec 6d0c8d88 012f69ec 012f68e0 012f6864 kso!kpt::PainterExt::drawBitmap+0x23 

堆分析:

  1. 0:000> !heap -p -a cc53afbc 
  2.  
  3. address cc53afbc found in 
  4.  
  5. _DPH_HEAP_ROOT @ 6731000 
  6.  
  7. in busy allocation ( DPH_HEAP_BLOCK: UserAddr UserSize - VirtAddr VirtSize) 
  8.  
  9. cc36323c: cc53afa8 58 - cc53a000 2000 
  10.  
  11. 6f13ab70 verifier!AVrfDebugPageHeapAllocate+0x00000240 
  12.  
  13. 77a9909b ntdll!RtlDebugAllocateHeap+0x00000039 
  14.  
  15. 779ebbad ntdll!RtlpAllocateHeap+0x000000ed 
  16.  
  17. 779eb0cf ntdll!RtlpAllocateHeapInternal+0x0000022f 
  18.  
  19. 779eae8e ntdll!RtlAllocateHeap+0x0000003e 
  20.  
  21. 6f080269 MSVCR100!malloc+0x0000004b 
  22.  
  23. 6f08233b MSVCR100!operator new+0x0000001f 
  24.  
  25. 6b726c67 QtCore4!QImageData::create+0x000000fa 
  26.  
  27. 6b726b54 QtCore4!QImage::QImage+0x0000004e 
  28.  
  29. 6b7a0e21 QtCore4!png_get_text+0x00000436 
  30.  
  31. 6b79d7a8 QtCore4!QImageIOHandler::setFormat+0x000000de 
  32.  
  33. 6b79d457 QtCore4!QPixmapData::fromFile+0x000002bf 
  34.  
  35. 6b725eb4 QtCore4!QImageReader::read+0x000001e2 
  36.  
  37. 6d0ca585 kso!kpt::VariantImage::forceUpdateCacheImage+0x0000254e 
  38.  
  39. 6d0c5964 kso!kpt::Direct2DPaintEngineHelper::operator=+0x00000693 
  40.  
  41. 6d0c70d0 kso!kpt::RelativeRect::unclipped+0x00001146 
  42.  
  43. 6d0c8d0c kso!kpt::VariantImage::forceUpdateCacheImage+0x00000cd5 
  44.  
  45. 6d451d5c kso!BlipCacheMgr::BrushCache+0x0000049a 
  46.  
  47. 6d451e85 kso!BlipCacheMgr::GenerateBitmap+0x0000001d 
  48.  
  49. 6d453227 kso!BlipCacheMgr::GenCachedBitmap+0x00000083 
  50.  
  51. 6d29bb92 kso!drawing::PictureRenderLayer::render+0x000009b6 
  52.  
  53. 6d450fb1 kso!drawing::RenderTargetImpl::paint+0x00000090 
  54.  
  55. 6d29b528 kso!drawing::PictureRenderLayer::render+0x0000034c 
  56.  
  57. 6d2a2d83 kso!drawing::VisualRenderer::render+0x00000060 
  58.  
  59. 6d2b8970 kso!drawing::SingleVisualRenderer::drawNormal+0x000002b5 
  60.  
  61. 6d2b86a7 kso!drawing::SingleVisualRenderer::draw+0x000001e1 
  62.  
  63. 6d2b945e kso!drawing::SingleVisualRenderer::draw+0x00000046 
  64.  
  65. 6d3d0142 kso!drawing::ShapeVisual::paintEvent+0x0000044a 
  66.  
  67. 680a2b5c wpsmain!WpsShapeTreeVisual::getHittestSubVisuals+0x000068f1 
  68.  
  69. 6d0e36df kso!AbstractVisual::visualEvent+0x00000051 
  70.  
  71. 6d3cbe97 kso!drawing::ShapeVisual::visualEvent+0x0000018f 
  72.  
  73. 6d0eba90 kso!VisualPaintEvent::arriveVisual+0x0000004e 
  74.  
  75. 0:000> dt _DPH_BLOCK_INFORMATION cc780e18-0x20 
  76.  
  77. verifier!_DPH_BLOCK_INFORMATION 
  78.  
  79. +0x000 StartStamp : 0xc0c0c0c0 
  80.  
  81. +0x004 Heap : 0xc0c0c0c0 Void 
  82.  
  83. +0x008 RequestedSize : 0xc0c0c0c0 
  84.  
  85. +0x00c ActualSize : 0xc0c0c0c0 
  86.  
  87. +0x010 Internal : _DPH_BLOCK_INTERNAL_INFORMATION 
  88.  
  89. +0x018 StackTrace : 0xc0c0c0c0 Void 
  90.  
  91. +0x01c EndStamp : 0xc0c0c0c0 

段中的最后一個堆條目通常是一個空閑塊。堆塊的狀態指示為空閑塊,堆塊聲明前一個塊的大小為00108,而當前塊的大小為00a30。前一塊報告其自身大小為0x20字節,不匹配。位置為05f61000的堆塊的使用似乎是該堆塊的使用導致以下塊的元數據損壞的可能性。堆塊如下:

  1. 0:000> !heap -a 05f60000 
  2.  
  3. Index Address Name Debugging options enabled 
  4.  
  5. 1: 05f60000 
  6.  
  7. Segment at 05f60000 to 0605f000 (00001000 bytes committed
  8.  
  9. Flags: 00000002 
  10.  
  11. ForceFlags: 00000000 
  12.  
  13. Granularity: 8 bytes 
  14.  
  15. Segment Reserve: 00100000 
  16.  
  17. Segment Commit: 00002000 
  18.  
  19. DeCommit Block Thres: 00000200 
  20.  
  21. DeCommit Total Thres: 00002000 
  22.  
  23. Total Free Size: 00000146 
  24.  
  25. Max. Allocation Size: fffdefff 
  26.  
  27. Lock Variable at: 05f60258 
  28.  
  29. Next TagIndex: 0000 
  30.  
  31. Maximum TagIndex: 0000 
  32.  
  33. Tag Entries: 00000000 
  34.  
  35. PsuedoTag Entries: 00000000 
  36.  
  37. Virtual Alloc List: 05f6009c 
  38.  
  39. Uncommitted ranges: 05f6008c 
  40.  
  41. 05f61000: 000fe000 (1040384 bytes) 
  42.  
  43. FreeList[ 00 ] at 05f600c0: 05f605b8 . 05f605b8 
  44.  
  45. 05f605b0: 00108 . 00a30 [100] - free 
  46.  
  47. Segment00 at 05f60000: 
  48.  
  49. Flags: 00000000 
  50.  
  51. Base: 05f60000 
  52.  
  53. First Entry: 05f604a8 
  54.  
  55. Last Entry: 0605f000 
  56.  
  57. Total Pages: 000000ff 
  58.  
  59. Total UnCommit: 000000fe 
  60.  
  61. Largest UnCommit:00000000 
  62.  
  63. UnCommitted Ranges: (1) 
  64.  
  65. Heap entries for Segment00 in Heap 05f60000 
  66.  
  67. address: psize . size flags state (requested size
  68.  
  69. 05f60000: 00000 . 004a8 [101] - busy (4a7) 
  70.  
  71. 05f604a8: 004a8 . 00108 [101] - busy (107) Internal 
  72.  
  73. 05f605b0: 00108 . 00a30 [100] 
  74.  
  75. 05f60fe0: 00a30 . 00020 [111] - busy (1d) 
  76.  
  77. 05f61000: 000fe000 - uncommitted bytes. 
  78.  
  79. 0:000> dd 05f60fe0 
  80.  
  81. 05f60fe0 a9b3c836 03007087 05f6008c 05f6008c 
  82.  
  83. 05f60ff0 05f60038 05f60038 05f61000 000fe000 
  84.  
  85. 05f61000 ???????? ???????? ???????? ???????? 
  86.  
  87. 05f61010 ???????? ???????? ???????? ???????? 
  88.  
  89. 05f61020 ???????? ???????? ???????? ???????? 
  90.  
  91. 05f61030 ???????? ???????? ???????? ???????? 
  92.  
  93. 05f61040 ???????? ???????? ???????? ???????? 
  94.  
  95. 05f61050 ???????? ???????? ???????? ???????? 

0x03 披露時間表

該漏洞于2020年8月報告,披露時間表:

  •  2020-08-04-將電子郵件發送到公開提供的WPS的各種郵件列表(銷售和支持)。
  •  2020-08-10-WPS團隊回應該報告可以轉發給他們。
  •  2020-08-11-要求進一步的信息,例如向適當的渠道披露等。
  •  2020-08-17-根據先前的要求與WPS團隊進行跟進。
  • 2020-08-18-通過電子郵件提供技術報告和概念驗證(未加密)。
  •  2020-08-25-WPS跟進報告進度。
  •  2020-08-26-WPS更新說此問題已轉發給開發團隊。
  • 2020-08-28-WPS發送了一封電子郵件,指出該問題已在最新的下載版本11.2.0.9403中得到解決。
  •  2020-08-28-針對提供的PoC測試了新版本,并確認問題已解決。
  •  2020-08-28-向WPS團隊尋求咨詢或更改日志更新。
  •  2020-09-03-申請漏洞CVE。
  •  2020-09-14-已分配CVE編號:CVE-2020-25291。

 本文翻譯自:http://zeifan.my/security/rce/heap/2020/09/03/wps-rce-heap.html如若轉載,請注明原文地址。

 

責任編輯:姜華 來源: 嘶吼網
相關推薦

2015-06-03 10:21:44

漏洞溢出漏洞9patch

2015-09-25 16:18:36

2021-09-23 15:20:18

微軟漏洞代碼

2020-10-19 10:43:49

漏洞

2011-05-11 15:43:05

Kingsoft Of金山WPSAndroid

2020-09-28 10:20:30

漏洞

2017-05-25 22:20:05

2021-02-09 10:31:04

漏洞webWordPress F

2017-01-19 20:37:58

office word漏洞下溢

2022-06-14 09:00:21

漏洞補丁

2017-05-27 10:22:37

2022-07-12 19:43:41

WPSOffice

2018-04-17 14:41:41

Java堆內存溢出

2020-12-17 10:28:27

漏洞網絡攻擊網絡安全

2020-10-12 10:28:15

漏洞內存破壞網絡攻擊

2021-02-07 14:39:22

Falco漏洞安全工具

2023-10-05 06:17:16

2011-10-28 16:20:52

金山WPSLinux

2020-12-28 10:23:00

中間人攻擊漏洞Kubernetes
點贊
收藏

51CTO技術棧公眾號

91精品国产免费久久久久久| 欧美日韩亚洲国产| 日韩激情毛片| 中文字幕一区二区三区在线观看| 91精品成人久久| 国产中年熟女高潮大集合| 国产 日韩 欧美 精品| 波多野结衣在线观看一区二区三区 | 日本中文字幕精品—区二区| 亚洲人成色777777精品音频| 欧美日韩国产在线一区| 欧美日韩国产影片| 婷婷亚洲婷婷综合色香五月| 久草国产在线视频| 国产一区二区久久久久| 国产精品色哟哟网站| 国产91亚洲精品| 黄色a一级视频| 麻豆mv在线看| av在线不卡免费看| 51色欧美片视频在线观看| www.四虎在线| 888av在线视频| 亚洲天堂免费| 欧美一级片在线| 欧洲金发美女大战黑人| 国产v片在线观看| 亚洲天堂免费| 在线观看亚洲区| 手机av在线网| 在线免费av导航| 国产成人免费在线| 久久久久久久爱| 国产精品久久AV无码| 在线精品亚洲欧美日韩国产| 久久久久久久免费视频了| 国产99在线|中文| 日韩久久久久久久久| 亚洲+小说+欧美+激情+另类| 色综合久久六月婷婷中文字幕| 农村寡妇一区二区三区| 夜夜躁日日躁狠狠久久av| 日韩欧美国产精品综合嫩v| 欧美情侣在线播放| av在线无限看| 怡红院红怡院欧美aⅴ怡春院| 国产无遮挡一区二区三区毛片日本| 国产精品扒开腿做| 国产在线一卡二卡| 精品资源在线| 欧美性色综合网| 激情视频小说图片| 精品美女在线观看视频在线观看| 国产白丝网站精品污在线入口| 性欧美xxxx交| www.涩涩爱| caoporn成人| 在线观看一区不卡| 久久久久久久香蕉| 国产在线观看黄| 国产91丝袜在线播放| 91沈先生在线观看| www欧美在线| 亚洲一本二本| 久久成人人人人精品欧| 久久久久久久久久久国产精品| 成人毛片免费| 亚洲成人免费在线| 香蕉视频在线网址| 日本电影一区二区在线观看| 激情综合亚洲精品| 欧洲精品在线视频| 九九视频免费观看| 91久久亚洲| 成人97在线观看视频| 亚洲综合网在线| 亚洲私拍自拍| 久久亚洲精品一区二区| 国产又黄又爽又无遮挡| 成人在线免费观看91| 在线观看视频亚洲| 妺妺窝人体色www婷婷| 亚洲精品孕妇| 国产精品美乳在线观看| 日本天堂网在线| 免费黄网站欧美| 青青a在线精品免费观看| 无码久久精品国产亚洲av影片| 另类人妖一区二区av| 2025国产精品视频| 中文字字幕在线观看| 久久高清国产| 97婷婷涩涩精品一区| 午夜久久久久久久久久影院| 99热免费精品| 国内伊人久久久久久网站视频 | 婷婷一区二区三区| 91大学生片黄在线观看| 蜜桃av在线| 91精品欧美久久久久久动漫| 天堂中文视频在线| 日本一区二区三区视频在线看| 在线国产亚洲欧美| 91精品国产三级| 二区三区精品| 亚洲乱码一区二区| 91中文字幕永久在线| 香蕉久久精品| 欧美精品一本久久男人的天堂| 夫妻性生活毛片| 国产精品毛片一区二区在线看| 永久555www成人免费| 国产一级二级三级| 久久国产电影| 68精品久久久久久欧美| 国产suv精品一区二区69| 欧美经典一区二区三区| 水蜜桃一区二区| 91高清视频在线观看| 欧美日韩免费在线视频| 亚洲av无码一区二区二三区| 国产精品地址| 91欧美激情另类亚洲| 国产精品久久一区二区三区不卡| 久久久激情视频| 成人一级生活片| 91丝袜在线| 日韩视频国产视频| 在线日韩国产网站| 欧美天天视频| 91免费视频网站| 欧美性天天影视| 一区二区三区在线观看视频| 日本精品久久久久久久久久| 国产精品vvv| 在线视频中文字幕一区二区| 老司机免费视频| 精品freesex老太交| 日韩在线中文字| 欧美成人一二三区| 激情五月播播久久久精品| 亚洲欧美国产不卡| 欧美videossex| 色嗨嗨av一区二区三区| 久久久久xxxx| 免费观看成人www动漫视频| 亚洲人免费视频| 91制片厂在线| 激情五月***国产精品| 日本精品视频在线观看| 天天干,夜夜操| 国产精品午夜春色av| 精品嫩模一区二区三区| 国产成人久久精品一区二区三区| 日韩中文娱乐网| 一区二区三区www污污污网站| 国产成人aaa| 少妇久久久久久被弄到高潮| 狂野欧美xxxx韩国少妇| 日韩精品久久久久| 夫妻性生活毛片| 国产一区二区不卡老阿姨| 久久久国产精品一区二区三区| 2017亚洲天堂1024| 精品久久久久久中文字幕一区奶水| 伊人久久久久久久久| 欧美午夜精彩| 国产日韩欧美在线| 色就是色亚洲色图| 日本韩国欧美三级| 午夜精品久久久久99蜜桃最新版 | 天天插综合网| 97视频热人人精品| 成年人在线观看| 午夜天堂影视香蕉久久| 日本不卡一区二区在线观看| 国产精品久久久久久| av一区二区三区四区电影| √天堂资源地址在线官网| 欧美精品在线视频| 国产又黄又粗视频| 一本久久综合| 视频一区免费观看| 试看120秒一区二区三区| 91a在线视频| 伊人在线视频| 欧洲国产伦久久久久久久| www.xx日本| av激情亚洲男人天堂| 奇米影音第四色| av中文字幕一区二区| 91亚洲精品一区二区| av漫画网站在线观看| 亚洲网站视频福利| 日韩精品久久久久久免费| 99久久精品国产精品久久| 国产日韩亚洲欧美在线| 美女亚洲一区| 国产91在线播放九色快色| 黄色免费在线观看| 精品视频久久久久久久| av黄色在线播放| 日韩一区有码在线| 欧美激情第一区| 五月天久久777| 久久精品第九区免费观看| 亚洲高清国产拍精品26u| 色偷偷91综合久久噜噜| 日韩中文字幕观看| 午夜精品一区在线观看| 91麻豆精品久久毛片一级| 91啦中文在线观看| 国产精品欧美激情在线观看| 精品影片在线观看的网站| 亚洲在线观看视频网站| 日本三级在线观看网站| 日韩免费观看高清完整版| 久久久久久久国产精品毛片| 中文字幕精品综合| 日本少妇色视频| 成人综合婷婷国产精品久久| 国产日本在线播放| 亚洲一区 二区 三区| 亚洲精品乱码久久久久久蜜桃91 | 欧美精品一区二区久久久| 久久免费精彩视频| 中文字幕一区二区三区在线观看| 香蕉视频久久久| 2021国产精品久久精品| 亚洲视频在线a| 久久中文视频| 成人自拍网站| 中日韩脚交footjobhd| 在线视频欧美性高潮| 国产又粗又猛又黄又爽| 亚洲国产一区二区三区| 亚洲一区二区三区蜜桃| av在线播放成人| 影音先锋资源av| 国产99久久久国产精品潘金| 亚洲一区二区图片| 国产精品亚洲一区二区三区妖精| 分分操这里只有精品| 尤物tv在线精品| 麻豆传媒一区二区| 香蕉久久夜色精品国产使用方法| 国产伦理一区二区三区| 韩国成人在线| 国产精品盗摄久久久| 色综合一本到久久亚洲91| 久久九九热免费视频| 黄色av免费观看| 精品免费视频一区二区| 日韩精选在线观看| 欧美在线观看视频在线| 18国产免费视频| 制服丝袜亚洲精品中文字幕| 国产视频一二三四区| 日韩欧美在线视频观看| www欧美com| 一区二区三区成人| 亚洲色图欧美色| 99久久精品国产麻豆演员表| 成人h动漫精品一区| 久久精品这里都是精品| 中文字幕伦理片| 亚洲色图制服诱惑| 性猛交娇小69hd| 国产精品国产三级国产普通话99| 国产黄a三级三级| 亚洲精品乱码久久久久久日本蜜臀| 欧美成人一区二区三区高清| 欧美日韩精品国产| 欧美日韩国产精品综合| 亚洲成人免费av| 国产99免费视频| 欧美一级免费大片| 亚洲三级黄色片| 最新国产精品拍自在线播放| 成人日韩欧美| 日韩亚洲国产中文字幕| 国产毛片av在线| 久久精品国产亚洲7777| av在线加勒比| 国产精品免费久久久| 亚洲精品在线国产| 51国产成人精品午夜福中文下载| 成人福利一区| 亚洲成人蜜桃| 亚洲大胆在线| 在线观看国产一级片| 成人av中文字幕| 无码人妻一区二区三区一| ww亚洲ww在线观看国产| 国产67194| 色av综合在线| 欧美一区二区三区成人片在线| 国产一区二区黑人欧美xxxx| 男女在线观看视频| 国产精品自拍偷拍| 福利一区在线| 国产免费高清一区| 琪琪久久久久日韩精品| 一区二区三区|亚洲午夜| 久久大综合网| 成熟丰满熟妇高潮xxxxx视频| 狠狠爱综合网| 亚洲综合欧美在线| 2020国产成人综合网| 欧美日韩精品亚洲精品| 欧洲精品在线观看| 完全免费av在线播放| 久久综合偷偷噜噜噜色| 视频一区二区综合| 国产精品美女久久久| 一区二区传媒有限公司| 国产自产v一区二区三区c| 人妻aⅴ无码一区二区三区| 亚洲午夜三级在线| 99久久免费国产精精品| 在线视频欧美日韩| 成人影院av| 国产在线一区二区三区播放| 亚洲精品99| 97碰在线视频| 激情综合网最新| 摸摸摸bbb毛毛毛片| 丰满岳妇乱一区二区三区| 粉嫩av一区二区夜夜嗨| 欧美精品日韩三级| 成人乱码手机视频| 在线观看成人一级片| 午夜久久黄色| 亚欧无线一线二线三线区别| 国产盗摄精品一区二区三区在线| 国产又粗又猛又爽又黄的视频小说 | 日韩电影在线观看永久视频免费网站| 26uuu亚洲电影在线观看| 国产在线播放不卡| 91亚洲国产高清| 天天操狠狠操夜夜操| 国产精品免费丝袜| 一二三四区在线| 日韩欧美高清一区| av在线免费观看网址| 91欧美精品成人综合在线观看| 四虎成人精品永久免费av九九| 欧美日韩亚洲自拍| 国产精品传媒视频| 国产又大又黑又粗| 精品少妇一区二区30p| 最新日韩精品| 欧美一区二区三区电影在线观看| 99精品电影| av在线免费看片| 亚洲欧美激情一区二区| 中文字字幕在线中文| 国产视频欧美视频| 欧美在线va视频| 亚洲一区二区高清视频| 国产一区在线观看视频| 欧美黑吊大战白妞| 亚洲白拍色综合图区| 悠悠资源网亚洲青| 亚洲第一综合| 国产乱人伦偷精品视频不卡| 国产一级av毛片| 亚洲美女精品成人在线视频| 香蕉久久免费电影| 国产精品毛片va一区二区三区| 亚洲精品女人| 亚洲av无码国产精品麻豆天美| 欧洲精品一区二区三区在线观看| 免费av在线网站| 国产经品一区二区| 奶水喷射视频一区| 国产91在线播放九色| 精品美女一区二区三区| 综合毛片免费视频| 亚洲第一综合网站| 麻豆国产欧美日韩综合精品二区 | 欧美日韩国产在线播放| 国产综合在线观看| 亚洲一区二区三区乱码aⅴ| 亚洲精一区二区三区| 麻豆视频免费在线播放| 精品国产乱码久久久久久老虎| 欧美羞羞视频| www.69av| 欧美激情综合网| 高清毛片aaaaaaaaa片| 日本一本a高清免费不卡| 女同性一区二区三区人了人一| 日韩一级视频在线观看| 制服视频三区第一页精品| 欧美13videosex性极品| 国产一二三四区在线观看| 国产亚洲综合在线| 老牛影视av牛牛影视av| 国产精品一区二区三区在线播放 |