Skip to content

Rustification - BlastDiff #3059

Description

@liquidsec

Rust reimplementation of BBOT's HTTP diffing engine, following the same pattern as BlastDNS (massdns replacement) and blasthttp (native HTTP engine). Ship as a Rust crate with Python bindings and swap it in behind the existing interface.

What it replaces

bbot/core/helpers/diff.py, specifically the HttpCompare class and its compare_body / header-diff logic, which is built on the Python DeepDiff library.

Consumers today:

  • virtualhost (body similarity)
  • waf_bypass (content fingerprint comparison)
  • lightfuzz/crypto submodule (compare_body on probe responses)

Why

DeepDiff is the bottleneck. Known problems already tracked:

The work is CPU-bound and currently holds the GIL, which is exactly what the Blast family exists to fix.

Scope

  • Rust crate implementing body and header comparison with the same semantics HttpCompare relies on (duplicate-header handling, JSON/XML awareness, order sensitivity where it matters).
  • Python bindings exposing a drop-in for compare_body and the header diff.
  • Wire into diff.py behind the current HttpCompare API so callers do not change.

Acceptance criteria

Open

  • Whether scope is just compare_body or the full HttpCompare class.
  • Keep DeepDiff as a fallback during rollout vs hard cutover.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions