mcrit icon indicating copy to clipboard operation
mcrit copied to clipboard

Error with SMDA opcode handling during escaping while report submission

Open danielplohmann opened this issue 3 months ago • 0 comments

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

danielplohmann avatar Sep 12 '25 08:09 danielplohmann