engram: HTTP server CORS wildcard + auth-off-by-default enables CSRF graph exfiltration and persistent indirect prompt injection
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.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도(심각도 등급 추정치) | 80.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 80.00 |
VPI 공식 vpi-v1 기준