Description
Memos' webhook URL validation, isReservedIP (internal/webhook/validate.go), checks a candidate IP against a reservedCIDRs list that omits 0.0.0.0/8 and never calls ip.IsUnspecified — unlike the correctly implemented sibling function isInternalIP in internal/httpgetter/html_meta.go, which does.
Published: 2026-08-05
Score: 8.5 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw lies in Memos’ webhook URL validation where the isReservedIP() function checks inbound IPs against a reservedCIDRs list that incorrectly excludes the 0.0.0.0/8 block and does not invoke ip.IsUnspecified. An attacker can register a webhook URL such as http://0.0.0.0:PORT/ to bypass the reserved‑IP check; because many operating systems redirect 0.0.0.0 connections to 127.0.0.1, the Memos server will then perform outbound HTTP requests to its own loopback interface, enabling disclosure of internal-only services that would otherwise be inaccessible from the exterior. This classic Server‑Side Request Forgery (CWE‑918) facilitates internal resource exposure without requiring privileged credentials on the host.

Affected Systems

The vulnerability impacts the Memos application as distributed by usememos. All current releases of Memos remain potentially affected until a fix is released, as no specific version information is provided.

Risk and Exploitability

With a CVSS score of 8.5, the vulnerability is classified as high severity. The EPSS score is reported as less than 1% and the issue is not listed in CISA’s KEV catalog. The attack vector is inferred from the description: an attacker must be able to register a webhook on the Memos instance. Once registered, the server will automatically make HTTP requests to its loopback address, exposing internal services. The exploit conditions are minimal and do not require elevated host privileges, rendering it a realistic threat.

Generated by OpenCVE AI on August 10, 2026 at 20:23 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to the latest Memos release once available, which includes the corrected webhook validation logic.
  • If an immediate upgrade is not possible, manually patch the validate.go file to include 0.0.0.0/8 in the reservedCIDRs list or add an ip.IsUnspecified() check before allowing the request.
  • As a temporary safeguard, block outbound HTTP traffic from the Memos process to localhost (127.0.0.1) using firewall rules or container network policies.

Generated by OpenCVE AI on August 10, 2026 at 20:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 10 Aug 2026 12:00:00 +0000

Type Values Removed Values Added
Description Memos' webhook URL validation, isReservedIP() (internal/webhook/validate.go), checks a candidate IP against a reservedCIDRs list that omits 0.0.0.0/8 and never calls ip.IsUnspecified() — unlike the correctly implemented sibling function isInternalIP() in internal/httpgetter/html_meta.go, which does. Because Linux redirects connections to 0.0.0.0 to loopback (127.0.0.1), an attacker registering a webhook URL of http://0.0.0.0:PORT/ bypasses the reserved-IP check and causes the Memos server to make outbound HTTP requests to its own loopback interface, exposing internal-only services. Memos' webhook URL validation, isReservedIP (internal/webhook/validate.go), checks a candidate IP against a reservedCIDRs list that omits 0.0.0.0/8 and never calls ip.IsUnspecified — unlike the correctly implemented sibling function isInternalIP in internal/httpgetter/html_meta.go, which does.
Title Memos - Webhook SSRF via 0.0.0.0 Reserved-IP Bypass Memos Webhook SSRF via 0.0.0.0 Reserved-IP Bypass

Mon, 10 Aug 2026 11:45:00 +0000

Type Values Removed Values Added
Title Memos Webhook SSRF via 0.0.0.0 Reserved-IP Bypass Memos - Webhook SSRF via 0.0.0.0 Reserved-IP Bypass

Wed, 05 Aug 2026 16:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 05 Aug 2026 15:00:00 +0000

Type Values Removed Values Added
First Time appeared Usememos
Usememos memos
Vendors & Products Usememos
Usememos memos

Wed, 05 Aug 2026 13:15:00 +0000

Type Values Removed Values Added
Description Memos' webhook URL validation, isReservedIP() (internal/webhook/validate.go), checks a candidate IP against a reservedCIDRs list that omits 0.0.0.0/8 and never calls ip.IsUnspecified() — unlike the correctly implemented sibling function isInternalIP() in internal/httpgetter/html_meta.go, which does. Because Linux redirects connections to 0.0.0.0 to loopback (127.0.0.1), an attacker registering a webhook URL of http://0.0.0.0:PORT/ bypasses the reserved-IP check and causes the Memos server to make outbound HTTP requests to its own loopback interface, exposing internal-only services.
Title Memos Webhook SSRF via 0.0.0.0 Reserved-IP Bypass
Weaknesses CWE-918
References
Metrics cvssV3_1

{'score': 8.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: TuranSec

Published:

Updated: 2026-08-10T11:46:46.139Z

Reserved: 2026-08-05T12:23:34.967Z

Link: CVE-2026-71271

cve-icon Vulnrichment

Updated: 2026-08-05T15:38:07.117Z

cve-icon NVD

Status : Deferred

Published: 2026-08-05T13:24:51.447

Modified: 2026-08-26T17:13:24.800

Link: CVE-2026-71271

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-10T20:30:05Z

Weaknesses
  • CWE-918

    Server-Side Request Forgery (SSRF)