119:273
-This alert is raised for the following situation. During JavaScript normalization middle
-PDUs can be missed and not normalized. Usually it happens when rules have file_data and
-js_data ips options and fast-pattern (FP) search is applying to file_data. Some PDUs don’t
-match file_data FP search and JavaScript normalization won't be executed for these PDUs.
-The normalization of the following PDUs for inline/external scripts will be stopped for
-current request within the flow. This alert is raised by the enhanced JavaScript normalizer.
+This alert is raised for the following situation. During JavaScript normalization
+some data can be lost and not normalized. Usually it happens when rules have file_data and
+js_data ips options and fast-pattern (FP) search is applying to file_data. Some data
+doesn’t match file_data FP search and JavaScript normalization won't be executed for it.
+The following normalization for inline/external scripts will be stopped for current
+request within the flow. This alert is raised by the enhanced JavaScript normalizer.
119:274
INF_CHUNK_OVER_MAXIMUM = 128,
INF_LONG_HOST_VALUE = 129,
INF_ACCEPT_ENCODING_CONSECUTIVE_COMMAS = 130,
- INF_JS_PDU_MISS = 131,
+ INF_JS_DATA_LOST = 131,
INF_JS_SCOPE_NEST_OVERFLOW = 132,
INF_INVALID_SUBVERSION = 133,
INF_VERSION_0 = 134,
EVENT_JS_IDENTIFIER_OVERFLOW = 270,
EVENT_JS_BRACKET_NEST_OVERFLOW = 271,
EVENT_ACCEPT_ENCODING_CONSECUTIVE_COMMAS = 272,
- EVENT_JS_PDU_MISS = 273,
+ EVENT_JS_DATA_LOST = 273,
EVENT_JS_SCOPE_NEST_OVERFLOW = 274,
EVENT_INVALID_SUBVERSION = 275,
EVENT_VERSION_0 = 276,
}
#ifndef UNIT_TEST_BUILD
-void HttpFlowData::reset_js_pdu_idx()
+void HttpFlowData::reset_js_data_idx()
{
- js_pdu_idx = pdu_idx = 0;
+ js_data_processed_idx = js_data_idx = 0;
js_data_lost_once = false;
}
return *js_normalizer;
}
-bool HttpFlowData::is_pdu_missed()
+bool HttpFlowData::sync_js_data_idx()
{
- bool pdu_missed = ((pdu_idx - js_pdu_idx) > 1);
- js_pdu_idx = pdu_idx;
- return pdu_missed;
+ bool data_missed = ((js_data_idx - js_data_processed_idx) > 1);
+ js_data_processed_idx = js_data_idx;
+ return data_missed;
}
void HttpFlowData::release_js_ctx()
void delete_pipeline();
bool js_data_lost_once = false;
- uint32_t pdu_idx = 0;
- uint32_t js_pdu_idx = 0;
+ uint32_t js_data_idx = 0;
+ uint32_t js_data_processed_idx = 0;
// *** HttpJsNorm
JSIdentifierCtxBase* js_ident_ctx = nullptr;
bool js_continue = false;
bool js_built_in_event = false;
- void reset_js_pdu_idx();
+ void reset_js_data_idx();
void reset_js_ident_ctx();
snort::JSNormalizer& acquire_js_ctx(const HttpParaList::JsNormParam& js_norm_param);
void release_js_ctx();
- bool is_pdu_missed();
+ bool sync_js_data_idx();
bool cutover_on_clear = false;
bool ssl_search_abandoned = false;
else
do_legacy_js_normalization(decompressed_file_body, js_norm_body);
- ++session_data->pdu_idx;
+ if (decompressed_file_body.length() > 0)
+ ++session_data->js_data_idx;
const int32_t detect_length =
(js_norm_body.length() <= session_data->detect_depth_remaining[source_id]) ?
if ((*infractions & INF_UNKNOWN_ENCODING) or (*infractions & INF_UNSUPPORTED_ENCODING))
return;
- if (session_data->is_pdu_missed())
+ if (session_data->sync_js_data_idx())
{
- *infractions += INF_JS_PDU_MISS;
- session_data->events[HttpCommon::SRC_SERVER]->create_event(EVENT_JS_PDU_MISS);
+ *infractions += INF_JS_DATA_LOST;
+ session_data->events[HttpCommon::SRC_SERVER]->create_event(EVENT_JS_DATA_LOST);
session_data->js_data_lost_once = true;
return;
}
get_related_sections();
session_data->release_js_ctx();
session_data->reset_js_ident_ctx();
- session_data->reset_js_pdu_idx();
+ session_data->reset_js_data_idx();
}
HttpMsgRequest::~HttpMsgRequest()
{ EVENT_JS_BRACKET_NEST_OVERFLOW, "excessive JavaScript bracket nesting" },
{ EVENT_ACCEPT_ENCODING_CONSECUTIVE_COMMAS, "Consecutive commas in HTTP Accept-Encoding "
"header" },
- { EVENT_JS_PDU_MISS, "missed PDUs during JavaScript normalization" },
+ { EVENT_JS_DATA_LOST, "data gaps during JavaScript normalization" },
{ EVENT_JS_SCOPE_NEST_OVERFLOW, "excessive JavaScript scope nesting" },
{ EVENT_INVALID_SUBVERSION, "HTTP/1 version other than 1.0 or 1.1" },
{ EVENT_VERSION_0, "HTTP version in start line is 0" },