正規表現のインスタンスを毎回作成しないように修正
nishikawaakira opened this issue · 5 comments
検知部分各所で正規表現のインスタンスを毎回作成して検知処理を行っているが、
速度の低下を招くため、初期設定として行うように修正する
@ichiichi11
src/detections/utils.rs のcheck_command内のis_matchで合致した中でさらに正規表現のインスタンス作成しているかと思いますが、これらのif文の中の正規表現もインスタンスをキャッシュしておいた方がいいですかね?
@nishikawaakira
whitelist.txtの中身が2行で、regexes.txtの中身が18行あるので、ふたつ併せてRegexクラスを生成するのは20回です。
一方、check_command()とかcheck_obfu()とかのif文内でRegexクラスを生成しているのは7-8箇所位あるかなと思います。
if文の中は必ず呼び出されるわけではないですが、20回に対する数回は無視できない回数な気がするので、
一応対応しておいた方がいいと思います。
あと、DeepBlueCLIに入っているmany-events-security.evtxというファイルで比較すると、
正規表現のキャッシュの有無でパフォーマンスの違いが分かり易く出ると思います。
@ichiichi11
ちょっと確認ですがcheck_obfuを出しているということは、check_regexとcheck_obfuの話ではないですかね?
そこは私も対応が必要な認識です。
下記とかの話です。
https://github.com/YamatoSecurity/RustyBlue/blob/83e252022454fb6f9485d278506b4b54cbf8cda4/src/detections/utils.rs#L49
@nishikawaakira
上記に挙げてもらった3つも含めて、
utils.rsの中でRegex::newを呼び出している全ての箇所で対応が必要だと考えています。
@ichiichi11 承知しましたー