Skip to content

Error when running oledump.plugin_biff - UnboundLocalError: local variable 'stringValue' referenced before assignment #674

@bressiers

Description

@bressiers

Hi folks,

Trying to perform systematic scan of office files sent by some customers, and facing this issue with olevba with one malware spotted by another tool.

Thx for your set of tools first, and for checking that issue as well :)

Affected tool:
olevba

Describe the bug
For one particular malware xls file, olevba is crashing and not extracting macros

File/Malware sample to reproduce the bug
sha256 0fca202016369aa44b281470c9c7f7b8dc9653802995faeadb09bebab33685da
md5 47f5f19bafd5969dc41307e16de798b9

Get archive of the file here inv_397145572_1781481758.xls.zip
protected by "oledump.plugin_biff"

How To Reproduce the bug
olevba /tmp/officescan/inv_397145572_1781481758.xls

Expected behavior
extract the malicious macro, and not crash :)

Console output / Screenshots

olevba 0.56.1 on Python 2.7.18 - http://decalage.info/python/oletools
INFO     Opening OLE file /tmp/officescan/inv_397145572_1781481758.xls
INFO     Check whether OLE file is PPT
DEBUG    using open OleFileIO
DEBUG    File appears not to be a ppt file (In stream "root" for field "listdir" found value "[u'\x05documentsummaryinformation', u'\x05summaryinformation', u'book']" but expected Current User!)
FILE: /tmp/officescan/inv_397145572_1781481758.xls
Type: OLE
DEBUG    detect vba macros
DEBUG    VBA_Parser.find_vba_projects
DEBUG    Checking DirEntry #0
DEBUG    Checking DirEntry #1
DEBUG    Reading data from stream u'Book' - size: 255780 bytes
DEBUG    Read 255780 bytes
DEBUG    '\t\x08\x08\x00\x00\x05\x05\x00\x177\xcd\x07\xe1\x00\x00\x00\xc1\x00\x02\x00\x00\x00\xbf\x00\x00\x00\xc0\x00\x00\x00\xe2\x00\x00\x00\\\x00p\x00\x015                                                            '...[much more data]...'\x00\x00\xab\x00"\x00 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x02\x00\x92\x04\n\x00\x00\x00'
DEBUG    Checking DirEntry #2
DEBUG    Reading data from stream u'\x05SummaryInformation' - size: 4096 bytes
DEBUG    Read 4096 bytes
DEBUG    "\xfe\xff\x00\x00\x06\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\xe0\x85\x9f\xf2\xf9Oh\x10\xab\x91\x08\x00+'\xb3\xd90\x00\x00\x00\x84\x00\x00\x00\x06\x00\x00\x00\x01\x00\x00\x008\x00\x00\x00\x08\x00\x00\x00@\x00\x00\x00\x12\x00\x00\x00L\x00\x00\x00\x0c\x00\x00\x00d\x00\x00\x00\r\x00\x00\x00p\x00\x00\x00\x13\x00\x00\x00"...[much more data]...'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DEBUG    Checking DirEntry #3
DEBUG    Reading data from stream u'\x05DocumentSummaryInformation' - size: 4096 bytes
DEBUG    Read 4096 bytes
DEBUG    '\xfe\xff\x00\x00\x06\x02\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x02\xd5\xcd\xd5\x9c.\x1b\x10\x93\x97\x08\x00+,\xf9\xae0\x00\x00\x00\xd0\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x000\x00\x00\x00\x0b\x00\x00\x008\x00\x00\x00\x10\x00\x00\x00@\x00\x00\x00\r\x00\x00\x00H\x00\x00\x00\x0c\x00\x00\x00\x8d\x00\x00\x00\x02\x00\x00\x00'...[much more data]...'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
DEBUG    detect xlm macros
DEBUG    Found Excel stream 'Book'
DEBUG    Running BIFF plugin from oledump
ERROR    Error when running oledump.plugin_biff, please report to https://github.com/decalage2/oletools/issues
Traceback (most recent call last):
  File "/home/simon/.local/lib/python2.7/site-packages/oletools/olevba.py", line 3350, in detect_xlm_macros
    self.xlm_macros = biff_plugin.Analyze()
  File "/home/simon/.local/lib/python2.7/site-packages/oletools/thirdparty/oledump/plugin_biff.py", line 1657, in Analyze
    parsedExpression, stack = ParseExpression(expression, definesNames, sheetNames, options.cellrefformat)
  File "/home/simon/.local/lib/python2.7/site-packages/oletools/thirdparty/oledump/plugin_biff.py", line 1197, in ParseExpression
    stack.append('"' + stringValue + '"')
UnboundLocalError: local variable 'stringValue' referenced before assignment
No VBA macros found.

DEBUG    Checking for encryption (normal)
DEBUG    is_encrypted
DEBUG    Checking for encryption using msoffcrypto
INFO     msoffcrypto failed to interpret file /tmp/officescan/inv_397145572_1781481758.xls or determine whether it is encrypted: Unrecognized file format
DEBUG    Checking for encryption in OLE file
DEBUG    no encryption detected
DEBUG    will exit now with code 0

Version information:

  • OS: Ubuntu
  • OS version: 20.04 - x86_64
  • Python version: 2.7.18
  • oletools version: olevba 0.56.1 on Python 2.7.18

Metadata

Metadata

Assignees

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions