Skip to main content

Engine-agnostic HTTP workflow fuzzer core library

Project description

krill-fuzzer

Krill are tiny crustaceans that swarm the ocean in enormous numbers — individually insignificant, collectively they sustain whales. Each mutated test case is a single krill: small, fast, almost trivial — but hundreds of them per parameter can surface vulnerabilities no hand-written test suite would find.

Consume a recorded HTTP workflow and mutate each parameter with security-aware payloads against a running target.

Install

Requires Python 3.10+ and uv.

uv add krill-fuzzer

Record workflows with the companion krill-collector package.

Usage

from krill_fuzzer import fuzz, load_recording

# Load a recording produced by krill-collector
recording = load_recording("logicflow.json")

# Mutate each parameter, execute against the target, evaluate responses
findings = fuzz(recording, "http://target-app.local")

for f in findings:
    print(f"[{f.verdict.kind.value}] {f.mutation.parameter_name}={f.mutation.mutated_value!r}")
    print(f"  {f.mutation.reason}{f.verdict.reason}")

API

recording ──▶ parse ──▶ mutate ──▶ fuzz
                         ├── execute  (HttpExecutor)
                         └── evaluate (BugOracle)

krill_fuzzer

Root package: one-call fuzzing, lifecycle control, HTTP primitives, and the exception hierarchy.

Symbol Type Description
fuzz(recording, url, config) function One-call fuzzing: parse → run → findings
Fuzzer(recording, url, config) class Lifecycle control: run(), results()
FuzzConfig dataclass Tuning knobs: oracle, collector, timeout, classify
Finding dataclass mutation + execution result + verdict
FuzzStatus dataclass Progress: total_cases, completed, findings
classify_parameters function Probe-based parameter classification
WorkflowInstance dataclass requests, step_order
HttpMethod / HttpRequest / HttpResponse / HttpExchange HTTP primitives (from krill-core)
WorkflowRecording dataclass Recording input (from krill-core)
save_recording / load_recording JSON persistence (from krill-core)
KrillError Exception Base for all krill errors
PersistenceError Exception Recording serialization failure
ExtractionError / ModelError / CodecError / ExecutionError / FuzzError Exception Fuzzer-stage failures

krill_fuzzer.parse · .mutate · .execute · .evaluate

Layer-2 sub-packages for custom pipelines: specification extraction (parse), mutation generation (mutate), sequential HTTP execution (execute), and bug oracles (evaluate).

Documentation

  • Docs index — parse, mutate, schedule, execute, evaluate design/spec/impl docs.
  • Concept — recording, Value Flow, mutation strategy/scheduler, gate, oracle.
  • Agent-consumable documentation index at docs/llms.txt (llmstxt.org format).

Citation

If you use this project in academic work, please cite our paper. BibTeX (placeholder until the paper is released):

@misc{beluga_placeholder,
  title  = {{TODO: paper title — not yet released}},
  author = {{TODO: authors}},
  year   = {{TODO}},
  note   = {Paper not yet released. Citation entry will be updated on publication.}
}

License

GPL-2.0 — see LICENSE.

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

krill_fuzzer-0.1.2.tar.gz (88.9 kB view details)

Uploaded Source

Built Distribution

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

krill_fuzzer-0.1.2-py3-none-any.whl (123.7 kB view details)

Uploaded Python 3

File details

Details for the file krill_fuzzer-0.1.2.tar.gz.

File metadata

  • Download URL: krill_fuzzer-0.1.2.tar.gz
  • Upload date:
  • Size: 88.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for krill_fuzzer-0.1.2.tar.gz
Algorithm Hash digest
SHA256 add99d1af7d376eaa96769327d1972476317d24eac4ad8f6afdaae355fb8f546
MD5 98e8f3cd355e169d7a6481889dc99d67
BLAKE2b-256 f004784e225b79a7d2ecf39001c56b3b58b7c931f4a08ccc002c6056433951a9

See more details on using hashes here.

File details

Details for the file krill_fuzzer-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: krill_fuzzer-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 123.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for krill_fuzzer-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 52c63d8abf93b9e1c33ffe2a470e495c9ad3e16d5916ccd55934e67599370fe2
MD5 6e630b5c506d6c7a6387981ddee36690
BLAKE2b-256 a733b98aa6edc6b3b1276fb8e566b1978c33ce70e40a1c26d6066ee857624bbe

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