11sub vcl_recv {
22 set req.http.X-Sec-Module = "2vcl" ;
3- ## REQUEST_LINE,
4- # skipped REQUEST_LINE rx ^GET /$
5- ## REMOTE_ADDR,
6- # skipped REMOTE_ADDR rx ^127\.0\.0\.1$
7- ## REQUEST_LINE,
8- # skipped REQUEST_LINE rx ^GET / HTTP/1.0$
9- ## REMOTE_ADDR,
10- # skipped REMOTE_ADDR rx ^127\.0\.0\.1$
11- ## REQUEST_HEADERS, :User-Agent
12- # AC User-Agent
13- ## Rule: REQUEST_HEADERS rx :User-Agent
14- # AAA User-Agent
15- if (req.http.User-Agent ~ "^Apache.*\( internal dummy connection\) $" ){
16- call sec_sev1 ;
17- }
18- ## REQUEST_PROTOCOL,
19- ## Rule: REQUEST_PROTOCOL rx :
20- if (req.proto ~ "^" ){
21- set req.http.X-Sec-RuleInfo = "HTTP/0.9 Request Detected" ;
22- set req.http.X-Sec-Severity = "4" ;
23- set req.http.X-Sec-RuleId = "960019" ;
24- call sec_sev1 ;
25- }
263 ## &REQUEST_HEADERS, :Host
274 # AC Host
285 # skipped & REQUEST_HEADERS eq Host 0
@@ -32,34 +9,44 @@ sub vcl_recv {
329 # AAA Host
3310 if (req.http.Host ~ "^$" ){
3411 set req.http.X-Sec-RuleInfo = "Request Missing a Host Header" ;
35- set req.http.X-Sec-RuleName = "PROTOCOL_VIOLATION/MISSING_HEADER" ;
36- set req.http.X-Sec-Severity = "4" ;
12+ set req.http.X-Sec-RuleName = "PROTOCOL_VIOLATION/MISSING_HEADER_HOST" ;
13+ set req.http.X-Sec-RuleName = "WASCTC/WASC-21" ;
14+ set req.http.X-Sec-RuleName = "OWASP_TOP_10/A7" ;
15+ set req.http.X-Sec-RuleName = "PCI/6.5.10" ;
16+ set req.http.X-Sec-Severity = "5" ;
3717 set req.http.X-Sec-RuleId = "960008" ;
38- call sec_sev1 ;
18+ call sec_default_handler ;
19+ }
20+ ## REQUEST_METHOD,
21+ ## Rule: REQUEST_METHOD rx :
22+ if (req.request ~ "^OPTIONS$" ){
23+ set req.http.X-Sec-RuleInfo = "Request Missing an Accept Header" ;
24+ set req.http.X-Sec-Severity = "2" ;
25+ set req.http.X-Sec-RuleName = "PROTOCOL_VIOLATION/MISSING_HEADER_ACCEPT" ;
26+ set req.http.X-Sec-RuleName = "WASCTC/WASC-21" ;
27+ set req.http.X-Sec-RuleName = "OWASP_TOP_10/A7" ;
28+ set req.http.X-Sec-RuleName = "PCI/6.5.10" ;
29+ set req.http.X-Sec-RuleId = "960015" ;
30+ # chained rule
3931 }
4032 ## &REQUEST_HEADERS, :Accept
4133 # AC Accept
4234 # skipped & REQUEST_HEADERS eq Accept 0
4335 ## REQUEST_METHOD,
4436 ## Rule: REQUEST_METHOD rx :
4537 if (req.request ~ "^OPTIONS$" ){
46- call sec_sev1 ;
38+ set req.http.X-Sec-RuleInfo = "Request Has an Empty Accept Header" ;
39+ set req.http.X-Sec-Severity = "2" ;
40+ set req.http.X-Sec-RuleName = "PROTOCOL_VIOLATION/MISSING_HEADER_ACCEPT" ;
41+ set req.http.X-Sec-RuleId = "960021" ;
42+ # chained rule
4743 }
4844 ## REQUEST_HEADERS, :Accept
4945 # AC Accept
5046 ## Rule: REQUEST_HEADERS rx :Accept
5147 # AAA Accept
5248 if (req.http.Accept ~ "^$" ){
53- set req.http.X-Sec-RuleInfo = "Request Missing an Accept Header" ;
54- set req.http.X-Sec-Severity = "2" ;
55- set req.http.X-Sec-RuleName = "PROTOCOL_VIOLATION/MISSING_HEADER" ;
56- set req.http.X-Sec-RuleId = "960015" ;
57- # chained rule
58- }
59- ## REQUEST_METHOD,
60- ## Rule: REQUEST_METHOD rx :
61- if (req.request ~ "^OPTIONS$" ){
62- call sec_sev1 ;
49+ call sec_default_handler ;
6350 }
6451 ## &REQUEST_HEADERS, :User-Agent
6552 # AC User-Agent
@@ -70,10 +57,13 @@ sub vcl_recv {
7057 # AAA User-Agent
7158 if (req.http.User-Agent ~ "^$" ){
7259 set req.http.X-Sec-RuleInfo = "Request Missing a User Agent Header" ;
73- set req.http.X-Sec-RuleName = "PROTOCOL_VIOLATION/MISSING_HEADER" ;
74- set req.http.X-Sec-Severity = "4" ;
60+ set req.http.X-Sec-RuleName = "PROTOCOL_VIOLATION/MISSING_HEADER_UA" ;
61+ set req.http.X-Sec-RuleName = "WASCTC/WASC-21" ;
62+ set req.http.X-Sec-RuleName = "OWASP_TOP_10/A7" ;
63+ set req.http.X-Sec-RuleName = "PCI/6.5.10" ;
64+ set req.http.X-Sec-Severity = "5" ;
7565 set req.http.X-Sec-RuleId = "960009" ;
76- call sec_sev1 ;
66+ call sec_default_handler ;
7767 }
7868 ## &REQUEST_HEADERS, :Content-Type
7969 # AC Content-Type
@@ -83,23 +73,22 @@ sub vcl_recv {
8373 ## Rule: REQUEST_HEADERS rx :Content-Length
8474 # AAA Content-Length
8575 if (req.http.Content-Length ~ "^0$" ){
86- call sec_sev1 ;
76+ call sec_default_handler ;
8777 }
8878 ## REQUEST_HEADERS, :Host
8979 # AC Host
9080 ## Rule: REQUEST_HEADERS rx :Host
9181 # AAA Host
92- if (req.http.Host ~ "^[\d\. ]+$" ){
93- set req.http.X-Sec-Return = "400" ;
82+ if (req.http.Host ~ "^[\d .:]+$" ){
9483 set req.http.X-Sec-RuleInfo = "Host header is a numeric IP address" ;
9584 set req.http.X-Sec-Severity = "2" ;
9685 set req.http.X-Sec-RuleName = "PROTOCOL_VIOLATION/IP_HOST" ;
86+ set req.http.X-Sec-RuleName = "WASCTC/WASC-21" ;
87+ set req.http.X-Sec-RuleName = "OWASP_TOP_10/A7" ;
88+ set req.http.X-Sec-RuleName = "PCI/6.5.10" ;
89+ set req.http.X-Sec-RuleName = "http://technet.microsoft.com/en-us/magazine/2005.01.hackerbasher.aspx" ;
9790 set req.http.X-Sec-RuleId = "960017" ;
98- call sec_sev1 ;
91+ call sec_default_handler ;
9992 }
100- ## RESPONSE_STATUS,
101- # skipped RESPONSE_STATUS rx ^
102- ## WEBSERVER_ERROR_LOG,
103- # skipped WEBSERVER_ERROR_LOG rx !
10493}
10594
0 commit comments