This release includes 1 security fix for security teams reviewing exposed deployments.
Topics
+4 more
Affected surfaces
ReleasePort's take
Moderate signalThe `/api/v1/documents/:id/preview` endpoint now includes defense‑in‑depth mitigations against stored XSS.
Why it matters: Addresses a stored XSS vulnerability (severity 90) on the documents preview API, reducing risk for developers and security engineers handling document rendering.
Summary
AI summaryHardened documents preview endpoint with defense‑in‑depth against stored XSS.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Critical |
Hardened `/api/v1/documents/:id/preview` endpoint against stored XSS. Hardened `/api/v1/documents/:id/preview` endpoint against stored XSS. Source: llm_adapter@2026-06-09 Confidence: low |
— |
| Security | High |
Enforced server-side MIME type allowlist for `/api/v1/documents/:id/preview` endpoint. Enforced server-side MIME type allowlist for `/api/v1/documents/:id/preview` endpoint. Source: granite4.1:30b@2026-06-09-audit Confidence: low |
— |
| Security | High |
Returns `415` for unsupported MIME types on preview endpoint. Returns `415` for unsupported MIME types on preview endpoint. Source: granite4.1:30b@2026-06-09-audit Confidence: low |
— |
| Security | High |
Added `X-Content-Type-Options: nosniff` header to preview responses. Added `X-Content-Type-Options: nosniff` header to preview responses. Source: granite4.1:30b@2026-06-09-audit Confidence: low |
— |
| Security | High |
Applied restrictive Content-Security-Policy (`default-src 'none'`) to preview responses. Applied restrictive Content-Security-Policy (`default-src 'none'`) to preview responses. Source: granite4.1:30b@2026-06-09-audit Confidence: low |
— |
Full changelog
Security
- Documents preview: hardened the new
GET /api/v1/documents/:id/previewendpoint with defense-in-depth against stored XSS. It now enforces its own server-side allowlist of previewable MIME types (PDF, PNG, JPEG, WebP, plain text, CSV) and returns415for anything else, instead of serving any storedmime_typeinline. Responses additionally carryX-Content-Type-Options: nosniffand a restrictiveContent-Security-Policy(default-src 'none') so no inline content can execute scripts even if a file were ever misclassified. (Not exploitable in 0.68.0 — uploads already reject HTML/SVG — but this removes the implicit dependency on the upload allowlist.)
Security Fixes
- Documents preview endpoint now enforces a server‑side allowlist (PDF, PNG, JPEG, WebP, plain text, CSV) and returns 415 for disallowed MIME types; adds `X-Content-Type-Options: nosniff` and restrictive CSP (`default-src 'none'`) to prevent stored XSS.
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
Related context
Related tools
Earlier breaking changes
- v0.71.3 Changes WebDAV backup default path from "/oikos/backups/" to "/yuvomi/backups/".
- v0.66.0 Repository URL changed to `https://github.com/ulsklyc/yuvomi`.
- v0.66.0 Docker image moved to `ghcr.io/ulsklyc/yuvomi`.
- v0.66.0 Project renamed from Oikos to Yuvomi.
- v0.62.0 Changes event dialog to unified sync target picker across Google and CalDAV calendars.
Beta — feedback welcome: [email protected]