From 46febef7cd1ceda05b9ab1bf0dbc94e50bc4ce17 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Sat, 1 Apr 2017 12:38:46 +0200 Subject: [PATCH] detect: implement http_accept_enc sticky buffer Inspects Accept-Encoding header. --- src/Makefile.am | 1 + src/detect-http-accept-enc.c | 46 ++++++++++++++++++++++++++++++++++++ src/detect-http-accept-enc.h | 23 ++++++++++++++++++ src/detect-http-headers.c | 2 ++ src/detect.h | 1 + 5 files changed, 73 insertions(+) create mode 100644 src/detect-http-accept-enc.c create mode 100644 src/detect-http-accept-enc.h diff --git a/src/Makefile.am b/src/Makefile.am index 460c75c82c..7d30e666ac 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -164,6 +164,7 @@ detect-geoip.c detect-geoip.h \ detect-gid.c detect-gid.h \ detect-hostbits.c detect-hostbits.h \ detect-http-accept.c detect-http-accept.h \ +detect-http-accept-enc.c detect-http-accept-enc.h \ detect-http-accept-lang.c detect-http-accept-lang.h \ detect-http-client-body.c detect-http-client-body.h \ detect-http-connection.c detect-http-connection.h \ diff --git a/src/detect-http-accept-enc.c b/src/detect-http-accept-enc.c new file mode 100644 index 0000000000..94e3c62158 --- /dev/null +++ b/src/detect-http-accept-enc.c @@ -0,0 +1,46 @@ +/* Copyright (C) 2007-2017 Open Information Security Foundation + * + * You can copy, redistribute or modify this Program under the terms of + * the GNU General Public License version 2 as published by the Free + * Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * version 2 along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +/** + * \ingroup httplayer + * + * @{ + */ + + +/** + * \file + * + * \author Victor Julien + * + * Implements http_accept_enc sticky buffer + */ + +#define KEYWORD_NAME "http_accept_enc" +#define KEYWORD_DOC "http-keywords#http-accept-enc" +#define BUFFER_NAME "http_accept_enc" +#define BUFFER_DESC "http accept encoding header" +#define HEADER_NAME "Accept-Encoding" +#define KEYWORD_ID DETECT_AL_HTTP_HEADER_ACCEPT_ENC +#define KEYWORD_TOSERVER 1 + +#include "detect-http-headers-stub.h" + +void RegisterHttpHeadersAcceptEnc(void) +{ + DetectHttpHeadersRegisterStub(); +} diff --git a/src/detect-http-accept-enc.h b/src/detect-http-accept-enc.h new file mode 100644 index 0000000000..040ece82ee --- /dev/null +++ b/src/detect-http-accept-enc.h @@ -0,0 +1,23 @@ +/* Copyright (C) 2007-2017 Open Information Security Foundation + * + * You can copy, redistribute or modify this Program under the terms of + * the GNU General Public License version 2 as published by the Free + * Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * version 2 along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA. + */ + +#ifndef __DETECT_HTTP_ACCEPT_LEN_H__ +#define __DETECT_HTTP_ACCEPT_LEN_H__ + +void RegisterHttpHeadersAcceptEnc(void); + +#endif /* __DETECT_HTTP_ACCEPT_LEN_H__ */ diff --git a/src/detect-http-headers.c b/src/detect-http-headers.c index 93380ab9b0..c1bde84a91 100644 --- a/src/detect-http-headers.c +++ b/src/detect-http-headers.c @@ -16,6 +16,7 @@ */ #include "detect-http-accept.h" +#include "detect-http-accept-enc.h" #include "detect-http-accept-lang.h" #include "detect-http-connection.h" #include "detect-http-referer.h" @@ -23,6 +24,7 @@ void DetectHttpHeadersRegister(void) { RegisterHttpHeadersAccept(); + RegisterHttpHeadersAcceptEnc(); RegisterHttpHeadersAcceptLang(); RegisterHttpHeadersReferer(); RegisterHttpHeadersConnection(); diff --git a/src/detect.h b/src/detect.h index 6d266ca014..6a30a575ef 100644 --- a/src/detect.h +++ b/src/detect.h @@ -1243,6 +1243,7 @@ enum { DETECT_AL_HTTP_HEADER_NAMES, DETECT_AL_HTTP_HEADER_ACCEPT, DETECT_AL_HTTP_HEADER_ACCEPT_LANG, + DETECT_AL_HTTP_HEADER_ACCEPT_ENC, DETECT_AL_HTTP_HEADER_CONNECTION, DETECT_AL_HTTP_HEADER_REFERER, DETECT_AL_HTTP_RAW_HEADER,