Squashed commit of the following:
commit
350263720dd444e39a318419804cfc4b90d31911
Author: Steven Baigal (sbaigal) <sbaigal@cisco.com>
Date: Wed Aug 12 13:56:06 2020 -0400
http_inspect: implement can_start_tls(), add support of ssl search abandoned event
PEG_GET, PEG_HEAD, PEG_POST, PEG_PUT, PEG_DELETE, PEG_CONNECT, PEG_OPTIONS, PEG_TRACE,
PEG_OTHER_METHOD, PEG_REQUEST_BODY, PEG_CHUNKED, PEG_URI_NORM, PEG_URI_PATH, PEG_URI_CODING,
PEG_CONCURRENT_SESSIONS, PEG_MAX_CONCURRENT_SESSIONS, PEG_DETAINED, PEG_SCRIPT_DETECTION,
- PEG_PARTIAL_INSPECT, PEG_EXCESS_PARAMS, PEG_PARAMS, PEG_CUTOVERS, PEG_COUNT_MAX };
+ PEG_PARTIAL_INSPECT, PEG_EXCESS_PARAMS, PEG_PARAMS, PEG_CUTOVERS, PEG_SSL_SEARCH_ABND_EARLY,
+ PEG_COUNT_MAX };
// Result of scanning by splitter
enum ScanResult { SCAN_NOT_FOUND, SCAN_NOT_FOUND_ACCELERATE, SCAN_FOUND, SCAN_FOUND_PIECE,
HttpEnums::MethodId method_id = HttpEnums::METH__NOT_PRESENT;
bool cutover_on_clear = false;
+ bool ssl_search_abandoned = false;
// *** Transaction management including pipelining
static const int MAX_PIPELINE = 100; // requests seen - responses seen <= MAX_PIPELINE
bool can_carve_files() const override
{ return true; }
+ bool can_start_tls() const override
+ { return true; }
+
static HttpEnums::InspectSection get_latest_is(const snort::Packet* p);
static HttpCommon::SourceId get_latest_src(const snort::Packet* p);
void disable_detection(snort::Packet* p);
}
session_data->cutover_on_clear = true;
HttpModule::increment_peg_counts(PEG_CUTOVERS);
-
+ if (session_data->ssl_search_abandoned)
+ HttpModule::increment_peg_counts(PEG_SSL_SEARCH_ABND_EARLY);
#ifdef REG_TEST
if (HttpTestManager::use_test_output(HttpTestManager::IN_HTTP))
{
session_data->method_id = method_id;
}
+void HttpMsgRequest::publish()
+{
+ if (!session_data->ssl_search_abandoned && trans_num > 1 &&
+ !flow->flags.data_decrypted && get_method_id() != METH_CONNECT)
+ {
+ session_data->ssl_search_abandoned = true;
+ DataBus::publish(SSL_SEARCH_ABANDONED, DetectionEngine::get_current_packet());
+ }
+}
+
#ifdef REG_TEST
void HttpMsgRequest::print_section(FILE* output)
~HttpMsgRequest() override;
void gen_events() override;
void update_flow() override;
+ void publish() override;
const Field& get_method() { return method; }
const Field& get_uri();
const Field& get_uri_norm_classic();
{ CountType::SUM, "excess_parameters", "repeat parameters exceeding max" },
{ CountType::SUM, "parameters", "HTTP parameters inspected" },
{ CountType::SUM, "connect_tunnel_cutovers", "CONNECT tunnel flow cutovers to wizard" },
+ { CountType::SUM, "ssl_srch_abandoned_early", "total SSL search abandoned too soon" },
{ CountType::END, nullptr, nullptr }
};