Universal Honeypot Benchmarking Standard (UHBS)
Open-source beta framework for lab / sandbox evaluation of honeypots and decoys — vendor-neutral UHQS scoring (0–100) with a non-linear Safety Gate.
UHBS v4.4.4 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
- What you get
- Install
- Quickstart
- Demo
- Scoring (UHQS)
- Optional Advanced Evidence Profile (AEP)
- Documentation map
- Repository layout
- Contributing
- Security
- Citation
- License
Project status
Status: Beta / 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
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.4.4 .
docker run --rm -v "$PWD:/work" -w /work uhbs:4.4.4 \
validate-scorecard ./docs/conformance/fixtures/cowrie-low-interaction.scorecard.json
docker run --rm -v "$PWD:/work" -w /work uhbs:4.4.4 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).
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:

Contributing
Contributions are welcome under the project’s governance constraints.
- Read CONTRIBUTING.md and CODE_OF_CONDUCT.md
- Follow GOVERNANCE.md — specification changes use an RFC process
- Sign off commits (DCO)
- Run
pytest -qandruff checkon 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.4.4},
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file uhbs-4.4.4.tar.gz.
File metadata
- Download URL: uhbs-4.4.4.tar.gz
- Upload date:
- Size: 243.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a1ca6d6ce7d00fff1cbada515d5c893144bb272c7ead3b19715e11e500d43b8
|
|
| MD5 |
e24bf84c4007730f7d20f47a8adc22f7
|
|
| BLAKE2b-256 |
2e0412e4da447e7eb08c5aa9d505133879f70508f6592a3c8f3fc4ae0a5db13e
|
Provenance
The following attestation bundles were made for uhbs-4.4.4.tar.gz:
Publisher:
release.yml on uhbs/uhbs-standard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uhbs-4.4.4.tar.gz -
Subject digest:
4a1ca6d6ce7d00fff1cbada515d5c893144bb272c7ead3b19715e11e500d43b8 - Sigstore transparency entry: 2334404006
- Sigstore integration time:
-
Permalink:
uhbs/uhbs-standard@1ab1100ed55aa297d8bd0d7b84fb23bb2acf0a21 -
Branch / Tag:
refs/tags/v4.4.4 - Owner: https://github.com/uhbs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1ab1100ed55aa297d8bd0d7b84fb23bb2acf0a21 -
Trigger Event:
push
-
Statement type:
File details
Details for the file uhbs-4.4.4-py3-none-any.whl.
File metadata
- Download URL: uhbs-4.4.4-py3-none-any.whl
- Upload date:
- Size: 247.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4b8c13c8aff6058bb26c2273f8e56370e8ce370e2d55e0438e15525555b24d1
|
|
| MD5 |
ee4f1197ace928e2e86267335ddb3fe0
|
|
| BLAKE2b-256 |
be493bc46e4c89131b9286c1e8b5abe388a21f7e79b3e5446865ab32be74e27f
|
Provenance
The following attestation bundles were made for uhbs-4.4.4-py3-none-any.whl:
Publisher:
release.yml on uhbs/uhbs-standard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
uhbs-4.4.4-py3-none-any.whl -
Subject digest:
d4b8c13c8aff6058bb26c2273f8e56370e8ce370e2d55e0438e15525555b24d1 - Sigstore transparency entry: 2334404060
- Sigstore integration time:
-
Permalink:
uhbs/uhbs-standard@1ab1100ed55aa297d8bd0d7b84fb23bb2acf0a21 -
Branch / Tag:
refs/tags/v4.4.4 - Owner: https://github.com/uhbs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1ab1100ed55aa297d8bd0d7b84fb23bb2acf0a21 -
Trigger Event:
push
-
Statement type: