Skip to content

Conversation

AnshSinghal
Copy link
Contributor

@AnshSinghal AnshSinghal commented Feb 26, 2025

Closes [Analyzer] Bbot #2720

Description

  • Adds BBOT domain/URL scanner (https://github.com/blacklanternsecurity/bbot) to IntelOwl.
  • Includes FastAPI app.py with Uvicorn for BBOT scans, Docker setup, and module and presets selection (defaults presets to web-basic).
  • Modified _docker_run to run BBOT synchronously, returning results in the initial response to avoid polling overhead.

Type of change

Please delete options that are not relevant.

  • New feature (non-breaking change which adds functionality).

Checklist

  • I have read and understood the rules about how to Contribute to this project
  • The pull request is for the branch develop
  • A new plugin (analyzer, connector, visualizer, playbook, pivot or ingestor) was added or changed, in which case:
    • I strictly followed the documentation "How to create a Plugin"
    • Usage file was updated. A link to the PR to the docs repo has been added as a comment here.
    • Advanced-Usage was updated (in case the plugin provides additional optional configuration). A link to the PR to the docs repo has been added as a comment here.
    • I have dumped the configuration from Django Admin using the dumpplugin command and added it in the project as a data migration. ("How to share a plugin with the community")
    • If a File analyzer was added and it supports a mimetype which is not already supported, you added a sample of that type inside the archive test_files.zip and you added the default tests for that mimetype in test_classes.py.
    • If you created a new analyzer and it is free (does not require any API key), please add it in the FREE_TO_USE_ANALYZERS playbook by following this guide.
    • Check if it could make sense to add that analyzer/connector to other freely available playbooks.
    • I have provided the resulting raw JSON of a finished analysis and a screenshot of the results.
    • If the plugin interacts with an external service, I have created an attribute called precisely url that contains this information. This is required for Health Checks.
    • If the plugin requires mocked testing, _monkeypatch() was used in its class to apply the necessary decorators.
    • I have added that raw JSON sample to the MockUpResponse of the _monkeypatch() method. This serves us to provide a valid sample for testing.
  • I have inserted the copyright banner at the start of the file: # This file is a part of IntelOwl https://github.com/intelowlproject/IntelOwl # See the file 'LICENSE' for copying permission.
  • If external libraries/packages with restrictive licenses were used, they were added in the Legal Notice section.
  • Linters (Black, Flake, Isort) gave 0 errors. If you have correctly installed pre-commit, it does these checks and adjustments on your behalf.
  • I have added tests for the feature/bug I solved (see tests folder). All the tests (new and old ones) gave 0 errors.
  • If the GUI has been modified:
    • I have a provided a screenshot of the result in the PR.
    • I have created new frontend tests for the new component or updated existing ones.
  • After you had submitted the PR, if DeepSource, Django Doctors or other third-party linters have triggered any alerts during the CI checks, I have solved those alerts.

Important Rules

  • If you miss to compile the Checklist properly, your PR won't be reviewed by the maintainers.
  • Everytime you make changes to the PR and you think the work is done, you should explicitly ask for a review by using GitHub's reviewing system detailed here.
"analyzer_reports": [
    {
      "name": "BBOT",
      "process_time": 126.78,
      "status": "SUCCESS",
      "end_time": "2025-03-18T18:33:57.693629Z",
      "parameters": { "modules": [], "presets": ["web-basic"] },
      "type": "analyzer",
      "id": 1113,
      "report": {
        "events": [
          {
            "id": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "name": "melodramatic_magnus",
            "preset": {
              "flags": ["iis-shortnames", "web-basic"],
              "config": {
                "modules": {
                  "iis_shortnames": { "_enabled": false, "detect_only": false }
                }
              },
              "description": "melodramatic_magnus",
              "output_modules": ["json"]
            },
            "status": "FINISHED",
            "target": {
              "hash": "7008a089a6499114586ffd51cc80bb5ca6152860",
              "seeds": ["drive.google.com"],
              "blacklist": [],
              "seed_hash": "3df354cdfa01cabb91d8a89f0e3067c090679084",
              "whitelist": ["drive.google.com"],
              "scope_hash": "ce57b9bdc30de2d3ae1e074f2082b34c13785c35",
              "strict_scope": false,
              "blacklist_hash": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
              "whitelist_hash": "3df354cdfa01cabb91d8a89f0e3067c090679084"
            },
            "duration": "2 minutes, 5 seconds",
            "started_at": "2025-03-18T18:31:52.209983",
            "finished_at": "2025-03-18T18:33:57.498087",
            "duration_seconds": 125.288104
          }
        ],
        "json_output": [
          {
            "id": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "data": {
              "id": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
              "name": "melodramatic_magnus",
              "preset": {
                "flags": ["iis-shortnames", "web-basic"],
                "config": {
                  "modules": {
                    "iis_shortnames": {
                      "_enabled": false,
                      "detect_only": false
                    }
                  }
                },
                "description": "melodramatic_magnus",
                "output_modules": ["json"]
              },
              "status": "RUNNING",
              "target": {
                "hash": "7008a089a6499114586ffd51cc80bb5ca6152860",
                "seeds": ["drive.google.com"],
                "blacklist": [],
                "seed_hash": "3df354cdfa01cabb91d8a89f0e3067c090679084",
                "whitelist": ["drive.google.com"],
                "scope_hash": "ce57b9bdc30de2d3ae1e074f2082b34c13785c35",
                "strict_scope": false,
                "blacklist_hash": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
                "whitelist_hash": "3df354cdfa01cabb91d8a89f0e3067c090679084"
              },
              "started_at": "2025-03-18T18:31:52.209983"
            },
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "type": "SCAN",
            "uuid": "SCAN:370e96dd-dc98-4a56-9bd3-b285f68502bb",
            "module": "TARGET",
            "parent": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "timestamp": "2025-03-18T18:31:52.210607+00:00",
            "parent_uuid": "SCAN:370e96dd-dc98-4a56-9bd3-b285f68502bb",
            "parent_chain": [],
            "discovery_path": [],
            "scope_distance": 0,
            "module_sequence": "TARGET",
            "discovery_context": "Scan melodramatic_magnus started at 2025-03-18 18:31:52.209983",
            "scope_description": "in-scope",
            "web_spider_distance": 0
          },
          {
            "id": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "data": "drive.google.com",
            "host": "drive.google.com",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "target",
              "a-record",
              "subdomain",
              "in-scope",
              "mx-record",
              "txt-record",
              "aaaa-record"
            ],
            "type": "DNS_NAME",
            "uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "module": "TARGET",
            "netloc": "drive.google.com",
            "parent": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "timestamp": "2025-03-18T18:31:52.054130+00:00",
            "parent_uuid": "SCAN:370e96dd-dc98-4a56-9bd3-b285f68502bb",
            "dns_children": {
              "A": ["216.58.200.174"],
              "MX": [
                "alt2.gmr-smtp-in.l.google.com",
                "alt1.gmr-smtp-in.l.google.com",
                "alt3.gmr-smtp-in.l.google.com",
                "alt4.gmr-smtp-in.l.google.com",
                "gmr-smtp-in.l.google.com"
              ],
              "AAAA": ["2404:6800:4002:82d::200e"]
            },
            "parent_chain": ["DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668"],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com"
            ],
            "resolved_hosts": ["216.58.200.174", "2404:6800:4002:82d::200e"],
            "scope_distance": 0,
            "module_sequence": "TARGET",
            "discovery_context": "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
            "scope_description": "in-scope",
            "web_spider_distance": 0
          },
          {
            "id": "ORG_STUB:759730a97e4373f3a0ee12805db065e3a4a649a5",
            "data": "google",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "type": "ORG_STUB",
            "uuid": "ORG_STUB:088fb0c8-bb30-41f5-b57e-56b66670e361",
            "module": "speculate",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:11.169221+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "ORG_STUB:088fb0c8-bb30-41f5-b57e-56b66670e361"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "speculated ORG_STUB: google"
            ],
            "scope_distance": 0,
            "module_sequence": "speculate",
            "discovery_context": "speculated ORG_STUB: google",
            "scope_description": "in-scope",
            "web_spider_distance": 0
          },
          {
            "id": "DNS_NAME:3e7c47ea3789cc90277cb448686fa0b0bd2e40e0",
            "data": "alt2.gmr-smtp-in.l.google.com",
            "host": "alt2.gmr-smtp-in.l.google.com",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "affiliate",
              "distance-1",
              "a-record",
              "subdomain",
              "aaaa-record"
            ],
            "type": "DNS_NAME",
            "uuid": "DNS_NAME:2fb0c7c6-d46c-4586-adb0-ab9876fd579f",
            "module": "MX",
            "netloc": "alt2.gmr-smtp-in.l.google.com",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:11.143955+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "dns_children": {
              "A": ["142.250.141.14"],
              "AAAA": ["2607:f8b0:4023:c0b::e"]
            },
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "DNS_NAME:2fb0c7c6-d46c-4586-adb0-ab9876fd579f"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "MX record for drive.google.com contains DNS_NAME: alt2.gmr-smtp-in.l.google.com"
            ],
            "resolved_hosts": ["142.250.141.14", "2607:f8b0:4023:c0b::e"],
            "scope_distance": 1,
            "module_sequence": "MX",
            "discovery_context": "MX record for drive.google.com contains DNS_NAME: alt2.gmr-smtp-in.l.google.com",
            "scope_description": "affiliate",
            "web_spider_distance": 0
          },
          {
            "id": "DNS_NAME:5097a996c6b53e803b1b0cca2b3d30627905127c",
            "data": "alt4.gmr-smtp-in.l.google.com",
            "host": "alt4.gmr-smtp-in.l.google.com",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "affiliate",
              "distance-1",
              "a-record",
              "subdomain",
              "aaaa-record"
            ],
            "type": "DNS_NAME",
            "uuid": "DNS_NAME:e9e37555-2728-4231-a0fa-db61d4c3ff76",
            "module": "MX",
            "netloc": "alt4.gmr-smtp-in.l.google.com",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:11.148112+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "dns_children": {
              "A": ["108.177.104.14"],
              "AAAA": ["2607:f8b0:4003:c04::e"]
            },
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "DNS_NAME:e9e37555-2728-4231-a0fa-db61d4c3ff76"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "MX record for drive.google.com contains DNS_NAME: alt4.gmr-smtp-in.l.google.com"
            ],
            "resolved_hosts": ["108.177.104.14", "2607:f8b0:4003:c04::e"],
            "scope_distance": 1,
            "module_sequence": "MX",
            "discovery_context": "MX record for drive.google.com contains DNS_NAME: alt4.gmr-smtp-in.l.google.com",
            "scope_description": "affiliate",
            "web_spider_distance": 0
          },
          {
            "id": "DNS_NAME:2cf6794fe3f405b4272abfe29a861b877b04fd15",
            "data": "alt1.gmr-smtp-in.l.google.com",
            "host": "alt1.gmr-smtp-in.l.google.com",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "affiliate",
              "distance-1",
              "a-record",
              "subdomain",
              "aaaa-record"
            ],
            "type": "DNS_NAME",
            "uuid": "DNS_NAME:0340737b-a9d6-4ef8-8319-3373caf4678c",
            "module": "MX",
            "netloc": "alt1.gmr-smtp-in.l.google.com",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:11.145417+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "dns_children": {
              "A": ["108.177.98.14"],
              "AAAA": ["2607:f8b0:400e:c06::e"]
            },
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "DNS_NAME:0340737b-a9d6-4ef8-8319-3373caf4678c"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "MX record for drive.google.com contains DNS_NAME: alt1.gmr-smtp-in.l.google.com"
            ],
            "resolved_hosts": ["108.177.98.14", "2607:f8b0:400e:c06::e"],
            "scope_distance": 1,
            "module_sequence": "MX",
            "discovery_context": "MX record for drive.google.com contains DNS_NAME: alt1.gmr-smtp-in.l.google.com",
            "scope_description": "affiliate",
            "web_spider_distance": 0
          },
          {
            "id": "DNS_NAME:3a0e42bb8c8a593dddcbb8d1599eeb1f23338254",
            "data": "alt3.gmr-smtp-in.l.google.com",
            "host": "alt3.gmr-smtp-in.l.google.com",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "affiliate",
              "distance-1",
              "a-record",
              "subdomain",
              "aaaa-record"
            ],
            "type": "DNS_NAME",
            "uuid": "DNS_NAME:b380b460-da58-4f7b-a3da-df241b4f1f57",
            "module": "MX",
            "netloc": "alt3.gmr-smtp-in.l.google.com",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:11.146814+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "dns_children": {
              "A": ["142.251.186.14"],
              "AAAA": ["2607:f8b0:4023:100b::e"]
            },
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "DNS_NAME:b380b460-da58-4f7b-a3da-df241b4f1f57"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "MX record for drive.google.com contains DNS_NAME: alt3.gmr-smtp-in.l.google.com"
            ],
            "resolved_hosts": ["142.251.186.14", "2607:f8b0:4023:100b::e"],
            "scope_distance": 1,
            "module_sequence": "MX",
            "discovery_context": "MX record for drive.google.com contains DNS_NAME: alt3.gmr-smtp-in.l.google.com",
            "scope_description": "affiliate",
            "web_spider_distance": 0
          },
          {
            "id": "DNS_NAME:43dc26158378c720457ce6b852bec9f3a1cf315b",
            "data": "gmr-smtp-in.l.google.com",
            "host": "gmr-smtp-in.l.google.com",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "affiliate",
              "distance-1",
              "a-record",
              "subdomain",
              "aaaa-record"
            ],
            "type": "DNS_NAME",
            "uuid": "DNS_NAME:8f8e3b6e-b506-4a68-850d-a9ec0782d980",
            "module": "MX",
            "netloc": "gmr-smtp-in.l.google.com",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:11.149587+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "dns_children": {
              "A": ["172.217.194.14"],
              "AAAA": ["2404:6800:4003:c04::e"]
            },
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "DNS_NAME:8f8e3b6e-b506-4a68-850d-a9ec0782d980"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "MX record for drive.google.com contains DNS_NAME: gmr-smtp-in.l.google.com"
            ],
            "resolved_hosts": ["172.217.194.14", "2404:6800:4003:c04::e"],
            "scope_distance": 1,
            "module_sequence": "MX",
            "discovery_context": "MX record for drive.google.com contains DNS_NAME: gmr-smtp-in.l.google.com",
            "scope_description": "affiliate",
            "web_spider_distance": 0
          },
          {
            "id": "OPEN_TCP_PORT:def84f85de755270ac8965c50944c4437cf2433e",
            "data": "drive.google.com:443",
            "host": "drive.google.com",
            "port": 443,
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": ["in-scope"],
            "type": "OPEN_TCP_PORT",
            "uuid": "OPEN_TCP_PORT:71d59095-f027-424a-a7e9-90627cccaea9",
            "module": "speculate",
            "netloc": "drive.google.com:443",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:11.168468+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "dns_children": {},
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "OPEN_TCP_PORT:71d59095-f027-424a-a7e9-90627cccaea9"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "speculated OPEN_TCP_PORT: drive.google.com:443"
            ],
            "resolved_hosts": ["216.58.200.174", "2404:6800:4002:82d::200e"],
            "scope_distance": 0,
            "module_sequence": "speculate",
            "discovery_context": "speculated OPEN_TCP_PORT: drive.google.com:443",
            "scope_description": "in-scope",
            "web_spider_distance": 0
          },
          {
            "id": "STORAGE_BUCKET:026bf7e4bf2f67a590065dd1c6befb2a43c3204d",
            "data": {
              "url": "https://drive-google.s3.amazonaws.com/",
              "name": "drive-google"
            },
            "host": "drive-google.s3.amazonaws.com",
            "port": 443,
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "distance-1",
              "cloud-cname",
              "cloud-domain",
              "cloud-ip",
              "cloud-amazon"
            ],
            "type": "STORAGE_BUCKET",
            "uuid": "STORAGE_BUCKET:c07437c8-f335-4fb1-acf6-00a249c8b1ec",
            "module": "bucket_amazon",
            "netloc": "drive-google.s3.amazonaws.com:443",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:12.481691+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "dns_children": {},
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "STORAGE_BUCKET:c07437c8-f335-4fb1-acf6-00a249c8b1ec"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "bucket_amazon tried 6 bucket variations of drive.google.com and found STORAGE_BUCKET at https://drive-google.s3.amazonaws.com/"
            ],
            "resolved_hosts": [
              "16.15.192.252",
              "16.15.216.27",
              "16.182.67.121",
              "3.5.27.211",
              "52.217.114.81",
              "52.217.116.193",
              "52.217.141.241",
              "54.231.141.1",
              "s3-1-w.amazonaws.com"
            ],
            "scope_distance": 1,
            "module_sequence": "bucket_amazon",
            "discovery_context": "bucket_amazon tried 6 bucket variations of drive.google.com and found STORAGE_BUCKET at https://drive-google.s3.amazonaws.com/",
            "scope_description": "distance-1",
            "web_spider_distance": 0
          },
          {
            "id": "STORAGE_BUCKET:442c3317eeaceb5fb6e0c1fde836791091a19cfe",
            "data": {
              "url": "https://drive.google.s3.amazonaws.com/",
              "name": "drive.google"
            },
            "host": "drive.google.s3.amazonaws.com",
            "port": 443,
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "distance-1",
              "cloud-cname",
              "cloud-domain",
              "cloud-ip",
              "cloud-amazon"
            ],
            "type": "STORAGE_BUCKET",
            "uuid": "STORAGE_BUCKET:c693cc8d-fb0f-475e-a82d-5a4e5570dd0d",
            "module": "bucket_amazon",
            "netloc": "drive.google.s3.amazonaws.com:443",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:12.578292+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "dns_children": {},
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "STORAGE_BUCKET:c693cc8d-fb0f-475e-a82d-5a4e5570dd0d"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "bucket_amazon tried 6 bucket variations of drive.google.com and found STORAGE_BUCKET at https://drive.google.s3.amazonaws.com/"
            ],
            "resolved_hosts": [
              "3.5.132.189",
              "52.219.105.91",
              "52.219.106.204",
              "52.219.109.164",
              "52.219.142.92",
              "52.219.176.28",
              "52.219.80.164",
              "52.219.94.68",
              "s3-w.us-east-2.amazonaws.com"
            ],
            "scope_distance": 1,
            "module_sequence": "bucket_amazon",
            "discovery_context": "bucket_amazon tried 6 bucket variations of drive.google.com and found STORAGE_BUCKET at https://drive.google.s3.amazonaws.com/",
            "scope_description": "distance-1",
            "web_spider_distance": 0
          },
          {
            "id": "DNS_NAME:8951d2322f34618e343bb067deb7e74c9f39df39",
            "data": "drive-google.s3.amazonaws.com",
            "host": "drive-google.s3.amazonaws.com",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "distance-1",
              "a-record",
              "subdomain",
              "cloud-cname",
              "internal",
              "cloud-domain",
              "cloud-ip",
              "cloud-amazon",
              "cloud-storage-bucket",
              "cname-record"
            ],
            "type": "DNS_NAME",
            "uuid": "DNS_NAME:cb2dd66b-48ba-4c85-aa0b-00a1f4e7a358",
            "module": "host",
            "netloc": "drive-google.s3.amazonaws.com",
            "parent": "STORAGE_BUCKET:026bf7e4bf2f67a590065dd1c6befb2a43c3204d",
            "timestamp": "2025-03-18T18:33:12.528834+00:00",
            "parent_uuid": "STORAGE_BUCKET:c07437c8-f335-4fb1-acf6-00a249c8b1ec",
            "dns_children": {
              "A": [
                "54.231.141.1",
                "3.5.27.211",
                "16.15.216.27",
                "52.217.141.241",
                "16.182.67.121",
                "52.217.116.193",
                "16.15.192.252",
                "52.217.114.81"
              ],
              "CNAME": ["s3-1-w.amazonaws.com"]
            },
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "STORAGE_BUCKET:c07437c8-f335-4fb1-acf6-00a249c8b1ec",
              "DNS_NAME:cb2dd66b-48ba-4c85-aa0b-00a1f4e7a358"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "bucket_amazon tried 6 bucket variations of drive.google.com and found STORAGE_BUCKET at https://drive-google.s3.amazonaws.com/",
              "STORAGE_BUCKET has host DNS_NAME: drive-google.s3.amazonaws.com"
            ],
            "resolved_hosts": [
              "16.15.192.252",
              "16.15.216.27",
              "16.182.67.121",
              "3.5.27.211",
              "52.217.114.81",
              "52.217.116.193",
              "52.217.141.241",
              "54.231.141.1",
              "s3-1-w.amazonaws.com"
            ],
            "scope_distance": 1,
            "module_sequence": "host",
            "discovery_context": "STORAGE_BUCKET has host DNS_NAME: drive-google.s3.amazonaws.com",
            "scope_description": "distance-1",
            "web_spider_distance": 0
          },
          {
            "id": "DNS_NAME:3f2af1346e9dca6dd7dd71319a188b603343a2a2",
            "data": "drive.google.s3.amazonaws.com",
            "host": "drive.google.s3.amazonaws.com",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "distance-1",
              "a-record",
              "subdomain",
              "cloud-cname",
              "internal",
              "cloud-domain",
              "cloud-ip",
              "cloud-amazon",
              "cloud-storage-bucket",
              "cname-record"
            ],
            "type": "DNS_NAME",
            "uuid": "DNS_NAME:92ddf0d7-2204-4f89-a48b-b60f1452e540",
            "module": "host",
            "netloc": "drive.google.s3.amazonaws.com",
            "parent": "STORAGE_BUCKET:442c3317eeaceb5fb6e0c1fde836791091a19cfe",
            "timestamp": "2025-03-18T18:33:12.634416+00:00",
            "parent_uuid": "STORAGE_BUCKET:c693cc8d-fb0f-475e-a82d-5a4e5570dd0d",
            "dns_children": {
              "A": [
                "52.219.80.164",
                "52.219.142.92",
                "52.219.94.68",
                "3.5.132.189",
                "52.219.109.164",
                "52.219.106.204",
                "52.219.105.91",
                "52.219.176.28"
              ],
              "CNAME": ["s3-w.us-east-2.amazonaws.com"]
            },
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "STORAGE_BUCKET:c693cc8d-fb0f-475e-a82d-5a4e5570dd0d",
              "DNS_NAME:92ddf0d7-2204-4f89-a48b-b60f1452e540"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "bucket_amazon tried 6 bucket variations of drive.google.com and found STORAGE_BUCKET at https://drive.google.s3.amazonaws.com/",
              "STORAGE_BUCKET has host DNS_NAME: drive.google.s3.amazonaws.com"
            ],
            "resolved_hosts": [
              "3.5.132.189",
              "52.219.105.91",
              "52.219.106.204",
              "52.219.109.164",
              "52.219.142.92",
              "52.219.176.28",
              "52.219.80.164",
              "52.219.94.68",
              "s3-w.us-east-2.amazonaws.com"
            ],
            "scope_distance": 1,
            "module_sequence": "host",
            "discovery_context": "STORAGE_BUCKET has host DNS_NAME: drive.google.s3.amazonaws.com",
            "scope_description": "distance-1",
            "web_spider_distance": 0
          },
          {
            "id": "URL:0780bcbb200e14f22644e1d50e690d7b182205fb",
            "data": "http://drive.google.com/",
            "host": "drive.google.com",
            "port": 80,
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": ["status-301", "in-scope", "ip-216-58-200-174", "dir"],
            "type": "URL",
            "uuid": "URL:314fba3d-3e07-4738-b2b4-864ea70b2d60",
            "module": "httpx",
            "netloc": "drive.google.com:80",
            "parent": "OPEN_TCP_PORT:676157c68d38973c19b0219f406778eed0cf988d",
            "timestamp": "2025-03-18T18:33:13.078748+00:00",
            "parent_uuid": "OPEN_TCP_PORT:86270a85-0081-4e01-aff0-c589e33c6a49",
            "dns_children": {},
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "OPEN_TCP_PORT:86270a85-0081-4e01-aff0-c589e33c6a49",
              "URL:314fba3d-3e07-4738-b2b4-864ea70b2d60"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "speculated OPEN_TCP_PORT: drive.google.com:80",
              "httpx visited drive.google.com:80 and got status code 301 at http://drive.google.com/"
            ],
            "resolved_hosts": ["216.58.200.174"],
            "scope_distance": 0,
            "module_sequence": "httpx",
            "discovery_context": "httpx visited drive.google.com:80 and got status code 301 at http://drive.google.com/",
            "scope_description": "in-scope",
            "web_spider_distance": 0
          },
          {
            "id": "OPEN_TCP_PORT:676157c68d38973c19b0219f406778eed0cf988d",
            "data": "drive.google.com:80",
            "host": "drive.google.com",
            "port": 80,
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": ["in-scope"],
            "type": "OPEN_TCP_PORT",
            "uuid": "OPEN_TCP_PORT:86270a85-0081-4e01-aff0-c589e33c6a49",
            "module": "speculate",
            "netloc": "drive.google.com:80",
            "parent": "DNS_NAME:3df354cdfa01cabb91d8a89f0e3067c090679084",
            "timestamp": "2025-03-18T18:33:11.167937+00:00",
            "parent_uuid": "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
            "dns_children": {},
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "OPEN_TCP_PORT:86270a85-0081-4e01-aff0-c589e33c6a49"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "speculated OPEN_TCP_PORT: drive.google.com:80"
            ],
            "resolved_hosts": ["216.58.200.174", "2404:6800:4002:82d::200e"],
            "scope_distance": 0,
            "module_sequence": "speculate",
            "discovery_context": "speculated OPEN_TCP_PORT: drive.google.com:80",
            "scope_description": "in-scope",
            "web_spider_distance": 0
          },
          {
            "id": "URL:64212198a9a23a986be9f8dee7abefbbf9bb2e4d",
            "data": "https://drive.google.com/",
            "host": "drive.google.com",
            "port": 443,
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": ["in-scope", "status-302", "ip-216-58-200-174", "dir"],
            "type": "URL",
            "uuid": "URL:ccfe9a3e-8c0f-4635-b3f3-11cf3a4ffed3",
            "module": "httpx",
            "netloc": "drive.google.com:443",
            "parent": "OPEN_TCP_PORT:def84f85de755270ac8965c50944c4437cf2433e",
            "timestamp": "2025-03-18T18:33:13.633713+00:00",
            "parent_uuid": "OPEN_TCP_PORT:71d59095-f027-424a-a7e9-90627cccaea9",
            "dns_children": {},
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "OPEN_TCP_PORT:71d59095-f027-424a-a7e9-90627cccaea9",
              "URL:ccfe9a3e-8c0f-4635-b3f3-11cf3a4ffed3"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "speculated OPEN_TCP_PORT: drive.google.com:443",
              "httpx visited drive.google.com:443 and got status code 302 at https://drive.google.com/"
            ],
            "resolved_hosts": ["216.58.200.174"],
            "scope_distance": 0,
            "module_sequence": "httpx",
            "discovery_context": "httpx visited drive.google.com:443 and got status code 302 at https://drive.google.com/",
            "scope_description": "in-scope",
            "web_spider_distance": 0
          },
          {
            "id": "DNS_NAME:f170b1bf39804f864862b232d55ff7ca4e38f400",
            "data": "accounts.google.com",
            "host": "accounts.google.com",
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "tags": [
              "affiliate",
              "distance-1",
              "a-record",
              "subdomain",
              "aaaa-record"
            ],
            "type": "DNS_NAME",
            "uuid": "DNS_NAME:d8db6392-f593-48bb-87fc-abdc534a50b1",
            "module": "host",
            "netloc": "accounts.google.com",
            "parent": "URL:64212198a9a23a986be9f8dee7abefbbf9bb2e4d",
            "timestamp": "2025-03-18T18:33:13.763924+00:00",
            "parent_uuid": "URL:ccfe9a3e-8c0f-4635-b3f3-11cf3a4ffed3",
            "dns_children": {
              "A": ["74.125.130.84"],
              "AAAA": ["2404:6800:4003:c01::54"]
            },
            "parent_chain": [
              "DNS_NAME:ea8a4ef3-20fc-40a5-98a8-217ad8c01668",
              "OPEN_TCP_PORT:71d59095-f027-424a-a7e9-90627cccaea9",
              "URL:ccfe9a3e-8c0f-4635-b3f3-11cf3a4ffed3",
              "HTTP_RESPONSE:5a07c64e-98b6-4f4b-895a-ea00690c904e",
              "URL_UNVERIFIED:efb2807c-02d5-4402-bae5-0b1ded21804c",
              "DNS_NAME:d8db6392-f593-48bb-87fc-abdc534a50b1"
            ],
            "discovery_path": [
              "Scan melodramatic_magnus seeded with DNS_NAME: drive.google.com",
              "speculated OPEN_TCP_PORT: drive.google.com:443",
              "httpx visited drive.google.com:443 and got status code 302 at https://drive.google.com/",
              "HTTP_RESPONSE was 0B with application/binary content type",
              "excavate looked in \"Location\" header and found URL_UNVERIFIED: https://accounts.google.com/ServiceLogin",
              "URL_UNVERIFIED has host DNS_NAME: accounts.google.com"
            ],
            "resolved_hosts": ["2404:6800:4003:c01::54", "74.125.130.84"],
            "scope_distance": 1,
            "module_sequence": "httpx->excavate->host",
            "discovery_context": "URL_UNVERIFIED has host DNS_NAME: accounts.google.com",
            "scope_description": "affiliate",
            "web_spider_distance": 0
          },
          {
            "id": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "data": {
              "id": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
              "name": "melodramatic_magnus",
              "preset": {
                "flags": ["iis-shortnames", "web-basic"],
                "config": {
                  "modules": {
                    "iis_shortnames": {
                      "_enabled": false,
                      "detect_only": false
                    }
                  }
                },
                "description": "melodramatic_magnus",
                "output_modules": ["json"]
              },
              "status": "FINISHED",
              "target": {
                "hash": "7008a089a6499114586ffd51cc80bb5ca6152860",
                "seeds": ["drive.google.com"],
                "blacklist": [],
                "seed_hash": "3df354cdfa01cabb91d8a89f0e3067c090679084",
                "whitelist": ["drive.google.com"],
                "scope_hash": "ce57b9bdc30de2d3ae1e074f2082b34c13785c35",
                "strict_scope": false,
                "blacklist_hash": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
                "whitelist_hash": "3df354cdfa01cabb91d8a89f0e3067c090679084"
              },
              "duration": "2 minutes, 5 seconds",
              "started_at": "2025-03-18T18:31:52.209983",
              "finished_at": "2025-03-18T18:33:57.498087",
              "duration_seconds": 125.288104
            },
            "scan": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "type": "SCAN",
            "uuid": "SCAN:099b33de-17ea-46be-877f-4ecde99def37",
            "module": "TARGET",
            "parent": "SCAN:34c3f521bf78aff5586353cc3b123c8abba7b3cb",
            "timestamp": "2025-03-18T18:33:57.498793+00:00",
            "parent_uuid": "SCAN:099b33de-17ea-46be-877f-4ecde99def37",
            "parent_chain": [],
            "discovery_path": [],
            "scope_distance": 0,
            "module_sequence": "TARGET",
            "discovery_context": "Scan melodramatic_magnus completed in 2 minutes, 5 seconds with status FINISHED",
            "scope_description": "in-scope",
            "web_spider_distance": 0
          }
        ]
      },
      "errors": [],
      "start_time": "2025-03-18T18:31:50.917384Z",
      "description": "[BBOT](https://github.com/blacklanternsecurity/bbot) (Bighuge BLS Open Threat) domain/URL scanner.\r\nLeverages BBOT's Python library to perform scans with configurable modules and presets.",
      "data_model": {}
    }

image

@AnshSinghal
Copy link
Contributor Author

Hi @g4ze @fgibertoni,

This is the initial draft for the BBOT analyzer. The thing was I was getting a permissions error initially when I didn’t create a specific directory for BBOT because it creates some temporary files and outputs JSON. After creating a specific directory for BBOT, it gave me the below error while running:

 File "/usr/local/lib/python3.11/site-packages/bbot/core/helpers/depsinstaller/installer.py", line 99, in install
    self.install_core_deps()
  File "/usr/local/lib/python3.11/site-packages/bbot/core/helpers/depsinstaller/installer.py", line 413, in install_core_deps
    self.ensure_root()
  File "/usr/local/lib/python3.11/site-packages/bbot/core/helpers/depsinstaller/installer.py", line 373, in ensure_root
    if _sudo_password is not None or os.geteuid() == 0 or can_sudo_without_password():
                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/bbot/core/helpers/misc.py", line 1815, in can_sudo_without_password
    sp.run(["sudo", "-K"], stderr=sp.DEVNULL, stdout=sp.DEVNULL, check=True, env=env)
  File "/usr/local/lib/python3.11/subprocess.py", line 548, in run
    with Popen(*popenargs, **kwargs) as process:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/local/lib/python3.11/subprocess.py", line 1950, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'sudo'

BBOT is trying to install some additional packages/dependencies and during this process it checks for sudo command. Can you suggest something? Or am I going in the wrong direction?

@fgibertoni
Copy link
Contributor

I think the problem is that the main IntelOwl container doesn't have sudo installed.
After some digging I found that BBOT relies on some packages to be installed on host, are these installed ? Maybe we can avoid triggering this additional installation if this are already available in host image.

@AnshSinghal
Copy link
Contributor Author

I think the problem is that the main IntelOwl container doesn't have sudo installed. After some digging I found that BBOT relies on some packages to be installed on host, are these installed ? Maybe we can avoid triggering this additional installation if this are already available in host image.

can we install sudo in the main intelowl container?

@g4ze
Copy link
Member

g4ze commented Feb 26, 2025

If it requires sudo, should we consider making this a docker analyzer?

@AnshSinghal
Copy link
Contributor Author

Yes we can do that! @fgibertoni please confirm that should i make this a docker based analyzer?

After some digging I found that BBOT relies on some packages to be installed on host, are these installed ? Maybe we can avoid triggering this additional installation if this are already available in host image.

Some of the required dependencies are missing and need to be installed. However, as mentioned earlier, adding more dependencies makes management more challenging.

@fgibertoni
Copy link
Contributor

Docker analyzer sound good considering new packages to install and disk-related operations.
I think you can follow this analyzer as guideline on how to handle sudo permission. Or if you came up with something else we'll evaluate it 👍

