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.3.tar.gz (89.0 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.3-py3-none-any.whl (123.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: krill_fuzzer-0.1.3.tar.gz
  • Upload date:
  • Size: 89.0 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.3.tar.gz
Algorithm Hash digest
SHA256 9de791bfdf8a40cc027d873921b56daefd0f2d5315af2be19b80a65a0a15c459
MD5 b57d350d08b59b852f05cada21f1622c
BLAKE2b-256 f1f1254c6634f27fcf6e32c59ad6ada3ea22a8b204f6ad264c49bc5d9ef25954

See more details on using hashes here.

File details

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

File metadata

  • Download URL: krill_fuzzer-0.1.3-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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a270939044e0548b6826f900270cf6e5fa1defe5442055830030bff0cdde458b
MD5 7eab406caa081439f5802ab675c8df4d
BLAKE2b-256 ab304cebb370566c6dec3a2f19c11eacd12024cb0dc68e84944d46f9befc2ae1

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