This is fairly easy to do with header_filter_rules, but it requires 3 rules because of the possibility of a message with no Subject: header at all.
The first rule should have one or more regexps that match Subject: headers which are empty or have values like 'no subject', (no subject)', '(no_subject)', etc. A single regexp that will match most of these cases is
^Subject:\s*([[{(]?no[_ ]subject[]})]?)?\s*$
This rule should have whatever action you want to take on these messages.
Then you need a second rule with regexp
^Subject:
and action Accept to pass the remaining messages with Subject: headers.
Finally, you need a third rule with the same action as the first and a regexp
^
or any other regexp that will match anything to apply the action to messages with no Subject: header at all.
If you already have some header_filter_rules, add the second and third rules above at the end and insert the first rule above in a position depending on its priority with respect to the other rules.