Memos Webhook SSRF via 0.0.0.0 Reserved-IP Bypass
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| usememos | memos | unaffected |
|
No data.
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Usememos | Memos |
|
No CVSS v4.0
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.328% probability within 30 days)
| 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 |
| 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 |
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Usememos
Usememos memos |
|
| Vendors & Products |
Usememos
Usememos memos |
| 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
|