<html><body><div style="color:#000; background-color:#fff; font-family:verdana, helvetica, sans-serif;font-size:10pt"><div><font size="2" style="font-family: arial, helvetica, sans-serif;">Hi</font></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><font size="2" style="font-family: arial, helvetica, sans-serif;"><br></font></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><font size="2" style="font-family: arial, helvetica, sans-serif;">I have been looking into snort lately for IDS and network data analysis needs at work.</font></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Looks like have uncovered an issue with PAF enabled reassembly of HTTP data or may be perhaps in the alert plugins.</span></div><div style="color: rgb(0, 0, 0); background-color:
 transparent; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Any input is well appreciated.</span></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal; font-size: 13px; font-family: arial, helvetica, sans-serif;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><br></span></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Apparently with PAF enabled the HTTP specific checks fire off only on the receipt of subsequent ACK packet even if the HTTP PDU data fits completely in the current packet.</span></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">With PAF disabled the issue seems to correct itself.</span></div><div
 style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Looking at the code in snort_httpinspect.c , it appears that HTTP specific processing is short circuited due to the following check</span></div><pre style="line-height: 1.4; margin-top: 0px; margin-bottom: 0px; color: rgb(51, 51, 51);"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">#ifdef ENABLE_PAF
<a name="cl-3445" style="color: rgb(59, 115, 175); text-decoration: none;" href=""></a>    if ( ScPafEnabled() &&
<a name="cl-3446" style="color: rgb(59, 115, 175); text-decoration: none;" href=""></a>        (p->packet_flags & PKT_STREAM_INSERT) && </span></pre><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span style="color: rgb(51, 51, 51); line-height: 1.4;">        !PacketHasFullPDU(p) )</span> </span></div><div style="color: rgb(51, 51, 51); background-color: transparent; font-style: normal;"><span><span style="line-height: 16px; font-family: arial, helvetica, sans-serif; font-size: 13px;">PacketHasFullPDU(p) only evaluates true on receipt of subsequent ACK even if the current packet does hold the complete PDU.</span></span></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size:
 13px;"><br></span></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Steps to replicate:</span></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Below is a rule to print alert on receipt of  GET HTTP requests.</span></div><div style="color: rgb(0, 0, 0); background-color: transparent; font-style: normal;"><span style="background-color: transparent; font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">        </span>custom_log tcp any any <> any 80 (msg:"DUMP"; content:"GET"; http_method; sid:1000001;rev:1)</span></div><div style="background-color: transparent;"><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif;
 font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">      </span>ruletype custom_log {                                                                 </span></div><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">          </span> type  alert</span></div><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">               </span> output alert_full</span></div><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">              </span> output
 log_tcpdump: log_alert.csv.dump</span></div><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">  </span>} </span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Try any curl/wget request now.</span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><br></span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Test 1 -(PAF enabled)</span></div><div style="background-color: transparent; color: rgb(0,
 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">  </span>Log from alert_full with paf_max = 16000</span></div><div style="background-color: transparent;"><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre"> </span>[Priority: 0]</span></div><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">        </span>04/02-22:59:33.414512 10.0.144.XXX:2228 -> 10.8.XX.XX<span class="Apple-tab-span" style="white-space:pre">    </span></span></div><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">     </span>TCP TTL:64
 TOS:0x0 ID:23556 IpLen:20 DgmLen:443 DF</span></div><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">  </span>***A**** Seq: 0x88CC7A97  Ack: 0x504A44DD  Win: 0x3CB8  TcpLen: 20</span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><br></span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Test 2 -(PAF disabled)</span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><span class="Apple-tab-span" style="white-space:pre">   </span>Log from alert_full with paf_max =
 0</span></div><div style="background-color: transparent;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><div style="background-color: transparent;"><span class="Apple-tab-span" style="white-space:pre">    </span>[**] [1:1000001:1] DUMP [**]</div><div style="background-color: transparent;"><span class="Apple-tab-span" style="white-space:pre">        </span>[Priority: 0]</div><div style="background-color: transparent;"><span class="Apple-tab-span" style="white-space:pre">       </span>04/02-23:09:35.761077 10.0.XX.XX:2286 -> 10.8.XX.XX</div><div style="background-color: transparent;"><span class="Apple-tab-span" style="white-space:pre">      </span>   TCP TTL:122 TOS:0x0 ID:52317 IpLen:20 DgmLen:443 DF</div><div style="background-color: transparent;">  <span class="Apple-tab-span" style="white-space:pre">     </span>  ***AP*** Seq: 0xDB1E4DB7  Ack: 0x66F537C3  Win: 0xFFFF  TcpLen: 20</div></span></div><div
 style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><br></span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Close look will reveal that the TCP headers are different - A vs AP.</span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">TCP dump and wireshark capture confirms that Test 2 results are correct whereas Test 1 is showing incorrect TCP data in the alert log.</span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal; font-size: 13px; font-family: arial, helvetica, sans-serif;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><br></span></div><div
 style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">Thanks</span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;">PP</span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; font-style: normal;"><br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; font-style: normal;"><br></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><br></span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size:
 13px; font-family: arial, helvetica, sans-serif; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><br></span></div><div style="background-color: transparent; color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; font-style: normal;"><span style="font-family: arial, helvetica, sans-serif; font-size: 13px;"><br></span></div></div></div></div></body></html>