assemblyline-core 4.5.1.dev174__tar.gz → 4.5.1.dev178__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.

Files changed (88) hide show
  1. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/PKG-INFO +1 -1
  2. assemblyline-core-4.5.1.dev178/assemblyline_core/VERSION +1 -0
  3. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/signature_client.py +22 -1
  4. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core.egg-info/PKG-INFO +1 -1
  5. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_signature_client.py +13 -0
  6. assemblyline-core-4.5.1.dev174/assemblyline_core/VERSION +0 -1
  7. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/LICENCE.md +0 -0
  8. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/README.md +0 -0
  9. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/__init__.py +0 -0
  10. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/alerter/__init__.py +0 -0
  11. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/alerter/processing.py +0 -0
  12. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/alerter/run_alerter.py +0 -0
  13. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/archiver/__init__.py +0 -0
  14. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/archiver/run_archiver.py +0 -0
  15. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/badlist_client.py +0 -0
  16. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/dispatching/__init__.py +0 -0
  17. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/dispatching/__main__.py +0 -0
  18. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/dispatching/client.py +0 -0
  19. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/dispatching/dispatcher.py +0 -0
  20. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/dispatching/schedules.py +0 -0
  21. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/dispatching/timeout.py +0 -0
  22. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/expiry/__init__.py +0 -0
  23. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/expiry/run_expiry.py +0 -0
  24. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/ingester/__init__.py +0 -0
  25. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/ingester/__main__.py +0 -0
  26. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/ingester/constants.py +0 -0
  27. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/ingester/ingester.py +0 -0
  28. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/metrics/__init__.py +0 -0
  29. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/metrics/es_metrics.py +0 -0
  30. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/metrics/heartbeat_formatter.py +0 -0
  31. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/metrics/helper.py +0 -0
  32. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/metrics/metrics_server.py +0 -0
  33. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/metrics/run_heartbeat_manager.py +0 -0
  34. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/metrics/run_metrics_aggregator.py +0 -0
  35. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/metrics/run_statistics_aggregator.py +0 -0
  36. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/plumber/__init__.py +0 -0
  37. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/plumber/run_plumber.py +0 -0
  38. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/replay/__init__.py +0 -0
  39. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/replay/client.py +0 -0
  40. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/replay/creator/__init__.py +0 -0
  41. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/replay/creator/run.py +0 -0
  42. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/replay/creator/run_worker.py +0 -0
  43. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/replay/loader/__init__.py +0 -0
  44. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/replay/loader/run.py +0 -0
  45. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/replay/loader/run_worker.py +0 -0
  46. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/replay/replay.py +0 -0
  47. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/safelist_client.py +0 -0
  48. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/scaler/__init__.py +0 -0
  49. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/scaler/collection.py +0 -0
  50. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/scaler/controllers/__init__.py +0 -0
  51. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/scaler/controllers/docker_ctl.py +0 -0
  52. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/scaler/controllers/interface.py +0 -0
  53. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/scaler/controllers/kubernetes_ctl.py +0 -0
  54. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/scaler/run_scaler.py +0 -0
  55. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/scaler/scaler_server.py +0 -0
  56. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/server_base.py +0 -0
  57. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/submission_client.py +0 -0
  58. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/tasking_client.py +0 -0
  59. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/updater/__init__.py +0 -0
  60. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/updater/helper.py +0 -0
  61. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/updater/run_updater.py +0 -0
  62. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/vacuum/__init__.py +0 -0
  63. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/vacuum/crawler.py +0 -0
  64. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/vacuum/department_map.py +0 -0
  65. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/vacuum/safelist.py +0 -0
  66. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/vacuum/stream_map.py +0 -0
  67. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/vacuum/worker.py +0 -0
  68. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/workflow/__init__.py +0 -0
  69. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core/workflow/run_workflow.py +0 -0
  70. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core.egg-info/SOURCES.txt +0 -0
  71. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core.egg-info/dependency_links.txt +0 -0
  72. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core.egg-info/requires.txt +0 -0
  73. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/assemblyline_core.egg-info/top_level.txt +0 -0
  74. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/setup.cfg +0 -0
  75. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/setup.py +0 -0
  76. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_alerter.py +0 -0
  77. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_badlist_client.py +0 -0
  78. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_dispatcher.py +0 -0
  79. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_expiry.py +0 -0
  80. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_plumber.py +0 -0
  81. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_replay.py +0 -0
  82. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_safelist_client.py +0 -0
  83. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_scaler.py +0 -0
  84. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_scheduler.py +0 -0
  85. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_simulation.py +0 -0
  86. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_vacuum.py +0 -0
  87. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_worker_ingest.py +0 -0
  88. {assemblyline-core-4.5.1.dev174 → assemblyline-core-4.5.1.dev178}/test/test_worker_submit.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.5.1.dev174
3
+ Version: 4.5.1.dev178
4
4
  Summary: Assemblyline 4 - Core components
5
5
  Home-page: https://github.com/CybercentreCanada/assemblyline-core/
6
6
  Author: CCCS Assemblyline development team
@@ -0,0 +1 @@
1
+ 4.5.1.dev178
@@ -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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: assemblyline-core
3
- Version: 4.5.1.dev174
3
+ Version: 4.5.1.dev178
4
4
  Summary: Assemblyline 4 - Core components
5
5
  Home-page: https://github.com/CybercentreCanada/assemblyline-core/
6
6
  Author: CCCS Assemblyline development team
@@ -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.dev174