Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
219 commits
Select commit Hold shift + click to select a range
02c1476
trufflehog: stream HTTP body via stdin, include source url on findings
liquidsec Jul 10, 2026
c84f89d
add js-audit preset
liquidsec Jul 10, 2026
e0f1e97
Merge branch 'dev' into js-audit
liquidsec Jul 12, 2026
7786c8d
bump trufflehog _module_threads to 2
liquidsec Jul 20, 2026
2016c4e
Merge branch 'dev' into js-audit
liquidsec Jul 20, 2026
fab03be
Merge pull request #3297 from blacklanternsecurity/js-audit
liquidsec Jul 21, 2026
c53ef22
Update trufflehog
blsaccess Jul 25, 2026
d4ad487
Merge pull request #3337 from blacklanternsecurity/update-trufflehog
liquidsec Jul 25, 2026
7189a61
[create-pull-request] automated change
blsaccess Jul 26, 2026
f36e375
Bump pre-commit from 4.6.0 to 4.6.1
dependabot[bot] Jul 26, 2026
e51e2d9
Bump actions/setup-python from 6 to 7 in the github-actions group
dependabot[bot] Jul 26, 2026
7987aeb
Bump fastapi from 0.139.2 to 0.140.0
dependabot[bot] Jul 26, 2026
f282415
Bump pytest-env from 1.6.0 to 1.7.0
dependabot[bot] Jul 26, 2026
7d958c2
Bump mmh3 from 5.2.0 to 5.2.1
dependabot[bot] Jul 26, 2026
25d1d9d
Bump cachetools from 7.1.4 to 7.1.6
dependabot[bot] Jul 26, 2026
e7207f6
Bump orjson from 3.11.7 to 3.11.9
dependabot[bot] Jul 26, 2026
7275d4a
Bump regex from 2026.7.10 to 2026.7.19
dependabot[bot] Jul 26, 2026
d96cd79
Merge pull request #3351 from blacklanternsecurity/dependabot/uv/dev/…
liquidsec Jul 27, 2026
4be1751
Fix docker_pull crash on failed registry request
liquidsec Jul 27, 2026
43c717c
Merge pull request #3346 from blacklanternsecurity/dependabot/uv/dev/…
liquidsec Jul 27, 2026
4c4c2ec
Merge pull request #3341 from blacklanternsecurity/update-docs
liquidsec Jul 27, 2026
e945857
Merge pull request #3342 from blacklanternsecurity/dependabot/uv/dev/…
liquidsec Jul 27, 2026
9bbc7d8
Merge pull request #3347 from blacklanternsecurity/dependabot/uv/dev/…
liquidsec Jul 27, 2026
2e76067
Merge pull request #3344 from blacklanternsecurity/dependabot/uv/dev/…
liquidsec Jul 27, 2026
972c415
Merge pull request #3345 from blacklanternsecurity/dependabot/uv/dev/…
liquidsec Jul 27, 2026
bdadd2a
Merge pull request #3348 from blacklanternsecurity/dependabot/uv/dev/…
liquidsec Jul 27, 2026
ad75da5
Bump uvicorn from 0.39.0 to 0.51.0
dependabot[bot] Jul 27, 2026
92b962b
Merge pull request #3343 from blacklanternsecurity/dependabot/github_…
liquidsec Jul 27, 2026
d78584e
Merge pull request #3349 from blacklanternsecurity/dependabot/uv/dev/…
liquidsec Jul 27, 2026
cccc263
Merge pull request #3352 from blacklanternsecurity/docker-pull-none-r…
liquidsec Jul 27, 2026
3be13de
ci: pass benchmark refs through env and quote them (#3354)
kobihikri Jul 29, 2026
00a3cc1
Reinstall module deps when they're missing from the environment (#3338)
liquidsec Jul 31, 2026
201106b
Bump packaging from 26.0 to 26.2 (#3365)
dependabot[bot] Aug 5, 2026
5e088d7
Bump pytest-httpserver from 1.1.4 to 1.1.5 (#3364)
dependabot[bot] Aug 5, 2026
c278cc7
Bump lxml from 6.1.0 to 6.1.1 (#3362)
dependabot[bot] Aug 5, 2026
e6829e8
Bump pip from 26.1.2 to 26.2 (#3360)
dependabot[bot] Aug 5, 2026
0c0f95a
Bump uvicorn from 0.51.0 to 0.52.0 (#3363)
dependabot[bot] Aug 5, 2026
db7677b
Bump fastapi from 0.140.0 to 0.141.1 (#3361)
dependabot[bot] Aug 5, 2026
5326417
Bump pip from 26.2 to 26.2.1 (#3369)
dependabot[bot] Aug 11, 2026
b19ef9e
Bump packaging from 26.2 to 26.3 (#3371)
dependabot[bot] Aug 11, 2026
c8e377b
Parallelize test suite with pytest-xdist (#3353)
singlerider Aug 11, 2026
f130e8e
Bump uvicorn from 0.52.0 to 0.52.1 (#3368)
dependabot[bot] Aug 11, 2026
2b5fc46
Bump cachetools from 7.1.6 to 7.1.7 (#3372)
dependabot[bot] Aug 11, 2026
e9ad309
Bump websockets from 16.0 to 16.1.1 (#3312)
dependabot[bot] Aug 11, 2026
da7c1a6
Bump ruff from 0.15.22 to 0.16.1 (#3370)
dependabot[bot] Aug 11, 2026
1ac36b6
Update nuclei (#3367)
blsaccess Aug 11, 2026
ff171ad
[create-pull-request] automated change (#3373)
blsaccess Aug 12, 2026
288d717
Fix custom YARA rules matching but emitting nothing (#3374)
liquidsec Aug 13, 2026
877f02d
Raise process pool max_tasks_per_child from 25 to 250 (#3375)
singlerider Aug 15, 2026
c161406
Update trufflehog (#3376)
blsaccess Aug 15, 2026
29c4c95
Bump pip from 26.2 to 26.2.1 (#3380)
dependabot[bot] Aug 17, 2026
6048ed7
Bump tldextract from 5.3.1 to 5.3.2 (#3381)
dependabot[bot] Aug 17, 2026
a4aa3a3
Bump packaging from 26.2 to 26.3 (#3378)
dependabot[bot] Aug 17, 2026
b9c4452
Bump ruff from 0.16.1 to 0.16.2 (#3379)
dependabot[bot] Aug 20, 2026
afab2e8
Bump pre-commit from 4.6.1 to 4.6.2 (#3383)
dependabot[bot] Aug 20, 2026
7a3b879
Bump xxhash from 3.8.1 to 4.0.0 (#3382)
dependabot[bot] Aug 20, 2026
39df661
bump blasthttp to 0.10.0 (#3385)
liquidsec Aug 21, 2026
91e49ca
Bump version to 3.0.2 (#3387)
liquidsec Aug 21, 2026
9d516e8
don't treat an undecoded response body as content (#3389)
liquidsec Aug 21, 2026
3c46fc5
Update trufflehog (#3403)
blsaccess Aug 26, 2026
19f2a57
Bump lxml from 6.1.1 to 6.1.2 (#3397)
dependabot[bot] Aug 26, 2026
461144a
Bump ruff from 0.16.2 to 0.16.3 (#3395)
dependabot[bot] Aug 26, 2026
a2aec50
Bump mkdocstrings-python from 2.0.5 to 2.0.7 (#3393)
dependabot[bot] Aug 26, 2026
dfc4afa
Bump uvicorn from 0.52.1 to 0.52.4 (#3400)
dependabot[bot] Aug 26, 2026
4922cc3
Speed up compute_simhash and correct executor placements (#3331)
liquidsec Aug 26, 2026
773facb
Require positive confirmation for lightfuzz code-change findings (#3357)
liquidsec Aug 26, 2026
a394d12
Bump idna from 3.18 to 3.19 (#3399)
dependabot[bot] Aug 26, 2026
cd4284c
Bump xxhash from 4.0.0 to 4.0.1 (#3392)
dependabot[bot] Aug 28, 2026
2ff6aa1
Bump pytest-rerunfailures from 16.4 to 16.6 (#3398)
dependabot[bot] Aug 28, 2026
b7aff43
Bump ruff from 0.16.3 to 0.16.4 (#3414)
dependabot[bot] Aug 31, 2026
f9e6a8d
Bump pymdown-extensions from 11.0.1 to 11.0.2 (#3412)
dependabot[bot] Aug 31, 2026
3f81523
Bump maturin from 1.14.1 to 1.15.0 (#3409)
dependabot[bot] Aug 31, 2026
f63ddbb
Bump pytest-benchmark from 5.2.3 to 5.3.0 (#3410)
dependabot[bot] Aug 31, 2026
8a52dd2
Bump pyzmq from 27.1.0 to 27.2.0 (#3413)
dependabot[bot] Aug 31, 2026
ba49607
Bump mmh3 from 5.2.1 to 5.3.0 (#3411)
dependabot[bot] Aug 31, 2026
dd9b158
ci: clarify tool version updater workflow name (#3415)
DatenpflegeNordHL Aug 31, 2026
a025da1
Update trufflehog (#3417)
blsaccess Sep 3, 2026
c4d14be
Bump orjson from 3.11.9 to 3.12.0 (#3396)
dependabot[bot] Sep 3, 2026
dcd7a7a
Bump griffe from 2.1.0 to 2.2.0 (#3394)
dependabot[bot] Sep 3, 2026
f9bdcb3
Bump griffe from 2.2.0 to 2.3.0 (#3434)
dependabot[bot] Sep 15, 2026
cb2cf28
Bump cachetools from 7.1.7 to 7.1.8 (#3425)
dependabot[bot] Sep 15, 2026
358f340
Bump regex from 2026.7.19 to 2026.9.10 (#3435)
dependabot[bot] Sep 15, 2026
fd5bed0
Bump pytest-rerunfailures from 16.6 to 16.6.1 (#3433)
dependabot[bot] Sep 15, 2026
e1cc6df
AGENTS.md: fix the options section and refresh stale module examples …
repins267 Sep 16, 2026
2d7ef0d
Update trufflehog (#3418)
blsaccess Sep 16, 2026
c01a52d
Add 3.0.0-3.0.2 release notes to release history (#3408)
liquidsec Sep 16, 2026
bc35df1
Bump ruff from 0.16.4 to 0.16.6 (#3432)
dependabot[bot] Sep 16, 2026
0c60414
Bump pytest-env from 1.7.0 to 1.7.1 (#3436)
dependabot[bot] Sep 16, 2026
58f59f8
Bump lxml from 6.1.2 to 6.1.3 (#3422)
dependabot[bot] Sep 16, 2026
48b939a
Bump mkdocstrings-python from 2.0.7 to 2.0.8 (#3424)
dependabot[bot] Sep 16, 2026
0c510b1
Bump pydantic from 2.13.4 to 2.13.5 (#3426)
dependabot[bot] Sep 16, 2026
6a0b11a
fix hostless sort sentinel type mismatch in Target.add() (#3391)
liquidsec Sep 21, 2026
76a0977
Bump urllib3 from 2.7.0 to 2.8.0 (#3449)
dependabot[bot] Sep 21, 2026
6787661
Bump pyjwt from 2.13.0 to 2.14.0 (#3451)
dependabot[bot] Sep 21, 2026
76d63cb
[create-pull-request] automated change (#3439)
blsaccess Sep 21, 2026
8e79a53
Bump uvicorn from 0.52.4 to 0.53.0 (#3452)
dependabot[bot] Sep 21, 2026
07e6eba
telerik: overhaul, native RAU + DialogHandler crypto (#3333)
liquidsec Sep 21, 2026
c18eb23
Bump ruff from 0.16.6 to 0.16.8 (#3453)
dependabot[bot] Sep 22, 2026
1fa9da2
Add nowafpls Cloudflare WAF bypass detector (#3336)
liquidsec Sep 23, 2026
20b328e
Bump cachetools from 7.1.8 to 7.2.0 (#3454)
dependabot[bot] Sep 23, 2026
b48b41f
Bump pymdown-extensions from 11.0.2 to 12.0.1 (#3450)
dependabot[bot] Sep 23, 2026
47e3e90
Add js_unpacker module for detecting and unpacking obfuscated JS (#3335)
liquidsec Sep 24, 2026
440aacb
Set url_extension on HTTP_RESPONSE events (#3406)
liquidsec Sep 24, 2026
2889e12
Update trufflehog (#3438)
blsaccess Sep 24, 2026
8b360ed
crt: request an explicit / path (blasthttp sends an empty path, which…
wandering-walnut Sep 24, 2026
c4c0c13
[create-pull-request] automated change (#3455)
blsaccess Sep 24, 2026
b2e16af
Update trufflehog (#3463)
blsaccess Sep 25, 2026
00f85bd
Add module setup troubleshooting notes (#3228)
dashitongzhi Sep 25, 2026
d74a0ef
Bump mkdocstrings-python from 2.0.8 to 2.0.9 (#3469)
dependabot[bot] Sep 28, 2026
e2ea2fc
Bump pyjwt from 2.14.0 to 2.15.0 (#3468)
dependabot[bot] Sep 28, 2026
36f6890
Bump pytest-rerunfailures from 16.6.1 to 16.7 (#3470)
dependabot[bot] Sep 28, 2026
c9f1988
Bump idna from 3.19 to 3.20 (#3472)
dependabot[bot] Sep 28, 2026
b9dfbe1
[create-pull-request] automated change (#3467)
blsaccess Sep 28, 2026
f52732d
Bump pymdown-extensions from 12.0.1 to 12.1 (#3471)
dependabot[bot] Sep 28, 2026
e145a2f
ci: pin the runner image (#3456)
singlerider Sep 29, 2026
167a458
Fix unbounded lightfuzz queue growth from parameter re-discovery loop…
liquidsec Oct 1, 2026
c5cf189
Add a test-matrix status check, name every job (#3356)
singlerider Oct 1, 2026
58fe07e
Selectively Replace DeepDiff Due to Performance Issues (#3340)
liquidsec Oct 1, 2026
1dd5448
[create-pull-request] automated change (#3482)
blsaccess Oct 2, 2026
da1397a
ci: pin the test-matrix runner and the CLA workflow ref (#3483)
singlerider Oct 3, 2026
97300d5
Bump ruff from 0.16.8 to 0.16.9 (#3492)
dependabot[bot] Oct 5, 2026
cb03f2d
Bump mmh3 from 5.3.0 to 5.3.1 (#3488)
dependabot[bot] Oct 5, 2026
1471146
Bump fastapi from 0.141.1 to 0.142.2 (#3494)
dependabot[bot] Oct 5, 2026
abaa52c
Bump uvicorn from 0.53.0 to 0.54.0 (#3489)
dependabot[bot] Oct 5, 2026
bc2f9fd
Bump re-actors/alls-green (#3495)
dependabot[bot] Oct 5, 2026
652839f
Delete duplicate response_to_json, unify on response_to_event_dict (#…
liquidsec Oct 5, 2026
5cccd2c
Keep inherited port on ClosestHostEvent and restore port from JSON (#…
liquidsec Oct 5, 2026
b2dd81a
Tighten lightfuzz serial Error Resolution (#3427)
liquidsec Oct 5, 2026
4268e23
waf_bypass: only attempt bypasses against scan targets by default (#3…
liquidsec Oct 5, 2026
fd60ef5
Add origin check and depth limit to gitdumper directory listing (#3466)
liquidsec Oct 5, 2026
525865b
Overhaul api_request rate limiting and add config deprecation support…
liquidsec Oct 5, 2026
cae5346
ci(dependabot): weekly grouped updates and shared auto-merge for mino…
singlerider Oct 6, 2026
89bb534
Update trufflehog (#3499)
blsaccess Oct 6, 2026
8e3d0ec
read raw Cookie header in lightfuzz sqli cookie test (#3498)
liquidsec Oct 6, 2026
7c1fcc9
Verify hosts are alive before emitting wayback URLs (#3359)
liquidsec Oct 6, 2026
7aeee20
fix: request sqlalchemy's asyncio extra in the SQL output modules (#3…
liquidsec Oct 7, 2026
a536fa1
[create-pull-request] automated change (#3504)
blsaccess Oct 7, 2026
24b0927
Update trufflehog (#3503)
blsaccess Oct 7, 2026
3be1b99
Add long redirection response detection to excavate (#3481)
liquidsec Oct 7, 2026
85ff8e7
Convert dnsdumpster to the authenticated API (#3458)
liquidsec Oct 7, 2026
a4c2752
Bump regex from 2026.9.10 to 2026.9.29 (#3493)
dependabot[bot] Oct 7, 2026
e70cc33
Bump werkzeug from 3.1.8 to 3.1.9 (#3490)
dependabot[bot] Oct 8, 2026
ce6decf
[create-pull-request] automated change (#3509)
blsaccess Oct 8, 2026
603978e
Don't tag in-scope events as affiliate (#3524)
liquidsec Oct 14, 2026
b26b57e
Count lightfuzz baseline URLs against spider distance (#3523)
liquidsec Oct 14, 2026
9fc5018
Update trufflehog (#3511)
blsaccess Oct 14, 2026
fb27e8d
Resolve excavated relative URLs against <base href> (#3522)
liquidsec Oct 14, 2026
f82a66c
Bump orjson from 3.12.0 to 3.13.0 (#3518)
dependabot[bot] Oct 14, 2026
409a4c1
Bump tldextract from 5.3.2 to 5.4.0 (#3516)
dependabot[bot] Oct 14, 2026
e8bb199
Bump setproctitle from 1.3.7 to 1.3.8 (#3515)
dependabot[bot] Oct 14, 2026
3429cc1
Bump fastapi from 0.142.2 to 0.142.4 (#3512)
dependabot[bot] Oct 14, 2026
2948b6f
Bump cachetools from 7.2.0 to 7.2.1 (#3513)
dependabot[bot] Oct 14, 2026
49dbc20
Bump pycryptodome from 3.23.0 to 3.24.0 (#3517)
dependabot[bot] Oct 14, 2026
cf5ddbe
Bump pyjwt from 2.15.0 to 2.15.1 (#3491)
dependabot[bot] Oct 14, 2026
e6b336f
Bump pytest-httpserver from 1.1.5 to 1.2.0 (#3514)
dependabot[bot] Oct 14, 2026
bd55248
Add otilabs subdomain module (#3496)
OsirisTechnicalInstitute Oct 15, 2026
1e288b8
[create-pull-request] automated change (#3527)
blsaccess Oct 15, 2026
484cfb6
Bump ruff from 0.16.9 to 0.16.10 (#3519)
dependabot[bot] Oct 15, 2026
1ba9554
Bump pydantic from 2.13.5 to 2.14.1 (#3537)
dependabot[bot] Oct 19, 2026
9114ebd
bump badsecrets to 1.3.0 (#3526)
liquidsec Oct 19, 2026
055319d
Include git commit hash in version output for git checkouts (#3530)
liquidsec Oct 19, 2026
fc72ee6
Bump ruff from 0.16.10 to 0.17.0 (#3538)
dependabot[bot] Oct 19, 2026
9c12bc7
Bump pymdown-extensions from 12.1 to 12.3 (#3541)
dependabot[bot] Oct 19, 2026
9598f7d
Add favicon module for technology detection (#3532)
liquidsec Oct 19, 2026
e89bd2c
Name CPE-derived technologies by product and retain the CPE (#3535)
liquidsec Oct 19, 2026
fea99f5
Fix nested wildcard detection in is_wildcard (#3536)
liquidsec Oct 19, 2026
ddc74c1
Bump pycryptodome from 3.24.0 to 4.0.0 (#3542)
dependabot[bot] Oct 20, 2026
44fb020
Update trufflehog (#3556)
blsaccess Oct 20, 2026
294b8c4
[create-pull-request] automated change (#3529)
blsaccess Oct 20, 2026
9be1ae9
Security dependency updates (#3557)
liquidsec Oct 20, 2026
be0c0ee
Bump fastapi from 0.142.4 to 0.143.1 (#3540)
dependabot[bot] Oct 20, 2026
a572aa3
Reject symlinks in unarchive output after extraction (#3560)
liquidsec Oct 21, 2026
83ec2ec
[create-pull-request] automated change (#3561)
blsaccess Oct 21, 2026
c9f5e0a
Expose nuclei's newer template-selection options (#3479)
liquidsec Oct 21, 2026
4e4c3b7
Filter CDN/WAF ports by default and remove the portfilter module (#3534)
liquidsec Oct 21, 2026
a2f7f8d
Respect `cache_hrs` in `download()` freshness check (#3563)
liquidsec Oct 21, 2026
ba44aa4
[create-pull-request] automated change (#3564)
blsaccess Oct 22, 2026
761cf3f
Update trufflehog (#3568)
blsaccess Oct 23, 2026
0925a39
fix(ci): grant contents: read to the CLA workflow
pjhartlieb Oct 23, 2026
d0b7df3
Bump xxhash from 4.0.1 to 4.0.2 (#3580)
dependabot[bot] Oct 26, 2026
d036e5a
Bump pip from 26.2.1 to 26.2.2 (#3579)
dependabot[bot] Oct 26, 2026
4c1cd67
Merge pull request #3570 from blacklanternsecurity/fix/cla-contents-r…
pjhartlieb Oct 26, 2026
6056335
Bump mkdocstrings to 1.0.8
liquidsec Oct 26, 2026
8c7d1c9
Bump cachetools from 7.2.1 to 7.2.4 (#3574)
dependabot[bot] Oct 26, 2026
6f8b9b3
Bump blasthttp from 0.10.0 to 0.10.1 (#3577)
dependabot[bot] Oct 26, 2026
680120d
Bump ruff from 0.17.0 to 0.17.1 (#3578)
dependabot[bot] Oct 26, 2026
c8b4987
Update trufflehog (#3573)
blsaccess Oct 26, 2026
5e29205
Bump pycryptodome from 4.0.0 to 4.1.0 (#3575)
dependabot[bot] Oct 26, 2026
1bee18e
Bump fastapi from 0.143.1 to 0.159.1 (#3576)
dependabot[bot] Oct 26, 2026
6dee079
[create-pull-request] automated change (#3572)
blsaccess Oct 26, 2026
739e39a
Stop extracting hostnames from partway through a hyphenated label
liquidsec Oct 27, 2026
42f5f48
[create-pull-request] automated change (#3591)
blsaccess Oct 27, 2026
1ed42d7
Merge stable into dev to record the 3.0.2 squash commit
liquidsec Oct 27, 2026
dacf31c
Merge pull request #3592 from blacklanternsecurity/merge-stable-3.0.2
liquidsec Oct 27, 2026
2bb1d5b
Harden custom module_dirs loading
liquidsec Oct 27, 2026
5b603c3
Make yara_hostnames filtering linear
liquidsec Oct 27, 2026
bc1f9d1
Deprecate config module_dirs, note other owners in the trust prompt
liquidsec Oct 27, 2026
75c6456
Add 3.1 breaking changes doc
liquidsec Oct 27, 2026
e8085f6
Merge pull request #3585 from blacklanternsecurity/mkdocstrings-1.0.8
liquidsec Oct 28, 2026
99c47a5
perf(ci): cut test suite wall time via teardown, poll, and dep-instal…
singlerider Oct 28, 2026
693eb0a
Check pycache, parents, and symlinks in module_dirs; -S no longer imp…
liquidsec Oct 28, 2026
a8d3f98
Harden preset conditions and module version validation
liquidsec Oct 28, 2026
495be5e
Harden custom module directory loading
liquidsec Oct 28, 2026
ae2b7a5
Skip custom module dirs when listing presets
liquidsec Oct 28, 2026
ec40ba4
Write the custom module dir prompt to stderr
liquidsec Oct 28, 2026
22bc9c1
Correct the silent-flag check in the startup banner
liquidsec Oct 28, 2026
74a8d22
Snapshot preset and config for condition evaluation
liquidsec Oct 28, 2026
ed32794
Validate home against shell metacharacters
liquidsec Oct 28, 2026
1fe5aac
Document that presets are executable code
liquidsec Oct 28, 2026
cde1a47
Skip module dirs of included presets when listing
liquidsec Oct 28, 2026
3e91182
Expand 3.1 breaking changes for preset and module hardening
liquidsec Oct 28, 2026
eb6c6d7
Merge pull request #3593 from blacklanternsecurity/module-dirs-hardening
liquidsec Oct 28, 2026
df9990c
Clarify read-only conditions behavior in 3.1 breaking changes
liquidsec Oct 28, 2026
af108dd
Simplify read-only conditions note
liquidsec Oct 28, 2026
c3f1108
Drop em-dash in conditions note
liquidsec Oct 28, 2026
1bdc8a7
[create-pull-request] automated change
blsaccess Oct 29, 2026
58904b2
Merge pull request #3595 from blacklanternsecurity/update-docs
liquidsec Oct 29, 2026
44be3ad
Merge pull request #3594 from blacklanternsecurity/3.1-breaking-changes
liquidsec Oct 30, 2026
bfc696d
Merge pull request #3590 from blacklanternsecurity/excavate-hostname-…
liquidsec Oct 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 60 additions & 7 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,69 @@ version: 2
updates:
- package-ecosystem: "uv"
directory: "/"
target-branch: "dev"
schedule:
interval: "weekly"
groups:
uv-minor-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"
uv-major:
patterns:
- "*"
update-types:
- "major"
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "dev"
open-pull-requests-limit: 10
- package-ecosystem: github-actions
directory: /
schedule:
interval: "weekly"
groups:
github-actions:
github-actions-minor-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"
github-actions-major:
patterns:
- "*" # Group all Actions updates into a single larger pull request
- "*"
update-types:
- "major"
- package-ecosystem: "docker"
directory: "/"
target-branch: "dev"
schedule:
interval: weekly
target-branch: "dev"
interval: "weekly"
groups:
docker-minor-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"
docker-major:
patterns:
- "*"
update-types:
- "major"
- package-ecosystem: "pre-commit"
directory: "/"
target-branch: "dev"
schedule:
interval: "weekly"
groups:
pre-commit-minor-patch:
patterns:
- "*"
update-types:
- "minor"
- "patch"
pre-commit-major:
patterns:
- "*"
update-types:
- "major"
3 changes: 2 additions & 1 deletion .github/workflows/benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ concurrency:
permissions:
contents: read
pull-requests: write
issues: write

jobs:
benchmark:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04

steps:
- uses: actions/checkout@v7
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/cla.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ on:
types: [opened, closed, synchronize]

permissions:
contents: read
pull-requests: write
statuses: write

jobs:
cla:
uses: blacklanternsecurity/CLA/.github/workflows/cla-reusable.yml@main
name: check the CLA is signed
uses: blacklanternsecurity/CLA/.github/workflows/cla-reusable.yml@4f85d3c525483f0f846ef4384a8ece24a3c74375 # 2026-09-29
secrets: inherit
4 changes: 2 additions & 2 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ on:

jobs:
analyze:
name: Analyze (${{ matrix.language }})
name: scan ${{ matrix.language }} for security issues
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners (GitHub.com only)
# Consider using larger runners or machines with greater resources for possible analysis time improvements.
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-24.04' }}
permissions:
# required for all workflows
security-events: write
Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/dependabot-auto-merge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: Dependabot auto-merge
on: pull_request

permissions: {}

jobs:
auto-merge:
permissions:
contents: write
pull-requests: write
checks: read
uses: blacklanternsecurity/CLA/.github/workflows/dependabot-auto-merge.yml@e532142ee9e7322888f6edc80d9a89e2f8c0d96d # 2026-10-03
7 changes: 5 additions & 2 deletions .github/workflows/distro_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ concurrency:

jobs:
test-distros:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
container:
image: ${{ matrix.os }}
strategy:
Expand Down Expand Up @@ -51,7 +51,10 @@ jobs:
uv python install 3.12
uv python pin 3.12
uv sync --group dev
uv run pytest --reruns 2 --exitfirst -o timeout_func_only=true --timeout 1200 --disable-warnings --log-cli-level=INFO .
uv run pytest -n $(uv run python bbot/test/worker_count.py) --dist loadgroup --reruns 2 --exitfirst -o timeout_func_only=true --timeout 1200 --disable-warnings --log-cli-level=INFO \
bbot/test/test_step_1/test_e2e.py \
bbot/test/test_step_1/test_depsinstaller.py \
bbot/test/test_step_1/test_command.py
- name: Upload Debug Logs
if: always()
uses: actions/upload-artifact@v7
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs_updater.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:

jobs:
update_docs:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7
with:
Expand Down
23 changes: 19 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ concurrency:

jobs:
test:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
strategy:
# if one python version fails, let the others finish
fail-fast: false
Expand Down Expand Up @@ -51,9 +51,23 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./cov.xml
verbose: true

test_matrix:
name: test matrix passed
if: always()
needs: [test]
runs-on: ubuntu-24.04
steps:
- name: Fail unless every dependency succeeded
uses: re-actors/alls-green@b5b5b37504aa4183270bd3d855c52a67f212be35 # v1.3.0
with:
allowed-skips: test
jobs: ${{ toJSON(needs) }}

publish_code:
name: publish package and docker images
needs: test
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
if: github.event_name == 'push' && (github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/stable')
continue-on-error: true
steps:
Expand Down Expand Up @@ -200,8 +214,9 @@ jobs:
outputs:
BBOT_VERSION: ${{ steps.version.outputs.BBOT_VERSION }}
tag_commit:
name: tag the release commit
needs: publish_code
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
if: github.event_name == 'push' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/dev')
steps:
- uses: actions/checkout@v7
Expand All @@ -222,7 +237,7 @@ jobs:
git push origin "$VERSION"

publish_docs:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
if: github.event_name == 'push' && (github.ref == 'refs/heads/stable' || github.ref == 'refs/heads/dev')
steps:
- uses: actions/checkout@v7
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/version_updater.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Version Updater
name: Tool Version Updater
on:
schedule:
# Runs at 00:00 every day
Expand All @@ -7,7 +7,7 @@ on:

jobs:
update-nuclei-version:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7
with:
Expand Down Expand Up @@ -59,7 +59,7 @@ jobs:
author: blsaccess <info@blacklanternsecurity.com>
assignees: "TheTechromancer"
update-trufflehog-version:
runs-on: ubuntu-latest
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7
with:
Expand Down
59 changes: 33 additions & 26 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ setup() --> handle_event() (called many times) --> finish() --> report()
Event types this module wants to process. The module's `handle_event()` is only called for these types.

```python
# sslcert.py - watches for open ports to grab SSL certs from
# fingerprintx.py - watches for open ports to fingerprint the service behind them
watched_events = ["OPEN_TCP_PORT"]

# newsletters.py - watches HTTP responses to scan HTML
Expand Down Expand Up @@ -302,8 +302,8 @@ Common flags:
# crt.py - queries a third-party API, never touches the target
flags = ["subdomain-enum", "passive"]

# sslcert.py - connects directly to target ports
flags = ["affiliates", "subdomain-enum", "email-enum", "active", "web"]
# sslcert.py - reads certs from responses the scan already fetched
flags = ["safe", "affiliates", "subdomain-enum", "email-enum", "active", "web"]
```

##### `meta` (dict)
Expand All @@ -324,27 +324,33 @@ meta = {"description": "Query API for subdomains", "auth_required": True}

#### Options

##### `options` / `options_desc` (dict)
User-configurable settings. Access them via `self.config.get("option_name")`.
##### `class Config(BaseModuleConfig)`
User-configurable settings are declared as a nested `Config` class using pydantic fields. Access
them via `self.config.get("option_name")`.

> The legacy `options` / `options_desc` dicts are **no longer supported in BBOT 3.0+** -- a module
> that declares them fails to load with a `CRITICAL` message.

```python
# robots.py - configurable parsing options
options = {"include_sitemap": False, "include_allow": True, "include_disallow": True}
options_desc = {
"include_sitemap": "Include 'sitemap' entries",
"include_allow": "Include 'Allow' Entries",
"include_disallow": "Include 'Disallow' Entries",
}
from bbot.core.config.models import BaseModuleConfig, Field


class robots(BaseModule):
class Config(BaseModuleConfig):
include_sitemap: bool = Field(False, description="Include 'sitemap' entries")
include_allow: bool = Field(True, description="Include 'Allow' Entries")
include_disallow: bool = Field(True, description="Include 'Disallow' Entries")

# In handle_event():
if self.config.get("include_sitemap") is True:
...
# In handle_event():
# if self.config.get("include_sitemap") is True:
# ...
```

```python
# sslcert.py - timeout and behavior options
options = {"timeout": 5.0, "skip_non_ssl": True}
options_desc = {"timeout": "Socket connect timeout in seconds", "skip_non_ssl": "Don't try common non-SSL ports"}
# shodan_dns.py - an API key, marked sensitive and mandatory
class Config(BaseModuleConfig):
api_key: str | list[str] = Field("", description="Shodan API key", sensitive=True, mandatory=True)
```

---
Expand Down Expand Up @@ -445,8 +451,8 @@ def _incoming_dedup_hash(self, event):
How many `handle_event()` calls can run concurrently. Increase this for I/O-bound modules.

```python
# sslcert.py - connects to many hosts in parallel
_module_threads = 25
# iis_shortnames.py - many short requests per host
_module_threads = 4
```

##### `_batch_size` (int) -- default: `1`
Expand Down Expand Up @@ -480,16 +486,16 @@ _shuffle_incoming_queue = False
Python packages to install.

```python
# sslcert.py
deps_pip = ["pyOpenSSL~=25.3.0"]
# badsecrets.py
deps_pip = ["badsecrets~=1.2.1"]
```

##### `deps_apt` (list)
System packages to install.

```python
# sslcert.py
deps_apt = ["openssl"]
# git_clone.py
deps_apt = ["git"]
```

##### `deps_modules` (list)
Expand Down Expand Up @@ -595,10 +601,11 @@ async def handle_batch(self, *events):
Called before `handle_event()`. Return `True` to accept, `False` to reject, or `(False, "reason")` to reject with a logged reason.

```python
# sslcert.py - skip ports that don't typically use SSL
# apkpure.py - only handle Android apps
async def filter_event(self, event):
if self.skip_non_ssl and event.port in self.non_ssl_ports:
return False, f"Port {event.port} doesn't typically use SSL"
if event.type == "MOBILE_APP":
if "android" not in event.tags:
return False, "event is not an android app"
return True
```

Expand Down
25 changes: 25 additions & 0 deletions bbot/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,31 @@
import subprocess
from pathlib import Path
from importlib.metadata import version, PackageNotFoundError

try:
__version__ = version("bbot")
except PackageNotFoundError:
__version__ = "0.0.0"


def _git_commit():
# only git checkouts have .git next to the package (a file, not a dir, in worktrees)
repo_root = Path(__file__).resolve().parent.parent
if not (repo_root / ".git").exists():
return None
try:
result = subprocess.run(
["git", "-C", str(repo_root), "describe", "--always", "--dirty", "--abbrev=9", "--exclude=*"],
capture_output=True,
text=True,
timeout=2,
)
except (OSError, subprocess.SubprocessError):
return None
if result.returncode != 0:
return None
return result.stdout.strip() or None


_commit = _git_commit()
__full_version__ = f"{__version__} (git:{_commit})" if _commit else __version__
Loading
Loading