secator 0.11.0__tar.gz → 0.11.1__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 secator might be problematic. Click here for more details.
- {secator-0.11.0 → secator-0.11.1}/CHANGELOG.md +9 -0
- {secator-0.11.0 → secator-0.11.1}/PKG-INFO +1 -1
- {secator-0.11.0 → secator-0.11.1}/pyproject.toml +1 -1
- {secator-0.11.0 → secator-0.11.1}/secator/config.py +2 -2
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/_categories.py +6 -3
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/fping.py +1 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/grype.py +1 -1
- {secator-0.11.0 → secator-0.11.1}/secator/utils.py +3 -2
- {secator-0.11.0 → secator-0.11.1}/tests/integration/test_helpers.py +15 -1
- {secator-0.11.0 → secator-0.11.1}/.docker/Dockerfile.alpine +0 -0
- {secator-0.11.0 → secator-0.11.1}/.docker/Dockerfile.arch +0 -0
- {secator-0.11.0 → secator-0.11.1}/.docker/Dockerfile.debian +0 -0
- {secator-0.11.0 → secator-0.11.1}/.docker/Dockerfile.kali +0 -0
- {secator-0.11.0 → secator-0.11.1}/.docker/Dockerfile.osx +0 -0
- {secator-0.11.0 → secator-0.11.1}/.docker/Dockerfile.ubuntu +0 -0
- {secator-0.11.0 → secator-0.11.1}/.docker/build_all.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/.dockerignore +0 -0
- {secator-0.11.0 → secator-0.11.1}/.flake8 +0 -0
- {secator-0.11.0 → secator-0.11.1}/.gitignore +0 -0
- {secator-0.11.0 → secator-0.11.1}/CONTRIBUTING.md +0 -0
- {secator-0.11.0 → secator-0.11.1}/Dockerfile +0 -0
- {secator-0.11.0 → secator-0.11.1}/LICENSE +0 -0
- {secator-0.11.0 → secator-0.11.1}/README.md +0 -0
- {secator-0.11.0 → secator-0.11.1}/SECURITY.md +0 -0
- {secator-0.11.0 → secator-0.11.1}/cloudbuild.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/helm/.helmignore +0 -0
- {secator-0.11.0 → secator-0.11.1}/helm/Chart.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/helm/templates/redis-service.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/helm/templates/redis.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/helm/templates/secator-manager.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/helm/templates/secator-worker.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/helm/values.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/download_cves.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/install.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/install_asciinema.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/install_go.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/install_ruby.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/msf/exploit_cve.rc +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/msf/ftp_anonymous.rc +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/msf/ftp_version.rc +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/msf/ftp_vsftpd_234_backdoor.rc +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/msf/redis.rc +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/stories/STORY.md +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/stories/aliases.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/stories/demo.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/stories/fmt.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/stories/input.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/stories/pipe.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/scripts/stories/short_demo.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/.gitignore +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/celery.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/celery_signals.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/celery_utils.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/cli.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/profiles/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/profiles/aggressive.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/profiles/default.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/profiles/stealth.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/scans/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/scans/domain.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/scans/host.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/scans/network.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/scans/subdomain.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/scans/url.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/cidr_recon.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/code_scan.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/host_recon.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/subdomain_recon.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/url_bypass.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/url_crawl.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/url_dirsearch.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/url_fuzz.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/url_nuclei.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/url_params_fuzz.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/url_vuln.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/user_hunt.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/configs/workflows/wordpress.yaml +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/decorators.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/definitions.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/exporters/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/exporters/_base.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/exporters/console.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/exporters/csv.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/exporters/gdrive.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/exporters/json.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/exporters/table.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/exporters/txt.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/hooks/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/hooks/gcs.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/hooks/mongodb.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/installer.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/_base.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/certificate.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/error.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/exploit.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/info.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/ip.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/port.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/progress.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/record.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/stat.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/state.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/subdomain.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/tag.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/target.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/url.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/user_account.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/vulnerability.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/output_types/warning.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/report.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/rich.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/runners/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/runners/_base.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/runners/_helpers.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/runners/celery.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/runners/command.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/runners/scan.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/runners/task.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/runners/workflow.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/scans/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/serializers/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/serializers/dataclass.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/serializers/json.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/serializers/regex.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/arjun.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/bbot.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/bup.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/cariddi.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/dalfox.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/dirsearch.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/dnsx.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/dnsxbrute.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/feroxbuster.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/ffuf.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/gau.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/gf.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/gitleaks.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/gospider.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/h8mail.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/httpx.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/katana.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/maigret.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/mapcidr.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/msfconsole.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/naabu.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/nmap.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/nuclei.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/searchsploit.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/subfinder.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/testssl.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/trivy.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/wafw00f.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/wpprobe.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/tasks/wpscan.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/template.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/thread.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/utils_test.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/secator/workflows/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/fixtures/h8mail_breach.txt +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/fixtures/ls.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/fixtures/msfconsole_input.rc +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/fixtures/nmap_output.xml +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/inputs.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/outputs.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/setup.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/teardown.sh +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/test_addons.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/test_celery.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/test_scans.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/test_tasks.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/test_worker.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/test_workflows.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/wordlist.txt +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/wordlist_dns.txt +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/wordpress_toolbox/Dockerfile +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/integration/wordpress_toolbox/Makefile +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/performance/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/performance/loadtester.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/performance/test_worker.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/__init__.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_celery.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_cli.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_command.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_config.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_offline.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_runners.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_scans.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_serializers.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_tasks.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_tasks_categories.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_template.py +0 -0
- {secator-0.11.0 → secator-0.11.1}/tests/unit/test_utils.py +0 -0
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.11.1](https://github.com/freelabz/secator/compare/v0.11.0...v0.11.1) (2025-04-23)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* fping ret code ([#593](https://github.com/freelabz/secator/issues/593)) ([f2d0982](https://github.com/freelabz/secator/commit/f2d0982ea665a08d24afd3f80c8f976811daa397))
|
|
9
|
+
* ghsa lookups, startup file downloads ([#592](https://github.com/freelabz/secator/issues/592)) ([021bf11](https://github.com/freelabz/secator/commit/021bf11b6cd7d9ecb5dd95b45d6411d1feeeb86c))
|
|
10
|
+
* wordlist dynamic download ([#595](https://github.com/freelabz/secator/issues/595)) ([9a859ae](https://github.com/freelabz/secator/commit/9a859ae8f391bb73263b356ef166f5685683c30f))
|
|
11
|
+
|
|
3
12
|
## [0.11.0](https://github.com/freelabz/secator/compare/v0.10.0...v0.11.0) (2025-04-22)
|
|
4
13
|
|
|
5
14
|
|
|
@@ -623,8 +623,8 @@ for name, dir in CONFIG.dirs.items():
|
|
|
623
623
|
console.print('[bold green]ok.[/]')
|
|
624
624
|
|
|
625
625
|
# Download wordlists and payloads
|
|
626
|
-
download_files(CONFIG.wordlists.templates, CONFIG.dirs.wordlists, CONFIG.offline_mode, 'wordlist')
|
|
627
|
-
download_files(CONFIG.payloads.templates, CONFIG.dirs.payloads, CONFIG.offline_mode, 'payload')
|
|
626
|
+
# download_files(CONFIG.wordlists.templates, CONFIG.dirs.wordlists, CONFIG.offline_mode, 'wordlist')
|
|
627
|
+
# download_files(CONFIG.payloads.templates, CONFIG.dirs.payloads, CONFIG.offline_mode, 'payload')
|
|
628
628
|
|
|
629
629
|
# Print config
|
|
630
630
|
if CONFIG.debug.component == 'config':
|
|
@@ -393,11 +393,11 @@ class Vuln(Command):
|
|
|
393
393
|
|
|
394
394
|
@cache
|
|
395
395
|
@staticmethod
|
|
396
|
-
def
|
|
396
|
+
def lookup_cve_from_ghsa(ghsa_id):
|
|
397
397
|
"""Search for a GHSA on Github and and return associated CVE vulnerability data.
|
|
398
398
|
|
|
399
399
|
Args:
|
|
400
|
-
ghsa (str):
|
|
400
|
+
ghsa (str): GHSA ID in the form GHSA-*
|
|
401
401
|
|
|
402
402
|
Returns:
|
|
403
403
|
dict: vulnerability data.
|
|
@@ -410,7 +410,10 @@ class Vuln(Command):
|
|
|
410
410
|
return None
|
|
411
411
|
soup = BeautifulSoup(resp.text, 'lxml')
|
|
412
412
|
sidebar_items = soup.find_all('div', {'class': 'discussion-sidebar-item'})
|
|
413
|
-
cve_id = sidebar_items[
|
|
413
|
+
cve_id = sidebar_items[3].find('div').text.strip()
|
|
414
|
+
if not cve_id.startswith('CVE'):
|
|
415
|
+
debug(f'{ghsa_id}: No CVE_ID extracted from https://github.com/advisories/{ghsa_id}', sub='cve')
|
|
416
|
+
return None
|
|
414
417
|
vuln = Vuln.lookup_cve(cve_id)
|
|
415
418
|
if vuln:
|
|
416
419
|
vuln[TAGS].append('ghsa')
|
|
@@ -66,7 +66,7 @@ class grype(VulnCode):
|
|
|
66
66
|
if vuln_id.startswith('GHSA'):
|
|
67
67
|
data['provider'] = 'github.com'
|
|
68
68
|
data['references'] = [f'https://github.com/advisories/{vuln_id}']
|
|
69
|
-
vuln = VulnCode.
|
|
69
|
+
vuln = VulnCode.lookup_cve_from_ghsa(vuln_id)
|
|
70
70
|
if vuln:
|
|
71
71
|
data.update(vuln)
|
|
72
72
|
data['severity'] = data['severity'] or severity.lower()
|
|
@@ -781,8 +781,9 @@ def process_wordlist(val):
|
|
|
781
781
|
val = default_wordlist
|
|
782
782
|
template_wordlist = getattr(CONFIG.wordlists.templates, val)
|
|
783
783
|
if template_wordlist:
|
|
784
|
-
|
|
785
|
-
|
|
784
|
+
val = template_wordlist
|
|
785
|
+
|
|
786
|
+
if Path(val).exists():
|
|
786
787
|
return val
|
|
787
788
|
else:
|
|
788
789
|
return download_file(
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import os
|
|
2
3
|
import unittest
|
|
3
4
|
|
|
4
5
|
from pathlib import Path
|
|
6
|
+
from unittest import mock
|
|
5
7
|
|
|
6
|
-
from secator.utils_test import load_fixture, FIXTURES_DIR
|
|
8
|
+
from secator.utils_test import load_fixture, FIXTURES_DIR, clear_modules
|
|
7
9
|
from secator.tasks._categories import Vuln
|
|
8
10
|
from secator.config import CONFIG
|
|
9
11
|
|
|
@@ -17,3 +19,15 @@ class TestHelpers(unittest.TestCase):
|
|
|
17
19
|
Path(cve_path).unlink() # make sure we don't use cache data
|
|
18
20
|
actual = json.dumps(Vuln.lookup_cve_from_cve_circle('CVE-2023-5568'), sort_keys=True)
|
|
19
21
|
self.assertEqual(actual, fixture)
|
|
22
|
+
|
|
23
|
+
def test_lookup_cve_from_ghsa_no_cve_id(self):
|
|
24
|
+
actual = Vuln.lookup_cve_from_ghsa('GHSA-ggpf-24jw-3fcw')
|
|
25
|
+
self.assertIsNone(actual)
|
|
26
|
+
|
|
27
|
+
@mock.patch.dict(os.environ, {'SECATOR_RUNNERS_SKIP_CVE_SEARCH': '0'})
|
|
28
|
+
def test_lookup_cve_from_ghsa(self):
|
|
29
|
+
clear_modules()
|
|
30
|
+
from secator.tasks._categories import Vuln
|
|
31
|
+
actual = Vuln.lookup_cve_from_ghsa('GHSA-w596-4wvx-j9j6')
|
|
32
|
+
self.assertIsNotNone(actual)
|
|
33
|
+
self.assertEqual(actual['id'], 'CVE-2022-42969')
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|