Commit Graph
4894 Commits
Author SHA1 Message Date
L1ghtn1ng e719f56ad4 perf(discovery): own one provider session per paginated conversation
wayback, arquivo, certspotter, gitlab, hunter, tomba, mojeek, windvane,
yahoo, pentest-tools, and commoncrawl each built and tore down a fresh
ClientSession (connector, TLS context, proxy resolution) for every page,
poll, or README request. Each adapter now opens one session for its whole
conversation and passes session= to the shared fetchers, matching the
open_session pattern already used by the other paginating providers.

Also removes yahoo's unreachable empty-response guard, collects pages in
a list instead of O(n^2) string concatenation, and strips padded email
local parts with lstrip instead of per-character slicing. Contract tests
assert the proxy selection and session identity at the session owner.
2026-09-17 02:16:29 +01:00
L1ghtn1ng 55c83df0ef fix(api): harden run worker recovery, child exit codes, and run-now errors
- _child_execute now returns an exit code and the module entry maps it
  to the process status, so a child terminated by an external signal
  exits nonzero; the parent records the run as failed with the partial
  checkpoint attached instead of mistaking leftover evidence for
  terminal completion
- recover_orphans isolates each orphaned run: one unreadable checkpoint
  (schema-passing but structurally broken) no longer aborts recovery of
  the remaining runs or crashes every future startup - the affected run
  is failed without evidence and recovery continues
- _process_output drains child streams to EOF but retains only a
  bounded tail, so a verbose child cannot grow API memory unboundedly
- the execution poll reads the lifecycle row instead of the full detail
  projection every 50 ms
- run-now maps a stale stored run template to a sanitized 503 instead
  of leaking a raw pydantic ValidationError as a 500
2026-09-17 02:05:21 +01:00
L1ghtn1ng 90e5fd9119 fix(dns): skip wordlist labels that validation would reject
A label such as _dmarc passes the recursive-DNS label normalizer (which
allows underscores) but is rejected by the shared hostname normalizer
inside validate_dns_candidates, whose empty result then crashed the
whole dns-recursive action with an unhandled ValueError from the strict
tuple unpack. Check the candidate with the same normalize_scoped_hostname
helper before querying and skip it, so one unusable wordlist entry no
longer aborts the action.
2026-09-17 01:55:53 +01:00
L1ghtn1ng 0d2bbb9662 fix(core): correct shared transport ssl, header, and body handling
- _create_connector: an explicit ssl=False (verification disabled) was
  silently replaced with a verifying context by 'ssl_context or default';
  only an unset context now falls back to the certifi default
- fetch/post_fetch/fetch_all: caller-supplied headers were silently
  dropped when a caller-owned session was passed; they are now forwarded
  per request, matching _open_get_response and aiohttp merge semantics
  (sessions that bake the same headers are unaffected)
- fetch: a borrowed session with default verification no longer rebuilds
  a certifi SSL context on every request; it defers to the connector
  context the session already owns
- _normalize_data: the post_fetch data='' default raised JSONDecodeError
  internally and silently returned without sending any request; empty
  bodies now send, and non-JSON strings pass through as raw bodies

Traced every owned-versus-borrowed branch; all post_fetch callers pass
json_body or valid JSON strings, and the only verify=False caller
(api_endpoints) supplies its own connector.
2026-09-17 01:51:15 +01:00
L1ghtn1ng 61657c2f74 fix(discovery): enforce scoped hostnames and credential presence
- hunter/tomba: replace the substring source-domain check that admitted
  out-of-scope hosts (notexample.test, example.test.evil.net) with
  normalize_scoped_hostname; tomba also tolerates full website URLs
- arquivo: a repeated page with zero collected hosts now reports failed
  instead of partial, matching the module's own outcome convention
- pentesttools, rocketreach, shodan: blank or whitespace-only API keys
  now raise MissingKey like peer providers instead of starting a doomed
  authenticated run
2026-09-17 01:43:19 +01:00
L1ghtn1ng 2ee9b557e5 fix(discovery): correct criminalip, hudsonrock, mojeek, githubcode error handling
- criminalip: inspect HTTP status via provider_http_error instead of
  only the provider's embedded status field, so 401/403/429 with
  non-JSON bodies are classified correctly; build the scan request with
  json_body instead of an f-string that produced invalid JSON for
  targets containing quotes or backslashes
- hudsonrock: remove the dead transport-error retry loop (the shared
  transport already swallows those exceptions and returns None), drop a
  redundant isinstance check, and describe the real 429-only retry
- mojeek: fix the finite API path off-by-one that fetched zero pages
  for --limit 1 and dropped the final partial page, and request pages
  sequentially instead of one concurrent burst
- githubcode: only HTTP 429 responses retry; a 403 now fails
  immediately as access-denied instead of stalling ~3 minutes and being
  mislabeled rate-limited
2026-09-17 01:38:23 +01:00
L1ghtn1ng 4f60fc9e8b fix(discovery): report hunter, tomba, gitlab, wayback, certspotter failures correctly
Transport errors, non-2xx responses, and malformed bodies were returned
as None, which the shared source runner maps to a completed run. Classify
them with the shared provider_http_error convention so failures surface
as failed/rate-limited outcomes and partial data is preserved:

- hunter/tomba: _fetch_json returns dict or SourceExecutionReport;
  malformed-dict shapes still map to invalid-response
- gitlab: unreachable 'if not response' guard replaced; [None] transport
  failures report transport-error instead of invalid-response
- waybackarchive: transport errors no longer masquerade as end-of-data;
  _search_pattern returns explicit SourceExecutionReport outcomes and
  HTTP failures use provider_http_error
- certspotter: transport failures distinguished from invalid responses;
  HTTP failures classified per the shared convention

Contract tests updated to assert the resulting reports and to mock the
metadata-shaped responses the shared transport actually delivers.
2026-09-17 01:30:55 +01:00
NotoriousRebel ea5db87915 Merge master into dev to resolve PR #2607 conflicts
Preserve provider outcome release notes alongside the HTTP proxy wording. Keep the dev domain glossary and carry the master HTTP-only proxy policy into its relocated architecture guide. Retain RocketReach cancellation coverage while removing the obsolete global dependency stub.

Align provider lifecycle regressions with the master session-construction boundary: construction ValueError is normalized to transport-error, while cancellation, lifecycle RuntimeError, and teardown ValueError still propagate.
2026-09-09 21:41:46 -04:00
MattandGitHub b2db23a89b fix: preserve provider outcomes and session state for 5.0 (#2604)
* fix: preserve provider failures and decode POST evidence

Keep failed, rate-limited, malformed, and partial outcomes visible across ten provider adapters so saved hostname comparisons do not infer reliable absence. Restore DeHashed and Leak-Lookup JSON response decoding.

Refs #358, #359

* docs: document released 4.11 automation migrations

Address #361 with launcher, route, request, response, source, and DNS resolver migrations verified against the 4.11.1 tag.

* fix: own provider sessions across related requests
2026-09-09 15:51:58 -04:00
MattandGitHub 1e9efc6118 feat: add JSMON passive subdomain discovery (#2605)
* Add JSMON passive subdomain discovery source

* docs: complete JSMON setup and credential readiness

* fix: read JSMON credentials only from api-keys.yaml
2026-09-09 14:12:07 -04:00
J.TownsendandGitHub 78a78f08d4 Merge pull request #2603 from laramies/dependabot/master/all_dependencies-4c70b186bc 2026-09-07 23:10:30 +01:00
dependabot[bot]andGitHub adba93bba0 build(deps): bump step-security/harden-runner
Bumps the all-dependencies group with 1 update: [step-security/harden-runner](https://github.com/step-security/harden-runner).


Updates `step-security/harden-runner` from 2.21.0 to 2.21.1
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/05e31511f85b41b11d1cf0ef85d0992719546e2c...e14015d583714f6e62063499dc959a02595150a1)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.21.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-07 21:20:33 +00:00
MattandGitHub 3b01d7f172 feat: clarify saved-run reporting before 5.0 (#2599)
Provide harvest-report targets, contributions, and hostname-changes with consistent saved-evidence terminology across the CLI, REST API, and HarvestView. Preserve target scope, source-outcome handling, JSONL, and the stored evidence schema.

Update onboarding and operator documentation, keep the domain glossary in CONTEXT.md, record behavior rules in docs/architecture.md, and consolidate release preparation in CONTRIBUTING.md.

Validation: all eight GitHub checks passed at ed54542a; focused reporting and documentation checks passed. Tracks https://github.com/NotoriousRebel/theHarvester/issues/349.
2026-09-07 16:48:20 -04:00
BenzizaandGitHub dc9ffa5740 fix: validate HarvestView log levels before startup (#2602) 2026-09-06 20:59:04 -04:00
MattandGitHub 8a6875ccf2 fix: package license and guard schedule controls (#2598)
* docs: refresh readme architecture diagrams

* fix: ship release licenses and local UI assets

* fix: fail closed when schedule prerequisites fail

* docs: refresh release-facing operator guide

* fix: keep HarvestView on pinned CDN assets

* docs: apply HarvestView theme to architecture diagrams

* docs: simplify README and clarify diagram labels
2026-09-04 18:20:21 -04:00
MattandGitHub e8bab9ebcc refactor: centralize target identity semantics (#2597)
* refactor: own enumeration target identity

* refactor: clarify target identity policies
2026-09-04 18:02:48 -04:00
J.TownsendandGitHub 181e146637 Merge pull request #2600 from laramies/dependabot/master/all_dependencies-ebf40551bc 2026-09-02 22:31:27 +01:00
dependabot[bot]andGitHub ddd44caba4 build(deps): bump the all-dependencies group with 4 updates
Bumps the all-dependencies group with 4 updates: [github/codeql-action/init](https://github.com/github/codeql-action), [github/codeql-action/autobuild](https://github.com/github/codeql-action), [github/codeql-action/analyze](https://github.com/github/codeql-action) and [github/codeql-action/upload-sarif](https://github.com/github/codeql-action).


Updates `github/codeql-action/init` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

Updates `github/codeql-action/autobuild` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

Updates `github/codeql-action/analyze` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

Updates `github/codeql-action/upload-sarif` from 4.37.8 to 4.37.9
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28...cdf488f595d80d6e07e03d4674febd5ab45fa938)

---
updated-dependencies:
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
- dependency-name: github/codeql-action/autobuild
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.9
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-02 21:20:00 +00:00
MattandGitHub feddab2fd9 Merge pull request #2596 from NotoriousRebel/codex/target-aware-harvest-yields
Make source yield reports target-aware and track hostname changes
2026-08-30 16:58:43 -04:00
NotoriousRebel edd6d575b6 docs: explain hostname comparison workflow 2026-08-29 23:36:20 -04:00
NotoriousRebel 0756ffc049 fix: fail closed on unreliable tracking baselines 2026-08-29 17:21:53 -04:00
NotoriousRebel d181c42601 fix: harden hostname tracking release behavior 2026-08-29 17:16:17 -04:00
NotoriousRebel 7800737d96 fix: fail closed on incomplete DNS evidence 2026-08-29 16:42:31 -04:00
NotoriousRebel 6b7852f7ef feat: track hostname changes across runs 2026-08-29 16:38:25 -04:00
NotoriousRebel e06392bb53 feat: require explicit all-target yield reports 2026-08-29 16:08:20 -04:00
NotoriousRebel a23298ea48 feat: make source yield reports target-aware 2026-08-29 16:06:07 -04:00
NotoriousRebel 9d362e0032 feat: list canonical harvest yield targets (#333) 2026-08-29 13:51:46 -04:00
NotoriousRebel 156f12648f docs: define target-aware yield reporting terms 2026-08-29 13:05:07 -04:00
J.TownsendandGitHub 903a35e118 Merge pull request #2595 from laramies/dependabot/master/all_dependencies-566f0429aa 2026-08-29 05:51:47 +01:00
dependabot[bot]andGitHub 016a0ec7b9 build(deps): bump the all-dependencies group with 8 updates
Bumps the all-dependencies group with 8 updates:

| Package | From | To |
| --- | --- | --- |
| [step-security/harden-runner](https://github.com/step-security/harden-runner) | `2.19.4` | `2.21.0` |
| [actions/checkout](https://github.com/actions/checkout) | `7.0.0` | `7.0.1` |
| [github/codeql-action/init](https://github.com/github/codeql-action) | `4.37.6` | `4.37.8` |
| [github/codeql-action/autobuild](https://github.com/github/codeql-action) | `4.37.6` | `4.37.8` |
| [github/codeql-action/analyze](https://github.com/github/codeql-action) | `4.37.6` | `4.37.8` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `4.2.0` | `4.3.0` |
| [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) | `8.2.0` | `10.0.1` |
| [github/codeql-action/upload-sarif](https://github.com/github/codeql-action) | `4.37.6` | `4.37.8` |


Updates `step-security/harden-runner` from 2.19.4 to 2.21.0
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](https://github.com/step-security/harden-runner/compare/v2.19.4...05e31511f85b41b11d1cf0ef85d0992719546e2c)

Updates `actions/checkout` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v7...3d3c42e5aac5ba805825da76410c181273ba90b1)

Updates `github/codeql-action/init` from 4.37.6 to 4.37.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)

Updates `github/codeql-action/autobuild` from 4.37.6 to 4.37.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)

Updates `github/codeql-action/analyze` from 4.37.6 to 4.37.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)

Updates `docker/setup-buildx-action` from 4.2.0 to 4.3.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/bb05f3f5519dd87d3ba754cc423b652a5edd6d2c...37fe631027851001ddb9b187196cc803df7f5f0e)

Updates `astral-sh/setup-uv` from 8.2.0 to 10.0.1
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/v8.2.0...20cfd1bf945f4377ade1205e4dbc17946fc9a30d)

Updates `github/codeql-action/upload-sarif` from 4.37.6 to 4.37.8
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...db488ddef3bf6cb639b32c2e9a7c0a7ea8271d28)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-version: 2.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-dependencies
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
- dependency-name: github/codeql-action/init
  dependency-version: 4.37.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
- dependency-name: github/codeql-action/autobuild
  dependency-version: 4.37.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
- dependency-name: github/codeql-action/analyze
  dependency-version: 4.37.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all-dependencies
- dependency-name: astral-sh/setup-uv
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: all-dependencies
- dependency-name: github/codeql-action/upload-sarif
  dependency-version: 4.37.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-28 21:20:45 +00:00
MattandGitHub fc25924dd5 Merge pull request #2593 from NotoriousRebel/codex/own-api-runtime-state
Refactor API background state into app lifespan
2026-08-27 20:16:11 -04:00
NotoriousRebel 2440b2b932 refactor: own API runtime state in app lifespan 2026-08-27 15:42:00 -04:00
MattandGitHub c44b8fde57 Merge pull request #2590 from NotoriousRebel/dev
Sync dev into master
2026-08-26 23:04:56 -04:00
NotoriousRebel 8ead90f7a9 fix: scope proxy mode to HTTP transport 2026-08-26 22:53:21 -04:00
NotoriousRebel 0e4324f2cb fix: centralize discovery transport handling 2026-08-26 18:38:56 -04:00
NotoriousRebel fabaea3886 fix: classify proxied response stream failures 2026-08-26 16:33:58 -04:00
NotoriousRebel 227d189d7e fix: reuse proxied routeviews session 2026-08-26 16:31:46 -04:00
NotoriousRebel 74282f279b fix: preserve proxy transport failures across tasks 2026-08-26 16:27:29 -04:00
NotoriousRebel ad28a87111 fix: reject direct DNS in proxy mode 2026-08-26 16:17:51 -04:00
NotoriousRebel bf2d34ff09 fix: keep direct actions on configured proxy transport 2026-08-26 11:55:21 -04:00
NotoriousRebel 22dc7b4cfd refactor: remove confirmed dead code 2026-08-26 10:58:40 -04:00
NotoriousRebel 786c3b015a fix: reject missing proxy configuration at startup 2026-08-26 00:58:54 -04:00
NotoriousRebel 8889ddca9c fix: pin proxy identity per execution 2026-08-26 00:38:46 -04:00
NotoriousRebel b895547f5e docs: clarify master sync PR authority 2026-08-25 23:33:02 -04:00
NotoriousRebel 805a9e00ef Merge remote-tracking branch 'upstream/dev' into codex/sync-fork-dev
# Conflicts:
#	CHANGELOG.md
2026-08-25 23:18:53 -04:00
MattandGitHub 51bc40dd20 Merge pull request #2588 from NotoriousRebel/codex/pr-2586-followup
fix: fail closed when required proxies are unavailable
2026-08-25 23:16:27 -04:00
NotoriousRebel f9c363a77c test: align proxy help contract 2026-08-25 23:13:15 -04:00
NotoriousRebel 50669f2704 docs: align fail-closed proxy contract 2026-08-25 23:11:03 -04:00
NotoriousRebel 414276e330 fix: fail closed when required proxies are unavailable 2026-08-25 22:59:06 -04:00
MattandGitHub 7cc7e3abc6 Merge pull request #2586 from laramies/fix/review-security-boundaries
fix: enforce discovery security boundaries
2026-08-25 22:58:40 -04:00