IPX replay drops captured request/response headers from canonical exchange records #181
Labels
No labels
bug
documentation
duplicate
enhancement
feature
good first issue
help wanted
invalid
question
refactor
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/hackmode#181
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Reviewed at commit
3b4e2da(filed against the IPX replay introduced in6f40a44, which advances #26).Problem
tools/ipx/mitmproxy-addon.pycaptures request/response headers losslessly asheaders_raw_b64pairs, andhackmode-databasealready has a typed, sanitized header path (source/hackmode-database/http-exchange-headers.lisp, added in595e2fd::request-headers/:response-headersslots onmake-http-exchange-recordwith%sanitize-http-headers).But the replay path (
source/hackmode-core/capture-replay.lisp,ipx-object->http-exchange, lines ~102-128) drops them entirely: it builds the exchange record with only method/scheme/host/port/path/status. The captured header evidence never reaches the canonical graph.Impact
Suggested fix
In
ipx-object->http-exchange, decodeheaders_raw_b64(the addon emits[b64(name), b64(value)]list pairs, so convert to(name . value)strings) and pass:request-headers/:response-headerstomake-http-exchange-record. Add a RED-first test intests/ipx-replay.lispasserting header pairs survive into the persisted payload and that secret-bearing headers are rejected by the existing sanitizer path (they remain available in the raw spool evidence viaraw-evidence-ref).