Extended outbound DLP scan: headers, query params, paths, DNS lookups #204

Closed
opened 2026-06-06 13:40:19 -04:00 by didericis-claude · 0 comments
Collaborator

The current outbound DLP scan (PRD 0052) covers only the request body and the Authorization header. An agent can exfiltrate a provisioned secret via several other surfaces that are currently unscanned:

  • Other HTTP headers – any custom or standard header (e.g. X-Api-Key, X-Auth-Token, Cookie).
  • Query parameters – e.g. ?token=<secret> or ?api_key=<secret>.
  • URL path segments – e.g. /api/<secret>/resource.
  • DNS-level hostnames – DNS tunnelling where the secret is base64-encoded into a subdomain (<encoded-secret>.attacker.com).

Acceptance criteria

  1. All four surfaces are included in the outbound DLP scan text for every matched route.
  2. A pure helper build_outbound_scan_text(host, path, query, headers, body) in egress_addon_core.py assembles the scan corpus so the logic is unit-testable without mitmproxy.
  3. Unit tests demonstrate blocking when a known token or provisioned secret appears in each surface.
  4. The change is backwards-compatible: no manifest schema changes required.
The current outbound DLP scan (PRD 0052) covers only the request body and the `Authorization` header. An agent can exfiltrate a provisioned secret via several other surfaces that are currently unscanned: - **Other HTTP headers** – any custom or standard header (e.g. `X-Api-Key`, `X-Auth-Token`, `Cookie`). - **Query parameters** – e.g. `?token=<secret>` or `?api_key=<secret>`. - **URL path segments** – e.g. `/api/<secret>/resource`. - **DNS-level hostnames** – DNS tunnelling where the secret is base64-encoded into a subdomain (`<encoded-secret>.attacker.com`). ## Acceptance criteria 1. All four surfaces are included in the outbound DLP scan text for every matched route. 2. A pure helper `build_outbound_scan_text(host, path, query, headers, body)` in `egress_addon_core.py` assembles the scan corpus so the logic is unit-testable without mitmproxy. 3. Unit tests demonstrate blocking when a known token or provisioned secret appears in each surface. 4. The change is backwards-compatible: no manifest schema changes required.
didericis added the Kind/Security label 2026-06-06 14:26:40 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: didericis/bot-bottle#204