aboutsummaryrefslogtreecommitdiffstats
path: root/tests/fixtures/leaky.eml
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-08 15:24:27 +0200
committerDanilo M. <danix@danix.xyz>2026-09-08 15:24:27 +0200
commit244c36c820b135c39c3d58e10939496b57c845f5 (patch)
tree7b683e916982ee0924f20c55a65953d635cbc007 /tests/fixtures/leaky.eml
parente1b3204c2af639e2a5ccf01d76f3dd280304702e (diff)
downloadabusectl-244c36c820b135c39c3d58e10939496b57c845f5.tar.gz
abusectl-244c36c820b135c39c3d58e10939496b57c845f5.zip
fix: redact a valueless query token whole, not as a kept name
parse_qsl reads "?victim@example.org" as the pair ("victim@example.org", ""), and the code kept parameter NAMES because they fingerprint the phishing kit. A name that is itself an address is not a name, so keeping it published the recipient's identifier verbatim (percent-decoded, no less: %40 fools no consumer). _redact_kv_string now splits the query/fragment string by hand on "&" and ";" and inspects each token's own name: one containing "@" is a value that landed in name position and is redacted WHOLE ("?REDACTED" rather than "?victim%40example.org=REDACTED"); an ordinary name still keeps its shape ("?flag" stays "?flag=REDACTED", "?t=1&t=2" stays "?t=REDACTED&t=REDACTED"). This also exposed a second leak reachable through the same fixture: parse._suspect_segments() ran redact.suspect_path_segments()'s decode-and-check predicate (meant for a querystring smuggled past percent-encoding into a PATH segment) against a raw query VALUE, so a plaintext "?e=you@example.org" reproduced the address in the manifest's suspect_path_segments flag even though the URL itself was correctly redacted. redact.suspect_path_segments() now exposes the opaque-shape half of its check as _looks_opaque(), and parse.py uses only that half against query values: a query value is always fully redacted regardless, so the flag may hint at its shape but must never reproduce it. Turns tests.test_parse.TestIocAssembly.test_the_address_does_not_survive_any_url_shape green, and closes the gap test_no_ioc_holds_a_recipient_address had been passing over with URL redaction fully disabled. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KphFXTc2QajxXsHWyvGJ4R
Diffstat (limited to 'tests/fixtures/leaky.eml')
0 files changed, 0 insertions, 0 deletions