This releases contains primarily:
- Performance improvements on rules that uses regex or hex strings with
complex alternations (for example,{ ( AA ?? BB ) | ( CC ?? DD ) }.
This can brings up to a 50% reduction to scan duration for rule sets
that contain such rules. - A change in some parsing limits that could be used in very complex rules.
The limits have been raised and are now configurable if needed. - A compatibility with free-threaded python for
boreal-py. - A way to provide a value for the
pe.is_signedsymbol, so that this
value can be computed externally and used in yara rules.
See the complete changelog for details.
boreal-parser
Added
- Allow configuring a few previously hardcoded parsing limits. There were two
limits used to prevent stack overflows that were hardcoded. Those limits
have been raised (since they were hit in legitimate rules), and they
are additionally configurable inboreal,boreal-pyandboreal-cli
if needed. #241
Changed
- The hardcoded parsing limits used to prevent stack overflows have been
raised. #241 codespan-reportingupgraded to 0.13.
boreal
Added
- Add a way to provide a value for the
pe.is_signedsymbol. A new
PeDataobject can be used to provide this value before scanning.
#246 - Expose the new configurable parsing limits in
CompilerParams:
parse_expression_recursion_limitandparse_string_recursion_limit.
raised. #241
Changed
- Some significant scan duration improvements thanks to changes in the
atoms extraction logic. Improvements range from 0 to up to 40-50%
for some rule sets. #245 - Some dependencies upgrade:
windows-sysupgraded to 0.61mach2upgraded to 0.6 (used withprocessfeature on macos targets).tlsh2upgraded to 1.1.0codespan-reportingupgraded to 0.13objectupgraded to 0.37
Fixed
- Fix possible duplicated matches for very specific rules where the
same literal is repeated in alternatives branches of a regex. This
could impact rules that depends on a count of the number of matches
of those strings. #244 - Fix value of
process_memorywhen scanning processes: this value
was not properly set to true in this context. This could impact
a few values from theelf,pe,machoanddotnetmodules.
#245
boreal-py
Added
- Add two new parameters that were previously only settable through
the global configuration (boreal.set_config):max_match_datain the match method.max_strings_per_rulein the compile method.
This allows setting those parameters without using a global config
which impacts all invocations. #236
- Expose a few additional compile options that were available in
boreal
but not configurable inboreal-py:max_condition_depth,
parse_expression_recursion_limitandparse_string_recursion_limit.
#243
Changed
- Make the library free-threaded. It can now be used with free-threaded python
without requiring the GIL to be used. #238 pyo3upgraded to 0.27
boreal-cli
Added
- Add a few additional options that were previously configurable in
boreal
but not exposed inboreal-cli: #243--match-max-length--max-condition-lepth--disable-includes
Make the newly configurable parsing limits available inboreal-clias well.--parse-expression-recursion-limit--parse-string-recursion-limit