Skip to main content

Memos EUVDEUVD-2026-53357

| CVE-2026-71272 HIGH
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-08-05 TuranSec GHSA-w8cc-xr9f-mrh7
8.5
CVSS 3.1 · Vendor: TuranSec
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Authenticate to Memos with low-privilege account
  2. Delivery
    Register attacker-controlled domain with 1-second TTL pointing to public IP
  3. Exploit
    Create Memos webhook targeting attacker domain
  4. Install
    DNS TTL expires; update DNS record to internal target IP
  5. C2
    Trigger webhook dispatch event
  6. Execute
    safeDialContext() validates public IP, DialContext() re-resolves to internal IP
  7. Impact
    Memos connects to internal host, exfiltrating response

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
Exploitation Conditions

Exploitation requires the attacker to hold a low-privilege Memos user account with permission to create or modify webhook configurations (PR:L per CVSS). The webhook feature must be enabled and accessible to the attacker's account - in single-user Memos instances where the only user is also the administrator, the risk surface is limited to self-compromise. The attacker must additionally control a domain with a custom authoritative DNS server capable of serving different responses across two rapid successive queries (a short-TTL DNS rebinding setup). The timing window between safeDialContext()'s LookupHost() call and the subsequent DialContext() DNS re-resolution must be won; this window is implementation-dependent but typically milliseconds to low-second range. Exploitation is limited to Memos instances with multi-user access or where low-trust users can reach the webhook configuration UI. It does not require any specific non-default Memos configuration beyond webhook availability.

Impact

The vendor-assigned CVSS 3.1 score of 8.5 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N) accurately captures the network reach, scope change, and high confidentiality impact, but the AC:L designation warrants scrutiny. DNS rebinding attacks are not trivially reproducible - they require the attacker to control a domain with an authoritative DNS server capable of serving short-TTL responses and precise timing to win the TOCTOU race window. In practice, this raises the effective attack complexity above what AC:L implies. An independent assessment of AC:H is more accurate for this vulnerability class. No EPSS data was provided in source intelligence, and no CISA KEV listing exists, indicating no confirmed widespread exploitation at time of analysis. The realistic risk is elevated in Memos deployments that expose the webhook feature to untrusted or semi-trusted users (e.g., multi-tenant or team instances), since PR:L means any Memos account with webhook creation access is a potential attacker. Single-user or isolated deployments are significantly less exposed. The S:C flag correctly reflects that a successful exploit extends impact beyond the Memos process itself to internal network hosts.

Exploit ScenarioDerived

An attacker with a Memos account registers an internet-facing domain (e.g., attacker.example) with a very short DNS TTL (e.g., 1 second) pointing to a legitimate public IP. They configure a Memos webhook pointing to this domain, which passes safeDialContext()'s validation since the resolved IP is non-reserved. Immediately before the webhook fires, the attacker updates the DNS record to resolve to an internal address (e.g., 192.168.1.1 - a router or internal API server). When net.Dialer.DialContext() performs its own lookup, it receives the internal IP and Memos connects to the internal target, allowing the attacker to probe or interact with internal services. No public POC was identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Aug 05, 2026

DNS rebinding bypass of SSRF protection in Memos' webhook dispatcher allows a low-privileged authenticated attacker to reach internal network resources by exploiting a time-of-check/time-of-use race in hostname resolution. The safeDialContext() function in internal/webhook/webhook.go validates the resolved IP against reserved ranges but then re-dials using the original hostname, allowing the underlying net.Dialer.DialContext() to perform a second, independent DNS lookup that the attacker controls. By setting a short TTL on an attacker-controlled domain and swapping the DNS response between validation and dial, an attacker can cause Memos to connect to arbitrary internal addresses. No public exploit or CISA KEV listing has been identified at time of analysis, but the scope change (S:C) and high confidentiality impact reflect the risk of internal service enumeration and data exfiltration.

RemediationAI

The definitive fix requires that after the initial DNS validation resolves a hostname to an approved IP, the application must dial that specific validated IP address directly rather than re-passing the original hostname to the dialer. In Go, this means substituting the validated IP for the hostname in the dial target (e.g., using net.JoinHostPort(validatedIP, port) rather than net.JoinHostPort(host, port)) so that net.Dialer.DialContext() cannot perform an independent DNS lookup. No patched release version was confirmed in the available references - the upstream fix status should be tracked at https://github.com/usememos/memos. As a compensating control pending a patch, operators can restrict webhook creation permissions to fully trusted administrators only, reducing the PR:L attack surface. Additionally, deploying Memos behind a network egress filter (e.g., an HTTP proxy with an allowlist or an iptables rule blocking outbound connections to RFC-1918 ranges from the Memos process) would limit what internal resources are reachable even if the SSRF bypass is triggered. Note that egress filtering at the network layer is a defense-in-depth measure and does not address the root cause.

Affected VersionsENISA

memos 0 ≤0.29.1

Affected Packages

euvd memos no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Memos is an open-source, self-hosted note and memo application (cpe:2.3:a:usememos:memos:*:*:*:*:*:*:*:*). Its webhook feature dispatches HTTP requests to user-configured URLs via a Go function safeDialContext() located at internal/webhook/webhook.go. The function attempts to enforce an SSRF safeguard by calling net.DefaultResolver.LookupHost() on the target hostname and comparing the returned IPs against RFC-1918 and other reserved ranges. However, after validation, it reconstructs the dial target using net.JoinHostPort(host, port) - the original hostname string - and passes this to net.Dialer.DialContext(), which performs its own fresh DNS resolution. This constitutes a classic CWE-367 (Time-of-Check Time-of-Use) race condition: the DNS answer used for the security check is not guaranteed to match the answer used at dial time. An attacker controlling a domain's DNS (e.g., via a short TTL and a custom authoritative nameserver) can exploit this gap to cause Memos to connect to an internal address that was never validated.

Know when Memos gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (TuranSec) PRIMARY 8.5 HIGH
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N
vuln.today AI 7.1 HIGH

DNS rebinding requires controlling authoritative DNS and winning a timing race, justifying AC:H over the vendor's AC:L; PR:L retained as webhook creation requires authentication.

3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:L/A:N
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:L/VA:N/SC:H/SI:L/SA:N

Primary rating from Vendor (TuranSec).

CVSS VectorVendor: TuranSec

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
Low
Availability
None

DescriptionCVE.org

Memos' webhook dispatch function safeDialContext() (internal/webhook/webhook.go) resolves the target hostname via net.DefaultResolver.LookupHost() and validates the resulting IPs against reserved ranges, but then dials net.JoinHostPort(host, port) using the original hostname rather than the already-validated IP address. Because net.Dialer.DialContext() performs its own independent DNS resolution, an attacker controlling DNS for the webhook's hostname (e.g. via a short TTL) can return a public, allowed IP during validation and a different, internal IP at dial time - a classic time-of-check/time-of-use DNS-rebinding bypass of the SSRF protection.

Executive ViewAI

Why It Matters

Memos webhook dispatcher contains a DNS rebinding vulnerability (CVE-2026-71272) enabling authenticated users to bypass SSRF protections and access internal network resources. Attackers could enumerate sensitive internal systems and exfiltrate data without requiring elevated privileges. This threatens organizations using Memos that have network connectivity to critical infrastructure.

Business Impact: High
Compensating Controls

Restrict Memos outbound network access via firewall rules to whitelisted destinations; disable webhook functionality if operationally feasible; implement DNS pinning or DNSSEC validation; segment Memos network access from sensitive systems; establish alerting on suspicious webhook dispatcher activity.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Low
niche self-hosted note app, limited enterprise footprint
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

More in Memos

View all
CVE-2025-22952 CRITICAL POC
9.8 Feb 27

elestio memos v0.23.0 is vulnerable to Server-Side Request Forgery (SSRF) due to insufficient validation of user-supplie

CVE-2022-4686 CRITICAL POC
9.8 Dec 23

Authorization Bypass Through User-Controlled Key in GitHub repository usememos/memos prior to 0.9.0. Rated critical seve

CVE-2022-4866 CRITICAL POC
9.0 Dec 31

Cross-site Scripting (XSS) - Stored in GitHub repository usememos/memos prior to 0.9.1. Rated critical severity (CVSS 9.

CVE-2022-4865 CRITICAL POC
9.0 Dec 31

Cross-site Scripting (XSS) - Stored in GitHub repository usememos/memos prior to 0.9.1. Rated critical severity (CVSS 9.

CVE-2023-5036 HIGH POC
8.8 Sep 18

Cross-Site Request Forgery (CSRF) in GitHub repository usememos/memos prior to 0.15.1. Rated high severity (CVSS 8.8), t

CVE-2023-4697 HIGH POC
8.8 Sep 01

Improper Privilege Management in GitHub repository usememos/memos prior to 0.13.2. Rated high severity (CVSS 8.8), this

CVE-2022-4844 HIGH POC
8.8 Dec 29

Cross-Site Request Forgery (CSRF) in GitHub repository usememos/memos prior to 0.9.1. Rated high severity (CVSS 8.8), th

CVE-2022-4809 HIGH POC
8.8 Dec 28

Improper Access Control in GitHub repository usememos/memos prior to 0.9.1. Rated high severity (CVSS 8.8), this vulnera

CVE-2022-4808 HIGH POC
8.8 Dec 28

Improper Privilege Management in GitHub repository usememos/memos prior to 0.9.1. Rated high severity (CVSS 8.8), this v

CVE-2022-4803 HIGH POC
8.8 Dec 28

Authorization Bypass Through User-Controlled Key in GitHub repository usememos/memos prior to 0.9.1. Rated high severity

CVE-2022-4689 HIGH POC
8.8 Dec 23

Improper Access Control in GitHub repository usememos/memos prior to 0.9.0. Rated high severity (CVSS 8.8), this vulnera

CVE-2022-4688 HIGH POC
8.8 Dec 23

Improper Authorization in GitHub repository usememos/memos prior to 0.9.0. Rated high severity (CVSS 8.8), this vulnerab

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy