{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/vendors/memos/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":[],"_cs_cpes":[],"_cs_cves":[{"cvss":9.8,"id":"CVE-2026-75110"}],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["MemOS"],"_cs_severities":["critical"],"_cs_tags":[],"_cs_type":"advisory","_cs_vendors":["MemOS"],"content_html":"\u003cp\u003eMemOS, a memory operating system designed for LLMs and AI agents, contains a critical authentication bypass vulnerability (CVE-2026-75110). The issue resides in the \u003ccode\u003eis_internal_request()\u003c/code\u003e function within \u003ccode\u003esrc/memos/api/middleware/auth.py\u003c/code\u003e. In environments where \u003ccode\u003eAUTH_ENABLED\u003c/code\u003e is set to \u003ccode\u003etrue\u003c/code\u003e, the system attempts to verify internal service requests by comparing the \u003ccode\u003eX-Internal-Service\u003c/code\u003e header against the \u003ccode\u003eINTERNAL_SERVICE_SECRET\u003c/code\u003e environment variable.\u003c/p\u003e\n\u003cp\u003eIf the \u003ccode\u003eINTERNAL_SERVICE_SECRET\u003c/code\u003e variable is not explicitly configured by the administrator, the \u003ccode\u003eos.getenv\u003c/code\u003e call returns \u003ccode\u003eNone\u003c/code\u003e. Simultaneously, a request lacking the \u003ccode\u003eX-Internal-Service\u003c/code\u003e header also results in \u003ccode\u003eNone\u003c/code\u003e. Consequently, the comparison \u003ccode\u003eNone == None\u003c/code\u003e evaluates to \u003ccode\u003etrue\u003c/code\u003e, causing the middleware to improperly classify an unauthenticated external request as a trusted internal principal with \u0026quot;all\u0026quot; scopes. This flaw grants attackers full access to sensitive administrative endpoints, including those for API-key management, allowing them to mint, enumerate, and revoke keys, or generate a master key for persistent, privileged unauthorized access to the entire data platform.\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAttacker performs reconnaissance to identify a MemOS deployment exposing the API surface.\u003c/li\u003e\n\u003cli\u003eAttacker probes the authentication middleware by sending arbitrary requests without the \u003ccode\u003eX-Internal-Service\u003c/code\u003e header.\u003c/li\u003e\n\u003cli\u003eThe server-side \u003ccode\u003eauth.py\u003c/code\u003e middleware retrieves the value of the unset \u003ccode\u003eINTERNAL_SERVICE_SECRET\u003c/code\u003e environment variable, which resolves to \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe middleware retrieves the missing header value from the request, which also resolves to \u003ccode\u003eNone\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eis_internal_request()\u003c/code\u003e function executes the comparison \u003ccode\u003eNone == None\u003c/code\u003e, returning \u003ccode\u003eTrue\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eThe MemOS middleware grants the request a trusted internal principal identity with broad \u0026quot;all\u0026quot; scopes.\u003c/li\u003e\n\u003cli\u003eAttacker submits requests to the \u003ccode\u003e/api/key-management\u003c/code\u003e endpoint to mint new administrative API keys.\u003c/li\u003e\n\u003cli\u003eAttacker uses the newly minted keys to exfiltrate data or gain persistent, unauthorized administrative access.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eSuccessful exploitation of this vulnerability leads to complete compromise of the MemOS instance. An attacker can bypass all authentication controls, gain administrative access to API-key management, and exfiltrate or manipulate LLM/agent memory data. Given the \u0026quot;all\u0026quot; scope granted, attackers can generate persistent master keys, effectively providing long-term unauthorized access even if the underlying environment configuration is eventually corrected.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cp\u003ePrioritize the immediate remediation of affected MemOS instances.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeploy an \u003ccode\u003eINTERNAL_SERVICE_SECRET\u003c/code\u003e environment variable with a strong, high-entropy secret key immediately to force the \u003ccode\u003eos.getenv\u003c/code\u003e return value to be non-null.\u003c/li\u003e\n\u003cli\u003eReview all logs for unauthorized access to administrative paths (e.g., \u003ccode\u003e/api/key-management\u003c/code\u003e) originating from external IP addresses.\u003c/li\u003e\n\u003cli\u003eAudit all active API keys in the MemOS deployment for unauthorized additions or modifications created since the deployment was initialized.\u003c/li\u003e\n\u003cli\u003eUpgrade MemOS to the patched version once released by the vendor to enforce robust header validation.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2026-08-17T22:51:01Z","date_published":"2026-08-17T22:51:01Z","id":"https://feed.craftedsignal.io/briefs/2026-08-memos-auth-bypass/","summary":"MemOS contains an authentication bypass vulnerability where unset environment variables cause the internal request middleware to fail open, granting unauthenticated remote attackers administrative access.","title":"Authentication Bypass in MemOS via Internal Middleware Misconfiguration","url":"https://feed.craftedsignal.io/briefs/2026-08-memos-auth-bypass/"}],"language":"en","title":"CraftedSignal Threat Feed - MemOS","version":"https://jsonfeed.org/version/1.1"}