@AnshSinghal
Copy link
Contributor Author

Update - I am trying different different methods on how can we handle this because its creating many files which some of them are not even needed. Its creating a .bbot/logs folder in the roor directory of IntelOwl and I am unable to change its directory. I need some time to explore this more. will update soon on this.

@g4ze
Copy link
Member

g4ze commented Mar 2, 2025

.bbot/logs folder

you can explicitly give it perms for that specific dir and nothing else. Also if youre using docker, then how is it using intelowl's root dir?
like here

@AnshSinghal
Copy link
Contributor Author

.bbot/logs folder

you can explicitly give it perms for that specific dir and nothing else. Also if youre using docker, then how is it using intelowl's root dir?

I am first trying to implement it without making it a docker analyser. If that doesn't work I will make it a docker analyzer. I am looking if we can somehow prevent it for using sudo

@AnshSinghal AnshSinghal mentioned this pull request Mar 8, 2025
@AnshSinghal
Copy link
Contributor Author

Hi! Sorry for the delays. I have tried everything and the only solution is to make it a Docker Based Analyzer. I am really sorry for a bit delay I got busy with university exams. I am now working on making it a Docker Analyzer. Will close this very soon.

@AnshSinghal
Copy link
Contributor Author

I have switched from Flask to Quart because Flask was unable to handle the async task and was terminating the same again and again. Currently I am facing an error with daemonic process are not allowed to have children. I am looking to solve this issue.

