mcrit
mcrit copied to clipboard
Error with SMDA opcode handling during escaping while report submission
seems to occur with certain samples from malpedia batch processed SMDA reports, investigate and fix.
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/falcon/app.py", line 425, in __call__
mcrit-server | responder(req, resp, **params)
mcrit-server | File "/opt/mcrit/mcrit/server/utils.py", line 51, in wrapper
mcrit-server | func(*args, **kwargs)
mcrit-server | File "/opt/mcrit/mcrit/server/SampleResource.py", line 127, in on_post_collection
mcrit-server | summary = self.index.addReportJson(req.media, username=username)
mcrit-server | File "/opt/mcrit/mcrit/index/MinHashIndex.py", line 327, in addReportJson
mcrit-server | return self.addReport(report, calculate_hashes=calculate_hashes, calculate_matches=calculate_matches, username=username)
mcrit-server | File "/opt/mcrit/mcrit/index/MinHashIndex.py", line 311, in addReport
mcrit-server | sample_entry = storage.addSmdaReport(smda_report)
mcrit-server | File "/opt/mcrit/mcrit/storage/MongoDbStorage.py", line 650, in addSmdaReport
mcrit-server | function_dicts.append(self._getFunctionDocument(sample_entry, smda_function, function_id))
mcrit-server | File "/opt/mcrit/mcrit/storage/MongoDbStorage.py", line 999, in _getFunctionDocument
mcrit-server | function_entry = FunctionEntry(sample_entry, smda_function, function_id)
mcrit-server | File "/opt/mcrit/mcrit/storage/FunctionEntry.py", line 56, in __init__
mcrit-server | self.num_instructions = smda_function.num_instructions
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/common/SmdaFunction.py", line 81, in num_instructions
mcrit-server | return sum([1 for ins in self.getInstructions()])
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/common/SmdaFunction.py", line 81, in <listcomp>
mcrit-server | return sum([1 for ins in self.getInstructions()])
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/common/SmdaFunction.py", line 119, in getInstructions
mcrit-server | for block in self.getBlocks():
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/common/SmdaFunction.py", line 110, in getBlocks
mcrit-server | yield SmdaBasicBlock(block, smda_function=self)
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/common/SmdaBasicBlock.py", line 25, in __init__
mcrit-server | self.opcblockhash = self.getOpcBlockHash()
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/common/SmdaBasicBlock.py", line 51, in getOpcBlockHash
mcrit-server | opcblockhash_sequence = self.getOpcBlockHashSequence()
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/common/SmdaBasicBlock.py", line 62, in getOpcBlockHashSequence
mcrit-server | escaped_binary_seqs.append(instruction.getEscapedToOpcodeOnly(self.smda_function._escaper))
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/common/SmdaInstruction.py", line 87, in getEscapedToOpcodeOnly
mcrit-server | return escaper.escapeToOpcodeOnly(self)
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/intel/IntelInstructionEscaper.py", line 443, in escapeToOpcodeOnly
mcrit-server | cap_ins = ins.getDetailed()
mcrit-server | File "/usr/local/lib/python3.10/dist-packages/smda/common/SmdaInstruction.py", line 66, in getDetailed
mcrit-server | assert len(with_details) == 1
mcrit-server | AssertionError