LibreChat/api/server
Marco Beretta ff2842d0dd
fix: reject non-string tag and conversationId in forced-retention helpers
The bookmark-tag and conversation ids passed to the forced-retention
helpers come from untyped request bodies, so a crafted PUT /api/tags
body like {"tag": {"$gt": ""}} reached Conversation.find({ tags }) as a
query operator and matched every tagged conversation instead of one,
bulk-converting them under ephemeral retention (NoSQL operator
injection). The same applied to req.body.conversationId on POST.

Guard applyForcedRetention and applyForcedRetentionToTag to ignore any
non-string conversationId/messageId/tag, and pass a guaranteed string
from the tag rename route.
2026-06-24 15:43:46 +02:00
..
controllers fix: cap agent abort and disconnect partial saves to the parent expiry 2026-06-23 16:41:33 +02:00
middleware fix: enforce forced retention on message edits, feedback, and error saves 2026-06-23 16:41:33 +02:00
routes fix: reject non-string tag and conversationId in forced-retention helpers 2026-06-24 15:43:46 +02:00
services fix: cap shared-link expiry at source conversation and enforce retention on assistant saves 2026-06-23 16:40:57 +02:00
utils fix: apply retention to forked and duplicated conversations 2026-06-23 16:40:21 +02:00
cleanup.js
experimental.js 🛟 fix: Auto-Recover from Stale Service Worker Assets After Deploys (#13686) 2026-06-11 11:57:06 -04:00
index.js 📒 feat: Audit Log Backend for SystemGrant Assign and Revoke Events (#13087) 2026-06-18 15:42:33 -04:00
index.metrics.spec.js
index.spec.js ⚙️ refactor: lazy-load React Query Devtools (#13639) 2026-06-10 13:06:20 -04:00
socialLogins.js feat: Make OpenID Token Reuse Window Configurable (#13546) 2026-06-06 15:15:58 -04:00
socialLogins.spec.js feat: Make OpenID Token Reuse Window Configurable (#13546) 2026-06-06 15:15:58 -04:00
telemetry.js
telemetry.spec.js