Skip to main content

Race-condition research harness for web applications, APIs, and modern services.

Project description

fenestra

Race-condition research harness for web applications, APIs, and modern services.

fenestra is built for pentesters and security researchers who need more than "fire parallel requests and diff responses." You declare what must remain true about a system under concurrency. The harness proves whether it does — statistically, repeatably, with a confidence interval and an estimated window width in milliseconds.


The problem with existing tools

Every race-condition tool stops at delivery. They fire requests, show you diffs, and leave the rest to you. That's fine for a quick sanity check. It's not enough to distinguish a flaky single win from a reliably exploitable condition, and it tells you nothing about where in the stack the window lives.

fenestra closes that gap with three things existing tools don't have:

  1. An invariant language — express what must be true: scalar comparisons, aggregations (sum, count, min, max), uniqueness, monotonicity, and cross-trial conservation laws.
  2. A localization probe — before the main race, a short probe measures baseline latency, inspects response headers, fires a small burst, and samples post-race state at increasing delays to rank hypotheses about which layer the window actually lives in.
  3. Rigorous trial accounting — every trial runs setup, delivery, settlement, state reads, invariant evaluation, and teardown. Findings report trial count, violation rate, confidence interval, and estimated window width.

How it works

You import an endpoint from a curl command or HAR capture, label its endpoint class (auth, financial, coupon, inventory, rate-limit, etc.) and its suspected sub-state layer (DB row, app counter, Redis, queue, CDN, session store), then declare one or more invariants that must remain true under concurrency.

Templates are YAML, designed as a superset of Nuclei and RatRace formats so existing templates import cleanly.

The invariant language supports scalar comparisons, aggregations, uniqueness, monotonicity, and cross-trial conservation laws — the layer where every existing tool stops short.

The harness runs a localization probe first to rank hypotheses about which layer the race window lives in, then executes the main race through a pluggable delivery backend, repeating the full trial cycle many times. Output is structured JSON for automation plus a human-readable report that summarizes each violated invariant, its statistical support, the localization hypothesis, and the reasoning trail.


What invariant does not do

  • No endpoint discovery — you bring the target, scoped and authorized.
  • No low-level packet reimplementation — delivery is handled by pluggable backends.
  • No exploit weaponizationfenestra proves and measures. Weaponization and scoping are the operator's responsibility.

This tool is intended for authorized security testing, penetration testing engagements, bug bounty research, and CTF competitions.


Status

Under active development. Not yet released.


License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fenestra-0.0.2.tar.gz (2.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fenestra-0.0.2-py3-none-any.whl (2.5 kB view details)

Uploaded Python 3

File details

Details for the file fenestra-0.0.2.tar.gz.

File metadata

  • Download URL: fenestra-0.0.2.tar.gz
  • Upload date:
  • Size: 2.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for fenestra-0.0.2.tar.gz
Algorithm Hash digest
SHA256 d67166e48818fb4d1507fc428f401046841f352f1a96744722bdef387b9b27e5
MD5 aa7e2a28047151c8460282462d1132f2
BLAKE2b-256 9c5731dce4aaf34889353dc6fb96a62b125e1d3b04800c60e7eca17cebc8dfc0

See more details on using hashes here.

File details

Details for the file fenestra-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: fenestra-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 2.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for fenestra-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9be6dc66b57a6ed11b344d48a3115336db3f6c1cf21d581b91ac02b8c6cd9d06
MD5 844600223877a26f51e1d749dc81631c
BLAKE2b-256 b511887d0a0870e1b584d84c475826350172195075656d5173b16d450e25e493

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page