2.3 KiB
2.3 KiB
AOC v1.7.12 Release Notes
Release Date: 2026-04-27
Security Hardening (Penetration Test Remediation)
This release addresses all findings from the internal soft penetration test of v1.7.11.
Critical Fix: CORS Credentials Leak
- Issue: When
AUTH_ENABLED=trueandCORS_ORIGINS="*", the CORS middleware reflected any origin withAccess-Control-Allow-Credentials: true, allowing cross-origin authenticated requests from attacker-controlled domains. - Fix: When auth is enabled with a wildcard origin,
allow_credentialsis now forced toFalse. CORS still works for unauthenticated requests, but bearer tokens cannot be leaked cross-origin.
High Fix: Missing Security Headers
- Added
X-Content-Type-Options: nosniff - Added
X-Frame-Options: DENY - Added
Referrer-Policy: strict-origin-when-cross-origin - Added
Permissions-Policyrestricting browser features (accelerometer, camera, geolocation, gyroscope, magnetometer, microphone, payment, USB)
Medium Fixes
- Rate limiter fail-closed: Previously, a Redis outage silently disabled all rate limiting. The rate limiter now returns
429when Redis is unreachable. - OpenAPI docs exposure:
/docs,/redoc, and/openapi.jsonare disabled by default. SetDOCS_ENABLED=trueto re-enable (intended for development only).
Low Fixes
- Information disclosure:
/api/config/authno longer leakstenant_idandclient_idwhenauth_enabled=false. - Webhook validation token: Added length cap (1024 chars) and ASCII-only validation before echoing
validationToken. Response now includesX-Content-Type-Options: nosniff.
Files Changed
| File | Change |
|---|---|
backend/main.py |
CORS fix, security headers middleware, conditional OpenAPI docs |
backend/config.py |
Added DOCS_ENABLED setting |
backend/rate_limiter.py |
Fail-closed on Redis errors |
backend/routes/config.py |
Hide tenant/client IDs when auth disabled |
backend/routes/webhooks.py |
Validate validationToken before echo |
backend/tests/conftest.py |
Enhanced FakeRedis mock with incr/expire |
.env.example |
Documented DOCS_ENABLED |
VERSION |
Bumped to 1.7.12 |
Test Results
- 80/80 pytest tests passing
- Penetration test report:
PEN_TEST_REPORT_v1.7.11.md