After chasing docs back and forth and trying small variations, I think I've found what's arguably a bug in Clam's YARA implementation.

These two YARA rules should both match exactly the same, but don't. The first will only match if the condition is changed to indicate a single match in some variation (either "#a > 0" or just "$a" both match).

rule data1 {
  strings:
    $a = /<script type="text\/javascript">functionsendemail.?\(\)\{/
  condition:
    #a > 3
}

rule data2 {
  strings:
$a = { 3c 73 63 72 69 70 74 20 74 79 70 65 3d 22 74 65 78 74 2f 6a 61 76 61 73 63 72 69 70 74 22 3e 66 75 6e 63 74 69 6f 6e 73 65 6e 64 65 6d 61 69 6c [0-1] 28 29 7b }
  condition:
    #a > 3
}

While chasing this back and forth I confirmed that simple text string repetition also works fine. I also confirmed that individual regex matches on each observed character variation in the sample file also worked, including when bundled into a single rule with a condition of "all of them", so it's not that it couldn't match any particular expected instance of the string.

-kgd

_______________________________________________

clamav-users mailing list
clamav-users@lists.clamav.net
https://lists.clamav.net/mailman/listinfo/clamav-users


Help us build a comprehensive ClamAV guide:
https://github.com/vrtadmin/clamav-faq

http://www.clamav.net/contact.html#ml

Reply via email to