RAG Pipeline Utils v3.8.1: Security Fixes for Access Control, Plugin Signatures, the Dev Server and the MCP Server
· 2 min read
A security release. Upgrade now if you use RetrievalGuard access control, plugin signature verification, the development server (DevServer) or @devilsdev/rag-mcp-server, and re-ingest FileVectorStore indexes whose documents set acl or requiredRole at the top level. One change in access control can hide documents that were visible before.
npm install @devilsdev/rag-pipeline-utils@^3.8.1
# and, if you use the MCP server:
npx @devilsdev/rag-mcp-server@3.8.1 ./docs
Security
Four advisories are fixed in this release. Each one lists the affected versions and workarounds for anyone who can't upgrade yet.
- Access control (
RetrievalGuardwithenforceACL, and the built-inMemoryRetriever,FileVectorStoreandBM25Search): a document restricted to a role could be passed to users without that role, depending on where the restriction was set on the document and how the user's permissions were passed in. GHSA-8393-cmg7-9rv3 - Plugin signatures (
PluginSignatureVerifierwithrequireContentDigest: true): a crafted plugin manifest could pass verification for code its signer never approved. GHSA-w693-22gp-m69r - The development server (
DevServer): in some setups it could be reached from the network, or by other web pages open in your browser, which could then run queries on your LLM provider's credits. GHSA-6h47-g8cw-366q - The MCP server (
@devilsdev/rag-mcp-server): a crafted HTML file in an indexed folder could stall indexing for minutes. GHSA-j2vr-gm7f-3r37
After upgrading
- Re-ingest
FileVectorStoreindexes whose documents setaclorrequiredRoleat the top level (not inmetadata). Index files written by earlier versions don't contain that field, so upgrading alone doesn't restrict those documents. Documents with the restriction inmetadata, and the in-memory stores (MemoryRetriever,BM25Search), need no action beyond upgrading.
Changed
RetrievalGuardnow requires every restriction a document sets. A document can setrequiredRoleoraclat its top level, inmetadataand ondoc; access now requires meeting each one that is set (any one role of a list is enough for that list). This can hide documents that were visible before.
The full list is in the CHANGELOG.
