Skip to content

Issue parsing MITRE data #55

@neokjames

Description

@neokjames

The current installation process using Docker seems to have an issue parsing one or more of the MITRE / Atomic Red Team datasets, causing PurpleOps to fail to launch.

Waiting for Mongo...
==============================================================



         NEW INSTANCE DETECTED, LETS GET THE DATA WE NEED



==============================================================
Pulling MITRE tactics
Pulling MITRE techniques
Pulling SIGMA detections
Pulling Atomic Red Team testcases
Traceback (most recent call last):
  File "/usr/src/app/seeder.py", line 234, in <module>
    parseAtomicRedTeam()
  File "/usr/src/app/seeder.py", line 138, in parseAtomicRedTeam
    tactic = Technique.objects(mitreid=yml["attack_technique"]).first()["tactics"][0],
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
[2026-01-15 03:03:04 +0000] [1] [INFO] Starting gunicorn 20.1.0
[2026-01-15 03:03:04 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
[2026-01-15 03:03:04 +0000] [1] [INFO] Using worker: sync
[2026-01-15 03:03:04 +0000] [45] [INFO] Booting worker with pid: 45
[2026-01-15 03:03:05 +0000] [45] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/gunicorn/arbiter.py", line 589, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python3.11/site-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python3.11/site-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
                ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
                    ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/gunicorn/util.py", line 359, in import_app
    mod = importlib.import_module(module)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/usr/src/app/purpleops.py", line 24, in <module>
    security = Security(app, user_datastore)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask_security/core.py", line 1230, in __init__
    self.init_app(app, datastore, register_blueprint=register_blueprint)
  File "/usr/local/lib/python3.11/site-packages/flask_security/core.py", line 1383, in init_app
    self.remember_token_serializer = _get_serializer(app, "remember")
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/flask_security/core.py", line 718, in _get_serializer
    return URLSafeTimedSerializer(secret_key=secret_key, salt=salt)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/itsdangerous/serializer.py", line 104, in __init__
    self.secret_keys: _t.List[bytes] = _make_keys_list(secret_key)
                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/itsdangerous/signer.py", line 64, in _make_keys_list
    return [want_bytes(s) for s in secret_key]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not iterable
[2026-01-15 03:03:05 +0000] [45] [INFO] Worker exiting (pid: 45)
[2026-01-15 03:03:06 +0000] [1] [INFO] Shutting down: Master
[2026-01-15 03:03:06 +0000] [1] [INFO] Reason: Worker failed to boot.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions