ciguard: Web UI is missing HTTP defence-in-depth headers
Summary
ciguard's FastAPI Web UI (src/ciguard/web/app.py) does not set HTTP defence-in-depth headers. OWASP ZAP baseline scan flagged 11 alerts: missing Content-Security-Policy (Medium), X-Frame-Options (Medium), Sub-Resource-Integrity on /api/docs (Medium), COOP / COEP / CORP (Low), Permissions-Policy (Low), X-Content-Type-Options (Low).
Threat scenario
For local-only deployment (current intent): minimal — there's no untrusted browser context, no third-party hosting, no auth surface to protect.
For public hosting (PRD Slice 9 GitHub App or hosted dashboard, future): each missing header reduces a defence layer:
- Missing CSP → injected XSS would have no second-line defence (first-line Jinja autoescape remains intact)
- Missing X-Frame-Options → clickjacking against any UI button would be possible
- Missing SRI on jsdelivr-hosted Swagger UI → if jsdelivr were compromised, attacker JS would run in the docs page context
Patch
- New
SecurityHeadersMiddlewareatsrc/ciguard/web/security_headers.pyinjecting: X-Content-Type-Options nosniff, X-Frame-Options DENY, Referrer-Policy no-referrer, Permissions-Policyinterest-cohort=(), Cross-Origin-Opener-Policy same-origin, Cross-Origin-Resource-Policy same-origin, plus per-path CSP with/api/docs+/api/redoccarve-out for cdn.jsdelivr.net (Swagger UI / ReDoc dependency). - COEP intentionally NOT set: would break Swagger UI's cross-origin assets, and ciguard makes no SharedArrayBuffer use that would benefit.
- Registered via
app.add_middleware(SecurityHeadersMiddleware). - 6 regression tests in
tests/test_web.py::TestSecurityHeaders.
Discovery
Found by OWASP ZAP baseline scan during ciguard's first self-conducted pentest cycle, 2026-04-26.
CVSS Scoring
- CVSS v3.1:
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N— 4.3 (Medium per v3.1 thresholds) - CVSS v4.0:
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N— first.org calc 4.3 (Low); GitHub's calc 2.1 (Low). All consistent at Low/borderline.
Verification
$ curl -sI http://127.0.0.1:8080/ | grep -E '^(X-Frame|X-Content|Referrer|Permissions|Cross-Origin|Content-Security):'
# Pre-fix: empty
# Post-fix: 7 headers present
Resources
Affected software
Click a technology to see all vulnerabilities affecting it.
| Platform | Package | Vulnerable versions | Fixed in |
|---|---|---|---|
| Python (PyPI) | ciguard | >= 0.1.0, < 0.8.2 | 0.8.2 |
References
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N- Weakness (CWE)
CWE-693- Platform
- Python (PyPI)
- Package
ciguard- Disclosed
- 05.05.2026
- Updated
- 11.10.2026 12:19
Sources and licenses
OSV / GitHub Advisory Database - GHSA-7ww3-xvf5-cxwm - CC BY 4.0
Vulnerability history: ciguard
All published vulnerabilities of this package (Python (PyPI)), newest first. Shows whether this is a one-off slip or a package that needs watching.
- Total entries
- 4
- First → latest
- 05.2026 05.2026
- Without a fix
- 0
- Exploited in attacks
- 0
Severity breakdown
- Medium 1
- Low 3
Disclosures per year
- 2026: 4
-
ciguard: Web UI is missing HTTP defence-in-depth headers this entry
Know which vulnerabilities affect your application
With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.