@AnshSinghal
Copy link
Contributor Author

Hi @fgibertoni @mlodic,

I've tried numerous workarounds to resolve the "daemonic processes are not allowed to have children" error when running BBOT as a Docker-based analyzer in IntelOwl. Here’s a summary of my findings:

I applied early monkey‑patches via site‑customize and directly in the application (patching both multiprocessing.Process and threading.Thread to force daemon = False). Despite these changes, some internal BBOT modules still spawn daemon processes.
I replaced Python’s standard multiprocessing with the Celery fork, billiard, which sometimes offers more flexibility in process creation. However, the error persisted.

I even switched from Flask to Quart to better support asynchronous endpoints (using Hypercorn), yet the problem remained.
I tested with different Python versions (3.9, 3.11, 3.12) to see if there was a version-specific issue. The error is consistent across versions, which aligns with Python’s documented behavior that daemon processes are not allowed to create children.
I attempted to disable modules like ffuf_shortnames and filedownload (which are known culprits), but other modules still trigger the same error when they attempt to spawn child processes.

The root issue appears to be that BBOT’s internal modules—when run in our Docker container—spawn child processes while their parent is marked as daemon. Python explicitly prohibits this. In BBOT’s code (for example, in bbot/scanner/scanner.py and bbot/core/modules.py), worker processes are created with the daemon flag set to True by default, leading to these errors.

The only workaround that seems viable is to run the BBOT scan in a separate OS process using the subprocess module instead of relying on multiprocessing. This approach would isolate the scan from the current process, bypassing the daemonic process limitation—but it would require significant re‑architecting of our integration.

In short, based on extensive testing and the various approaches I've tried, it appears that using the BBOT library as-is in a Docker container is unworkable. Would you consider either an alternative workaround using subprocess isolation or a re‑evaluation of the multiprocess design in BBOT?

@fgibertoni
Copy link
Contributor

I really appreciate your analysis, great work!
If you believe that this issue is present in BBOT library I think you should open an issue/discussion on their repository to see if anyone has managed to make it work in an environment similar to ours.

From IntelOwl's perspective I think that integration requires too much ad-hoc work that would then make maintenance of the project more difficult. So at the moment I think we should skip integrating this analyzer if the situation doesn't change.

@AnshSinghal
Copy link
Contributor Author

Thanks for your response! I’ll raise this issue on the BBOT repository and see if we get a positive response or any potential fixes from their side. If there’s a workable solution, I’ll continue working on the integration.

In the meantime, would it be possible to add BBOT as a Docker-based analyzer using subprocess? I completely understand if this is not ideal, but I’ve put a lot of effort into this and would really love to see it added as an analyzer, even in a temporary form, while we wait for an official resolution from BBOT.

