Skip to content

LIA

v1.21.5 Security

This release includes 2 security fixes for security teams reviewing exposed deployments.

βœ“ No known CVEs patched
Read the diff β†’ Tool health β†’ What is this tool? β†’
This release patches 2 known CVEs

Topics

ai ai-assistant apple llm claude conversational-ai
+13 more
docker emotional-ai google healthcare-ai human-in-the-loop langchain langgraph mcp multi-agent personal-assistant self-hosted skills vision-ai

Affected surfaces

auth deps

Summary

AI summary

Updates πŸ”§ Fixes & admin, ⚑ Performance, and πŸ›‘οΈ Security across a mixed release.

Full changelog

Wave 3 of the full-codebase audit β€” three boundaries the earlier waves did not touch (the async/event-loop boundary, the network-exposure boundary, the XSS trust boundary) plus four localized performance/correctness fixes. Every item was measured before/after (latency or call count) and driven red-first. Architecture decision: ADR-096.

⚑ Performance

  • Event loop no longer frozen by synchronous work. firebase_admin.messaging.send, the Pillow resize pipeline and two sync embedding calls ran inline on the loop, freezing every concurrent coroutine (SSE included) for 251–496 ms; moved off via asyncio.to_thread / native async embeddings β†’ 11–12 ms, guarded by an event-loop stall test.
  • Two hot-path scans parallelized: list_active_domains 631 β†’ 63 ms; Gmail search_emails N+1 metadata fetch 331 β†’ 62 ms (bounded asyncio.gather).
  • Caching: user display preferences move from one DB query per tool call to a per-worker TTL cache; admin broadcast translations are persisted (0 LLM calls on re-read instead of a re-translation on every view).

πŸ›‘οΈ Security

  • The dashboard greeting can no longer execute injected content β€” LLM output now renders as auto-escaped React children (a booby-trapped event title is inert) behind a new strict Content-Security-Policy.
  • Internal services isolated from the LAN (production): the 13 internal service ports (Postgres, Grafana, Prometheus, Loki, Tempo, exporters) are loopback-bound so only the web app is exposed; the Docker/ufw interaction is documented.

πŸ”§ Fixes & admin

  • Valid display locales for every language β€” en-EN/zh-ZH (the latter broke Chinese dates) replaced by a LANGUAGE_TO_LOCALE map.
  • The personality translator is now a configurable LLM slot β€” visible in the admin LLM Configuration and honoring DB overrides.
  • Gmail reply body built before MIME construction (hardening; parity with the Apple mail client).

Notes

  • One DB migration (admin_broadcasts.message_translations JSONB) + two .env cache keys (USER_PREFERENCES_CACHE_TTL_SECONDS, EMAILS_SEARCH_FETCH_CONCURRENCY), both opt-outable.
  • Ruff / Black / MyPy strict clean; backend 8687 unit tests green + agents green; frontend 123 tests green (+3 XSS); i18n key parity across all 6 locales; Docker startup verified healthy (migration applied, CSP active).

Full changelog: CHANGELOG.md

Security Fixes

  • Dashboard greeting content is auto‑escaped and rendered as React children; strict Content‑Security-Policy enforces XSS protection
  • Internal services (Postgres, Grafana, Prometheus, Loki, Tempo, exporters) bound to loopback only, isolating them from the LAN

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

Track LIA

Get notified when new releases ship.

Sign up free

Beta — feedback welcome: [email protected]