[Oisf-devel] PCRE '/R' bug?
Anoop Saldanha
anoopsaldanha at gmail.com
Wed Feb 5 03:49:39 UTC 2014
Will,
Right. For cases where there's no previous relative content specified
before a within/distance content, we would treat it like offset/depth.
I think this was done more to have some sort of uniformity between
sticky buffers that allowed such a scheme in snort(dce_stub_data
required this previously), although it doesn't seem necessary.
Maybe some sort of warning message is in order!?
On Wed, Feb 5, 2014 at 2:56 AM, Will Metcalf <william.metcalf at gmail.com> wrote:
> If Suri supports it first, is it breaking compat with snort? (I think this
> was the case..) I would say that the bug is that suri 2.0 does not give an
> error on this condition. Unless the decision was made to treat
> distance/within like depth/offset. when no previous buffer was specified.
> While this might be snort compat, I think it's a bad choice. depth/offset
> should be from the start of packet/stream/buffer distance/within should be
> forced to have a previous match in the same packet/stream/buffer IMHO.
>
> Regards,
>
> Will
>
>
> On Tue, Feb 4, 2014 at 3:08 PM, rmkml <rmkml at yahoo.fr> wrote:
>>
>> Thx Will for feedback,
>>
>> Yes you are right, pcre IR or UR work (sid 3 and 6),
>> but before suri v2.0beta2, suri errors if pcre R+^ relative
>> http_raw_uri/http_uri (sid 2 and 5).
>> Maybe back error on suri v2 ? (because suri not fire)
>>
>> FYI, snort v2960 fire if pcre R+^ relative http_raw_uri/http_uri (sid 2
>> and 5).
>> but errors if pcre IR or UR... (sid 3 and 6)
>> (break suri / snort compatibility?)
>>
>> Tested with:
>> alert tcp any any -> any 80 (msg:"Testing Rule1"; content:"baduricontent";
>> http_raw_uri; pcre:"/[a-z]{5}\.html/R"; sid:1; rev:2;)
>> alert tcp any any -> any 80 (msg:"Testing Rule2"; content:"baduricontent";
>> http_raw_uri; pcre:"/^[a-z]{5}\.html/R"; sid:2; rev:2;)
>> alert tcp any any -> any 80 (msg:"Testing Rule3"; content:"baduricontent";
>> http_raw_uri; pcre:"/^[a-z]{5}\.html/IR"; sid:3; rev:2;)
>> alert tcp any any -> any 80 (msg:"Testing Rule4"; content:"baduricontent";
>> http_uri; pcre:"/[a-z]{5}\.html/R"; sid:4; rev:2;)
>> alert tcp any any -> any 80 (msg:"Testing Rule5"; content:"baduricontent";
>> http_uri; pcre:"/^[a-z]{5}\.html/R"; sid:5; rev:2;)
>> alert tcp any any -> any 80 (msg:"Testing Rule6"; content:"baduricontent";
>> http_uri; pcre:"/^[a-z]{5}\.html/UR"; sid:6; rev:2;)
>>
>> (pcap previously sended)
>>
>> Regards
>> @Rmkml
>>
>>
>>
>> On Tue, 4 Feb 2014, Will Metcalf wrote:
>>
>>> You need to specify relative pcre matches like this, then it works...
>>> Note the "I".
>>> alert tcp any any -> any 80 (msg:"Testing Rule"; content:"baduricontent";
>>> http_raw_uri; pcre:"/^[a-z]{5}\.html/IR"; sid:2; rev:2;)
>>>
>>>
>>>
>>> On Tue, Feb 4, 2014 at 9:50 AM, rmkml <rmkml at yahoo.fr> wrote:
>>> Thx Anoop,
>>>
>>> opened Suricata redmine ticket #1098.
>>>
>>> Thx for your time.
>>> @Rmkml
>>>
>>>
>>> On Mon, 3 Feb 2014, Anoop Saldanha wrote:
>>>
>>> rmkml,
>>>
>>> If that specific case isn't firing, that's a bug indeed. Can you
>>> please open a ticket for it?
>>>
>>> On Sat, Feb 1, 2014 at 3:58 AM, rmkml <rmkml at yahoo.fr> wrote:
>>> Hi Harley,
>>>
>>> Yes it's not work on Suricata v1.4.7 but fire on v2.0 beta 2.
>>>
>>>
>>> oisf-devel: But maybe you have another bug on Suricata v2.0 beta 2,
>>> I'm
>>> explain:
>>> If you add ^ on pcre begin, suricata not fire with this uri:
>>> baduricontentabcde.html
>>> (It's fire on snort)
>>>
>>> fire on suri v2:
>>> alert tcp any any -> any 80 (msg:"Testing Rule";
>>> content:"baduricontent";
>>> http_raw_uri; pcre:"/[a-z]{5}\.html/R"; sid:1; rev:2;)
>>>
>>> not fire on suri v2:
>>> alert tcp any any -> any 80 (msg:"Testing Rule";
>>> content:"baduricontent";
>>> http_raw_uri; pcre:"/^[a-z]{5}\.html/R"; sid:2; rev:2;)
>>>
>>> Tested with: wget http://google.com/baduricontentabcde.html
>>> (joigned pcap file)
>>>
>>> Anyone confirm please ?
>>>
>>> Regards
>>> @Rmkml
>>>
>>>
>>>
>>>
>>>
>>> On Fri, 31 Jan 2014, Harley H wrote:
>>>
>>> Good catch but that's a typo. I typed the rule in vice
>>> copying/pasting
>>> like I should have.
>>>
>>>
>>> On Fri, Jan 31, 2014 at 5:02 PM, Edward Fjellsk?l
>>> <edwardfjellskaal at gmail.com> wrote:
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA1
>>>
>>> "/[a-z]{5}.html"/R"
>>>
>>>
>>> is there a " to much?
>>>
>>> E
>>>
>>> On 01/31/2014 10:40 PM, Harley H wrote:
>>> Hello, I was going to submit this through Redmine but I'm not
>>> receiving the account activation email. I'm trying to write a rule
>>> like this:
>>>
>>> alert tcp $HOME_NET any -> $EXTERNAL_NET $WEB_PORTS (msg: "Testing
>>> Rule"; content: "baduricontent"; http_raw_uri; pcre:
>>> "/[a-z]{5}.html"/R"; sid: 123; rev: 1;)
>>>
>>> But am receiving this error message:
>>>
>>> 31/1/2014 -- 16:19:25 - <Error> - [ERRCODE:
>>> SC_ERR_INVALID_SIGNATURE(39)] - No preceding content or uricontent
>>> or pcre option 31/1/2014 -- 16:19:25 - <Error> - [ERRCODE:
>>> SC_ERR_INVALID_SIGNATURE(39)] - error parsing signature "alert tcp
>>> $HOME_NET any -> $EXTERNAL_NET any (msg: "Testing URL"; content:
>>> "baduricontent"; http_raw_uri; pcre: "/[a-z]{5}\.html/R"; sid:
>>> 98765; rev: 1;)" from file
>>> /root/Desktop/Local_Workspace/IDS_Rules/testing.rules at line 1
>>>
>>>
>>> When I get rid of 'http_raw_uri' and replace that 'content' with
>>> 'uricontent' the same error message is produced.
>>>
>>> -Harley
>
>
--
-------------------------------
Anoop Saldanha
http://www.poona.me
-------------------------------
More information about the Oisf-devel
mailing list