This release includes 2 security fixes for security teams reviewing exposed deployments.
Topics
+1 more
Affected surfaces
Summary
AI summaryUniversal API Access system adds read‑only token integration with automatic sanitization of sensitive fields.
Full changelog
Full Changelog: https://github.com/spupuz/VibeNVR/compare/v1.17.1...v1.18.0
Release v1.18.0 - Universal API Access & Security Hardening
This release introduces a major infrastructure upgrade: the Universal API Access system. It allows secure, read-only integration with external dashboards and third-party tools via API Tokens, while significantly hardening the system's security posture through conditional response sanitization.
🚀 New Features
🔑 Universal API Access (API Tokens)
- Token Management UI: A new section in Settings allows administrators to generate, list, and revoke permanent API Tokens.
- X-API-Key Authentication: Support for header-based authentication across all core read-only endpoints:
GET /api/v1/stats(System statistics)GET /api/v1/cameras(Camera list)GET /api/v1/events(Event timeline)GET /api/v1/groups(Camera groups)
- Dashboard Integration: Official support for Homepage (
gethomepage.dev) via a dedicated/api/v1/homepage/statsendpoint.
🏠 Dashboard Integration (Homepage)
- Optimized endpoint for fast, lightweight dashboard updates.
- Provided comprehensive documentation and YAML examples for the
customapiwidget. - Included metrics for: Online Cameras, Recording Status, Storage Usage (GB), Today's Events, and System Uptime.
🛡️ Security & Privacy
🧬 Conditional Response Sanitization
A new security layer has been implemented to protect sensitive data:
- Sanitized Schemas: When accessing the API via a Token (3rd party), critical fields like
rtsp_url(containing credentials) and external notification tokens are automatically stripped or masked. - Role-Based Access Control (RBAC): API Tokens are strictly Read-Only. Administrative actions (Create/Update/Delete) still require a secure JWT session.
- Media Protection: Continued enforcement of JWT-based authentication for all static media (video/snapshots) to prevent unauthorized direct access.
🕵️ Internal Security & Stability
- Log Redaction: Upgraded the
TokenRedactingFilterto automatically redactX-API-Keyheaders and RTSP credentials from container logs. - FastAPI / Pydantic Hardening: Refactored routers to ensure explicit schema conversion, preventing 500 errors and ensuring consistent JSON responses across all user levels.
- Clipboard Fallback: Implemented a fallback for the "Copy Token" button to support non-secure (HTTP) environments where the modern Clipboard API is unavailable.
🔧 Bug Fixes & Refactoring
- Nginx Route Mapping: Fixed a critical 404 error during token creation by aligning Nginx path rewriting with the FastAPI router prefix.
- Circular Dependency Resolution: Reordered Pydantic classes in
schemas.pyto fix circular references during startup. - Typing Fixes: Resolved missing
Anyimport incameras.pywhich caused container crashes on specific builds. - Uptime Formatting: Improved uptime string granularity to show minutes for recently started systems.
📂 Documentation Updates
- Updated
README.mdwith the new Homepage integration guide. - Added
docs/API_INTEGRATION.mdas a comprehensive reference for developers and power users. - Anonymized all examples to ensure no test credentials or local IPs are leaked.
Made with ❤️ by the VibeNVR Team.
Security Fixes
- Log redaction: TokenRedactingFilter now automatically redacts `X-API-Key` headers and RTSP credentials from container logs.
- FastAPI / Pydantic hardening to prevent 500 errors via explicit schema conversion, enhancing API response consistency and security.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About spupuz/VibeNVR
All releases →Related context
Related tools
Earlier breaking changes
- v1.28.3 Must update docker-compose.yml with TZ variable for all services
Beta — feedback welcome: [email protected]