Let me know what you think, and thanks again for your time and guidance!

@fgibertoni
Copy link
Contributor

I really understand your effort but atm I think we should wait for a response from the other side to avoid integrating ad-hoc code for this analyzer only.
If we get something out of the issue we can continue with this work. Thanks again for your work!

@AnshSinghal
Copy link
Contributor Author

Sure! 😊
I have raised the issue there and will work on this as soon as I get a response!

@AnshSinghal
Copy link
Contributor Author

I opened an issue in BBOT repository and got some clarifications and have now worked on the same. We need to work with FastAPI and uvicorn for BBOT to work. Hypercorn will not work because it by default sets the process to daemon. I have switched to FastAPI now (took some time because earlier I didn't work on the same so needed to explore more). Currently I am looking to fix the error where BBOT successfully completes the scan but IntelOwl returns a failed error.

@AnshSinghal AnshSinghal changed the title initial code and setiings for BBOT initial code and settings for BBOT Mar 23, 2025
@AnshSinghal
Copy link
Contributor Author

@fgibertoni please review

@AnshSinghal AnshSinghal changed the title initial code and settings for BBOT [Analyzer] Bbot Mar 23, 2025
@AnshSinghal AnshSinghal requested a review from fgibertoni March 24, 2025 11:45
ENV BBOT_HOME=${PROJECT_PATH}

# Create a non-root user
RUN useradd -ms /bin/bash ${USER}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You created the user but never actually added USER. That's correct ? Does the container need root to run ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

BBOT needs sudo for some dependencies.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can these permission be confined like in phishing analyzer's Dockerfile by giving the user only permission to run certain commands with sudo ?
If not no problem. We can just remove the addition of a new user

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I experimented the same we can move ahead by removing the addition of new user.

@fgibertoni
Copy link
Contributor

While you address these changes I'm creating the repository on Docker Hub for the new integration.

@AnshSinghal AnshSinghal requested a review from fgibertoni March 26, 2025 06:24
ENV BBOT_HOME=${PROJECT_PATH}

# Create a non-root user
RUN useradd -ms /bin/bash ${USER}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can these permission be confined like in phishing analyzer's Dockerfile by giving the user only permission to run certain commands with sudo ?
If not no problem. We can just remove the addition of a new user

AnshSinghal and others added 3 commits March 26, 2025 13:11
Co-authored-by: Federico Gibertoni <152909479+fgibertoni@users.noreply.github.com>
@AnshSinghal AnshSinghal mentioned this pull request Apr 2, 2025
4 tasks
@AnshSinghal AnshSinghal marked this pull request as ready for review April 2, 2025 14:03
@fgibertoni fgibertoni merged commit 3698116 into intelowlproject:develop Apr 2, 2025
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants