Skip to main content

Universal Honeypot Benchmarking Standard (UHBS)

CI Snyk Security Docs PyPI OpenSSF Best Practices License Spec UHQS DOI

Open-source evaluation framework for lab / sandboxevaluation of honeypots and decoys — vendor-neutral UHQS scoring (0–100) with a non-linear Safety Gate.

UHBS v4.6.0 measures deception realism, containment, scale, and telemetry quality by class and protocol. It is not an industry consortium standard or multi-party governed body. Source and docs: github.com/uhbs/uhbs-standard · uhbs.github.io/uhbs-standard · ROADMAP.

Link
Docs Landing · MkDocs
Install pip install uhbs · extras: lab, mcp, aep
Python ≥ 3.11
License Apache-2.0

NOTICE: UHBS/AEP are for lab/sandbox evaluation of decoys. Do not run them against production or unauthorized real services. CLI tools print this reminder on stderr when commands run.

Table of contents

Project status

Status: Experimental — specification status

Topic Reality today
Maintainer @mziqudhd92 — MAINTAINERS.md
Governance Single maintainer; no Steering Committee yet — Phase 6 roadmap
Evaluation scope Laboratory / sandbox only
Suggested internal gate After lab grading, orgs MAY use UHQS > 80 + passing Safety Gate before they deploy a decoy — not a standards-body mandate

What you get

Capability Package / surface
Spec + schemas (TPS, scorecard, evidence) Repo docs/ · schemas/
Validate profiles & scorecards; recompute UHQS pip install uhbs → uhbs
Live Modules A–F lab harness (36 protocols) pip install 'uhbs[lab]' → uhbs lab / uhbs-lab
AI-host MCP tools (validate/score fixtures; no live probes) pip install 'uhbs[mcp]' → uhbs-mcp
Offline Advanced Evidence Profile (optional; does not change UHQS) pip install 'uhbs[aep]' → uhbs aep
AEP SLM trial generator (alpha; off until you edit config) pip install 'uhbs[aep-slm]' → uhbs aep slm
Published lab grades / fixtures docs/conformance/

Vendor neutrality: normative docs use classes and protocols. Named products appear only under conformance as evaluation proof, not as UHBS requirements.

Pillar Detail
Protocol-agnostic IT, OT/ICS, AI, and cloud decoy classes
Quantitative UHQS 0–100 with Safety Gate (\delta_C) from Module D
Dual-plane Static audit (F) + dynamic Modules A–E
Optional AEP Lab decoy-vs-reference evidence (VoD, FSV, DTDR, EER)

Install

python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

# Core CLI (validate / score)
pip install uhbs

# Common lab install
pip install 'uhbs[lab]'

# Optional extras (install only what you need)
pip install 'uhbs[mcp]'   # AI-host MCP server
pip install 'uhbs[aep]'       # offline Advanced Evidence Profile
pip install 'uhbs[aep-slm]'   # alpha SLM trial helper (still off until you edit config)
pip install 'uhbs[all]'       # lab + mcp + scapy (convenience; still not an attack runner)
Extra Purpose
(none) Validators + UHQS math
lab Controlled live Modules A–F harness
mcp Local AI-host scorecard tools (stdio MCP)
aep Offline advanced evidence analysis
aep-slm Alpha AEP SLM trial generator (disabled until you edit aep-slm.yaml)
scapy Optional protocol-encoding backend
dev pytest, ruff, mypy (+ lab/mcp for contributors)
all lab + mcp + scapy

Development checkout:

git clone https://github.com/uhbs/uhbs-standard.git
cd uhbs-standard
pip install -e ".[lab,dev]"
# optional: pip install -e ".[aep,mcp]"
pytest -q

Quickstart

Short walkthrough: Install & use UHBS (install → validate profile → validate scorecard → compute UHQS). No honeypot required.

Published honeypot pages under docs/conformance are reproduce-a-grade recipes, not that guide.

1. Validate a profile or scorecard

# From a git checkout (templates ship in the repo)
cp templates/profile.yaml ./my-honeypot.profile.yaml
uhbs validate-profile my-honeypot.profile.yaml

uhbs validate-scorecard path/to/scorecard.json
uhbs score --class Low-Interaction --scores scores.json

2. Run the lab harness (isolated decoy only)

pip install 'uhbs[lab]'
uhbs lab --list-protocols
# Example shape — point only at a lab decoy you control:
# uhbs lab --tps low_interaction --protocol ssh \
#   --target 127.0.0.1 --port 2222 --out ./.local/bench-reports/my-target

3. Optional AEP (offline lab evidence)

pip install 'uhbs[aep]'
uhbs aep example beginner --out aep-beginner
uhbs aep validate aep-beginner/experiment.yaml
uhbs aep analyze --experiment aep-beginner/experiment.yaml \
  --trials aep-beginner/trials.jsonl \
  --scorecard aep-beginner/linked-scorecard.json \
  --out advanced-evidence.json
uhbs aep report advanced-evidence.json --format markdown --out ADVANCED-EVIDENCE.md

3b. Optional AEP SLM alpha (off by default)

Draft AEP trial JSONL with a deterministic mock or a loopback-only local model. Install does not enable it — edit aep-slm.yaml first. Does not change UHQS. Guide: SLM evaluator (alpha).

pip install 'uhbs[aep-slm]'
uhbs aep slm init --out aep-slm.yaml
uhbs aep slm status aep-slm.yaml          # shows LOCKED until you edit the file
# Edit aep-slm.yaml: enabled + unlock phrase + attestations (see docs)
# uhbs aep slm generate aep-slm.yaml

MCP for AI hosts (Cursor, Claude, VS Code, …)

pip install 'uhbs[mcp]'
# Configure the host — see docs/tooling/mcp.md
# uhbs-mcp   or:  python -m uhbs_mcp

Registry metadata: server.json. Live lab probes stay on uhbs lab, not the AI-host MCP server.

Grade MCP honeypot surfaces (JSON-RPC over HTTP/SSE) with the in-tree mcp protocol plugin (uhbs[lab]) — different from the AI-host server above. See MCP honeypot grading.

Docker

docker build -t uhbs:4.6.0 .
docker run --rm -v "$PWD:/work" -w /work uhbs:4.6.0 \
  validate-scorecard ./docs/conformance/fixtures/cowrie-low-interaction.scorecard.json
docker run --rm -v "$PWD:/work" -w /work uhbs:4.6.0 lab --list-protocols

Compose: docker compose run --rm uhbs validate-profile ./my-honeypot.profile.yaml.

Demo

Terminal walkthrough: install UHBS + Cowrie/Conpot, start lab decoys, full UHQS (Cowrie SSH · Conpot Modbus · HellPot HTTP).

UHBS lab demo — install honeypots + full UHQS

Replay: docs/assets/uhbs-lab-demo.cast (asciinema play docs/assets/uhbs-lab-demo.cast).

Scoring (UHQS)

The Universal Honeypot Quality Score is a normalized composite 0–100:

[ \mathrm{UHQS} = \delta_C \cdot (w_A S_A + w_B S_B + w_C S_C + w_E S_E + w_F S_F) ]

Symbol Meaning
(S_A \ldots S_F) Module scores 0–100
(w_A \ldots w_F) Profile-adaptive weights (sum to 1.00)
(\delta_C) Safety Gate from Module D: (1.0) if (C \ge 95), else ((C/100)^2)
Module Focus
A Protocol & syntax fidelity
B Behavioral & stateful realism
C Telemetry quality & pipeline resilience
D Safety, containment & boundary controls (Safety Gate)
E Scalability, latency & stress
F White-box static code audit

A decoy with strong deception scores can still fail lab evaluation if Module D is weak. Normative math: uhqs_math.py · scoring formula.

Lab audit workflow (5 phases)

Profile & config → Static audit (F) → Sandbox provision → Dynamic A–E → Score & report

Optional Advanced Evidence Profile (AEP)

UHQS remains the normative lab grade. AEP is an optional, informative layer for controlled lab decoy-vs-reference experiments. AEP does not change UHQS.

When Use
Lab release / conformance UHBS scorecard alone
Comparative lab study Add AEP (VoD, FSV, DTDR, EER + uncertainty)
  • Offline analysis of local experiment/trial files only — no attack launch
  • Status vocabulary: valid | inconclusive | control_failed (not letter grades)
  • Packaged examples: uhbs aep example beginner|advanced|template

Academic credit (citation ≠ endorsement): Zhu (2019), Collins et al. (2024), Ersok et al. (2022), Li et al. (2020) — full ledger: Research foundations & credits.

Doc URL
Overview https://uhbs.github.io/uhbs-standard/mkdocs/advanced-evidence/
Beginner tutorial https://uhbs.github.io/uhbs-standard/mkdocs/advanced-evidence/tutorial-beginner/
CLI https://uhbs.github.io/uhbs-standard/mkdocs/advanced-evidence/cli/
SLM evaluator (alpha, opt-in) https://uhbs.github.io/uhbs-standard/mkdocs/advanced-evidence/slm-alpha/
Landing hub (AEP section) https://uhbs.github.io/uhbs-standard/#advanced-evidence
Related frameworks https://uhbs.github.io/uhbs-standard/mkdocs/mappings/related-frameworks/

Documentation map

Resource Link
Landing hub https://uhbs.github.io/uhbs-standard/
Specification https://uhbs.github.io/uhbs-standard/mkdocs/specification/core-principles/
Sitemap index (SEO) https://uhbs.github.io/uhbs-standard/sitemap.xml
CLI guide docs/tooling/cli.md
MCP (AI hosts) docs/tooling/mcp.md
AEP SLM (alpha) https://uhbs.github.io/uhbs-standard/mkdocs/advanced-evidence/slm-alpha/
Reference harness docs/reference-implementation.md
Conformance & lab reports docs/conformance/index.md
Framework mappings docs/mappings/index.md
Maturity roadmap ROADMAP.md
Agent / SEO / AEO index llms.txt · AGENTS.md · humans.txt

Repository layout

uhbs-standard/
├── docs/                      # MkDocs site + conformance proof
│   ├── advanced-evidence/     # Optional AEP docs
│   ├── conformance/           # Fixtures, lab reports, tutorials
│   ├── mappings/              # ATT&CK, D3FEND, Engage, related frameworks
│   └── specification/         # Normative prose
├── schemas/                   # JSON Schemas (scorecard, AEP, …)
├── templates/                 # Starter TPS + AEP templates
├── examples/advanced-evidence/# Synthetic AEP fixtures (also packaged in wheel)
├── src/uhbs_cli/              # `uhbs` CLI (+ packaged schemas / AEP data)
├── src/uhbs_core/             # UHBS-Lab harness + UHQS math
├── src/uhbs_mcp/              # AI-host MCP server
├── tests/                     # pytest suite
├── Dockerfile                 # Grading image
├── CONTRIBUTING.md · CODE_OF_CONDUCT.md · SECURITY.md · GOVERNANCE.md
└── CITATION.cff

Embed a published grade

After you publish a scorecard (conformance / your own report), you can badge it:

![UHBS v4.6.0](https://img.shields.io/badge/UHBS%20v4.6.0-Grade%20A-brightgreen)

Contributing

Contributions are welcome under the project’s governance constraints.

  1. Read CONTRIBUTING.md and CODE_OF_CONDUCT.md
  2. Follow GOVERNANCE.md — specification changes use an RFC process
  3. Sign off commits (DCO)
  4. Run pytest -q and ruff check on touched Python before opening a PR

Security

Please report vulnerabilities via GitHub Security Advisories per SECURITY.md. Do not use UHBS tooling against systems you are not authorized to test.

Citation

@software{uhbs2026,
  author = {Zavdi, Moran},
  title = {Universal Honeypot Benchmarking Standard (UHBS)},
  year = {2026},
  version = {4.6.0},
  publisher = {Zenodo},
  doi = {10.5281/zenodo.21631156},
  url = {https://doi.org/10.5281/zenodo.21631156}
}

Machine-readable: CITATION.cff. Concept DOI (latest deposit): 10.5281/zenodo.21631155.

License

Licensed under the Apache License 2.0.

Metadata

Release files for uhbs 4.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for uhbs 4.6.0
File Size Uploaded
uhbs-4.6.0.tar.gz 282.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for uhbs 4.6.0
File Interpreter ABI Platform
uhbs-4.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 583.9 kB

Release files / uhbs-4.6.0.tar.gz

Download URL uhbs-4.6.0.tar.gz
Size 282.1 kB
Tags Source
SHA-256 checksum
How to use checksums
d3d51f2df19123f766c13d9bbf2d7f459621318508bc79bfa1a0e1c9b90a0587
BLAKE2b-256 checksum
How to use checksums
eced05bca98d4a22f3db32dee0c723d3ad1b8666143fed2c75c742c03cd08142
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / uhbs-4.6.0-py3-none-any.whl

Download URL uhbs-4.6.0-py3-none-any.whl
Size 301.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2a344084b6d4183049c36bfa34608beca82081f95d7f88b148a52c31e0afc4cb
BLAKE2b-256 checksum
How to use checksums
27fba5bd12dbe36df42def3a4e1f8ece4ef27ac007eb598ebc3ea7b44653feae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release history Release notifications | RSS feed

4.6.1

2 release files

This release

4.6.0 This release

2 release files

4.5.1

2 release files

4.5.0

2 release files

4.4.5

2 release files

4.4.4

2 release files

4.4.3

2 release files

4.4.2

2 release files

4.4.1

2 release files

4.4.0

2 release files

4.3.6

2 release files

4.3.5

2 release files

4.3.0

2 release files

4.2.2

2 release files

4.2.1

2 release files

4.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page