The local HTTP server started by engram server (binding 127.0.0.1:7337 by default) was exposed to any browser origin with no authentication unless ENGRAM_API_TOKEN was explicitly set. Combined with Access-Control-Allow-Origin: * on every response and a body parser that did not require Content-Type: application/json, this allowed a malicious web page the developer visited to:
GET /query and GET /stats (function names, file layout, recorded decisions/mistakes).POST /learn, which wrote mistake/decision nodes that were later surfaced as system-reminders to the user's AI coding agent on every future session and file edit.Severity: High — confidentiality + persistent indirect prompt injection against the user's coding agent.
engramx >= 1.0.0, < 2.0.2 — any version that shipped the HTTP server.
engramx@2.0.2
engram server or engram ui.ENGRAM_API_TOKEN to a long random value and terminate the server before browsing the web.~/.engram/http-server.token (0600).ENGRAM_ALLOWED_ORIGINS.Content-Type: application/json enforced on mutations — blocks the text/plain CSRF vector./ui?token= bootstrap with Sec-Fetch-Site gate — prevents cross-origin oracle probing.Discovered and responsibly disclosed by @gabiudrescu in engram issue #7.
{
"cwe_ids": [
"CWE-1188",
"CWE-306",
"CWE-352",
"CWE-942"
],
"github_reviewed": true,
"github_reviewed_at": "2026-04-22T14:52:03Z",
"nvd_published_at": null,
"severity": "HIGH"
}