assemblyline-core 4.5.1.dev173__tar.gz → 4.5.1.dev177__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of assemblyline-core might be problematic. Click here for more details.
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/PKG-INFO +1 -1
- assemblyline-core-4.5.1.dev177/assemblyline_core/VERSION +1 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/signature_client.py +22 -1
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core.egg-info/PKG-INFO +1 -1
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_signature_client.py +13 -0
- assemblyline-core-4.5.1.dev173/assemblyline_core/VERSION +0 -1
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/LICENCE.md +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/README.md +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/alerter/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/alerter/processing.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/alerter/run_alerter.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/archiver/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/archiver/run_archiver.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/badlist_client.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/dispatching/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/dispatching/__main__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/dispatching/client.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/dispatching/dispatcher.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/dispatching/schedules.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/dispatching/timeout.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/expiry/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/expiry/run_expiry.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/ingester/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/ingester/__main__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/ingester/constants.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/ingester/ingester.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/metrics/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/metrics/es_metrics.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/metrics/helper.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/metrics/metrics_server.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/plumber/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/plumber/run_plumber.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/client.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/creator/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/creator/run.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/creator/run_worker.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/loader/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/loader/run.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/loader/run_worker.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/replay.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/safelist_client.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/scaler/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/scaler/collection.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/scaler/controllers/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/scaler/controllers/interface.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/scaler/run_scaler.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/scaler/scaler_server.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/server_base.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/submission_client.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/tasking_client.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/updater/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/updater/helper.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/updater/run_updater.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/vacuum/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/vacuum/crawler.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/vacuum/department_map.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/vacuum/safelist.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/vacuum/stream_map.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/vacuum/worker.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/workflow/__init__.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/workflow/run_workflow.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core.egg-info/SOURCES.txt +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core.egg-info/dependency_links.txt +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core.egg-info/requires.txt +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core.egg-info/top_level.txt +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/setup.cfg +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/setup.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_alerter.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_badlist_client.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_dispatcher.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_expiry.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_plumber.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_replay.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_safelist_client.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_scaler.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_scheduler.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_simulation.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_vacuum.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_worker_ingest.py +0 -0
- {assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_worker_submit.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4.5.1.dev177
|
|
@@ -17,12 +17,13 @@ CLASSIFICATION = forge.get_classification()
|
|
|
17
17
|
class SignatureClient:
|
|
18
18
|
"""A helper class to simplify signature management for privileged services and service-server."""
|
|
19
19
|
|
|
20
|
-
def __init__(self, datastore: AssemblylineDatastore = None, config=None):
|
|
20
|
+
def __init__(self, datastore: AssemblylineDatastore = None, config=None, classification_replace_map={}):
|
|
21
21
|
self.log = logging.getLogger('assemblyline.signature_client')
|
|
22
22
|
self.config = config or forge.CachedObject(forge.get_config)
|
|
23
23
|
self.datastore = datastore or forge.get_datastore(self.config)
|
|
24
24
|
self.service_list = forge.CachedObject(self.datastore.list_all_services, kwargs=dict(as_obj=False, full=True))
|
|
25
25
|
self.delimiters = forge.CachedObject(self._get_signature_delimiters)
|
|
26
|
+
self.classification_replace_map = classification_replace_map
|
|
26
27
|
|
|
27
28
|
def _get_signature_delimiters(self):
|
|
28
29
|
signature_delimiters = {}
|
|
@@ -39,6 +40,22 @@ class SignatureClient:
|
|
|
39
40
|
delimiter = SIGNATURE_DELIMITERS.get(delimiter_type, '\n\n')
|
|
40
41
|
return {'type': delimiter_type, 'delimiter': delimiter}
|
|
41
42
|
|
|
43
|
+
def _update_classification(self, signature):
|
|
44
|
+
classification = signature['classification']
|
|
45
|
+
# Update classification of signatures based on rewrite definition
|
|
46
|
+
for term, replacement in self.classification_replace_map.items():
|
|
47
|
+
if replacement.startswith('_'):
|
|
48
|
+
# Replace with known field in Signature model
|
|
49
|
+
# Otherwise replace with literal
|
|
50
|
+
if signature.get(replacement[1:]):
|
|
51
|
+
replacement = signature[replacement[1:]]
|
|
52
|
+
|
|
53
|
+
classification = classification.replace(term, replacement)
|
|
54
|
+
|
|
55
|
+
# Save the (possibly) updated classfication
|
|
56
|
+
signature['classification'] = classification
|
|
57
|
+
|
|
58
|
+
|
|
42
59
|
def add_update(self, data, dedup_name=True):
|
|
43
60
|
if data.get('type', None) is None or data['name'] is None or data['data'] is None:
|
|
44
61
|
raise ValueError("Signature id, name, type and data are mandatory fields.")
|
|
@@ -79,6 +96,8 @@ class SignatureClient:
|
|
|
79
96
|
# Preserve signature stats
|
|
80
97
|
data['stats'] = old['stats']
|
|
81
98
|
|
|
99
|
+
self._update_classification(data)
|
|
100
|
+
|
|
82
101
|
# Save the signature
|
|
83
102
|
success = self.datastore.signature.save(key, data)
|
|
84
103
|
return success, key, op
|
|
@@ -126,6 +145,8 @@ class SignatureClient:
|
|
|
126
145
|
# Preserve signature stats
|
|
127
146
|
rule['stats'] = old_data[key]['stats']
|
|
128
147
|
|
|
148
|
+
self._update_classification(rule)
|
|
149
|
+
|
|
129
150
|
plan.add_upsert_operation(key, rule)
|
|
130
151
|
|
|
131
152
|
if not plan.empty:
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_signature_client.py
RENAMED
|
@@ -103,3 +103,16 @@ def test_download_signatures(client):
|
|
|
103
103
|
def test_update_available(client):
|
|
104
104
|
assert client.update_available()
|
|
105
105
|
assert not client.update_available(since='2030-01-01T00:00:00.000000Z')
|
|
106
|
+
|
|
107
|
+
def test_update_classification(client):
|
|
108
|
+
sig = client.datastore.signature.search("*", rows=1, as_obj=False)['items'][0]
|
|
109
|
+
|
|
110
|
+
# Update classification with literal string
|
|
111
|
+
client.classification_replace_map = {"TLP:C": "TLP:A//TEST"}
|
|
112
|
+
client._update_classification(sig)
|
|
113
|
+
assert sig['classification'] == "TLP:A//TEST"
|
|
114
|
+
|
|
115
|
+
# Update classification with value from another field within the signature
|
|
116
|
+
client.classification_replace_map = {"TEST": "_source"}
|
|
117
|
+
client._update_classification(sig)
|
|
118
|
+
assert sig['classification'] == f"TLP:A//{sig['source']}"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
4.5.1.dev173
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/replay/replay.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/server_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/assemblyline_core/vacuum/worker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_badlist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_safelist_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_worker_ingest.py
RENAMED
|
File without changes
|
{assemblyline-core-4.5.1.dev173 → assemblyline-core-4.5.1.dev177}/test/test_worker_submit.py
RENAMED
|
File without changes
|