I can't agree enough. I'm relatively new to openioc, but from playing
with it over the last month or so there's lot of ways to go wrong with
an implementation of a program to handle IOCs.
I think an optimizer would be a great first step especially if it
worked along the lines of database stored proc 'compilers' where they
work out an execution plan that would take a least-cost route to
completing the IOC query.
For example on live systems, examining the running processes is almost
always the fastest route to completion, so if an IOC has that OR a
mass 'file like *exe' with hash zbcd... then the best execution path
is to ignore the file test and complete the process check first.
Coding that logic, however is a real challenge! Especially as you note
you can easily create a nonsense IOC, contradictory IOC, etc.
Jeff.