Skip to main content

Omnivore CVE-2026-77067

| EUVDEUVD-2026-63256 MEDIUM
Server-Side Request Forgery (SSRF) (CWE-918)
2026-08-20 VulnCheck GHSA-w562-g8x6-3cj6
5.3
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to Omnivore instance
  2. Delivery
    Register webhook pointing to internal or metadata URL via setWebhook mutation
  3. Exploit
    Subscribe webhook to a high-frequency event type
  4. Execution
    Trigger subscribed event (e.g., save article)
  5. Persist
    Server issues blind axios HTTP request to internal target
  6. Impact
    Probe internal network reachability or harvest cloud IAM metadata from server logs

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

A valid authenticated session on the Omnivore instance is required (PR:L per CVSS 4.0 vector); no administrative role is needed-the setWebhook GraphQL mutation is available to all registered users. The webhook feature must not be disabled at the application or infrastructure level. SSRF impact is substantially amplified when the Omnivore API server runs in a cloud environment with AWS IMDSv1 (or equivalent) accessible at link-local addresses, or when the server has network routes to internal services (databases, admin panels, internal APIs). The attack is blind: callWebhook discards the HTTP response and logs only success or the axios error message, so direct response-body exfiltration through the API is not possible. Exploitation is limited by: requirement for account registration, the stored-SSRF trigger model (impact depends on event frequency), blind response behavior preventing real-time read-back, and network egress controls that block private or link-local IP ranges.

Impact

The CVSS 4.0 score of 5.3 (Medium) with PR:L correctly reflects the authentication prerequisite and the blind response behavior (VC:N). However, the provided vector scores SC:N (no subsequent-system confidentiality impact), which underweights real-world cloud risk: in AWS environments with IMDSv1 enabled, each webhook-triggered axios request to 169.254.169.254 causes the metadata service to return IAM credential material that callWebhook writes to server logs on error-a meaningful confidentiality exposure on the subsequent system. The stored, event-driven nature of the SSRF means an attacker registers once and harvests on every future event trigger, making it persistent and automatable. No EPSS data was provided; the absence of a KEV listing and no confirmed public exploit suggest no observed mass exploitation. The authentication requirement (PR:L) is the primary limiting factor: exploitation requires a valid registered account. The blind response prevents direct API-path data exfiltration, which significantly constrains opportunistic attackers but does not protect against well-positioned insiders or compromised credentials in multi-tenant self-hosted deployments.

Exploit ScenarioDerived

An authenticated Omnivore user registers a webhook URL of http://169.254.169.254/latest/meta-data/iam/security-credentials/ and subscribes it to a high-frequency event type such as article save. Each time the user or any automated import saves an article, callWebhook issues an axios POST to the AWS IMDSv1 metadata endpoint; in IMDSv1-enabled environments the response contains IAM role credentials in plaintext, which callWebhook writes to the server error log on non-2xx status. No public exploit code has been identified at time of analysis, but the attack requires only a registered account and standard webhook API access.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 20, 2026

Blind Server-Side Request Forgery in Omnivore's webhook registration flow allows any authenticated user to coerce the application server into issuing repeated HTTP requests to arbitrary internal endpoints, including cloud instance metadata services. The flaw affects all Omnivore API server deployments (CPE: cpe:2.3:a:omnivore-app:omnivore:*:*:*:*:*:*:*:*) and is rooted in setWebhookResolver accepting and persisting caller-supplied URLs with no address validation before callWebhook later executes them via axios. No public exploit identified at time of analysis, and no CISA KEV listing exists; a patch commit is available upstream.

RemediationAI

The primary fix is upstream commit c4d7d8562e6b9aabb1d8e4dabca268e314baa43a (https://github.com/omnivore-app/omnivore/commit/c4d7d8562e6b9aabb1d8e4dabca268e314baa43a), which adds validateUrl() in setWebhookResolver to reject private and local IP targets at webhook registration time. Operators should rebuild or redeploy from a commit at or after this hash; a specific patched release version tag was not independently confirmed from available data, so verify against the upstream repository before deploying. As a compensating control pending patch application, restrict outbound HTTP egress from the Omnivore API server at the network layer using firewall rules blocking RFC-1918 ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16), loopback (127.0.0.0/8), and link-local (169.254.0.0/16); this prevents webhook-triggered requests from reaching internal infrastructure but does not prevent storage of malicious URLs. In AWS environments, enabling IMDSv2 (token-required mode) removes the unauthenticated metadata path at 169.254.169.254 and is strongly recommended regardless of patch status. VulnCheck advisory: https://www.vulncheck.com/advisories/omnivore-stored-server-side-request-forgery-via-the-setwebhook-mutation

Affected VersionsENISA

omnivore 0 <c4d7d8562e6b9aabb1d8e4dabca268e314baa43a

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

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

Technical ContextAI · show details

Omnivore is an open-source, self-hostable read-it-later application with a GraphQL API backend written in TypeScript/Node.js. CWE-918 (Server-Side Request Forgery) describes the root cause: the server makes outbound network requests based on attacker-controlled input. Specifically, setWebhookResolver (packages/api/src/resolvers/webhooks/index.ts:L108) persists the caller-supplied url field directly to the database without importing or invoking any address-validation helper. When a subscribed event fires, callWebhook (packages/api/src/jobs/call_webhook.ts:L36) constructs an axios.request using the stored URL, the stored HTTP method, the stored Content-Type, and a JSON body containing live event data. Because axios resolves hostnames and follows redirects at request time, the server can be directed to RFC-1918 private addresses, loopback (127.0.0.1), and link-local cloud metadata endpoints such as 169.254.169.254 (AWS IMDSv1). The response is discarded by callWebhook-only a success line or axios error is written to the server log-making this a stored, event-triggered, blind SSRF. The patch (commit c4d7d8562e6b9aabb1d8e4dabca268e314baa43a) imports validateUrl from the existing create_page_save_request service and calls it in setWebhookResolver before persisting the URL, blocking private and local IP ranges at registration time and returning BAD_REQUEST on violation.

Know when Omnivore 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 (VulnCheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N
vuln.today AI 6.4 MEDIUM

Network GraphQL mutation requires low privileges (AV:N, PR:L); scope changes to internal systems reachable via SSRF (S:C); blind response constrains but does not eliminate confidentiality and integrity impact on subsequent systems.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
Low
Subsequent system: Availability
None

DescriptionCVE.org

The setWebhookResolver in packages/api/src/resolvers/webhooks/index.ts stores the caller-supplied url without any address validation, and the file imports no validation helper. When a subscribed event fires, callWebhook in packages/api/src/jobs/call_webhook.ts issues axios.request with that url, the method and Content-Type recorded on the webhook, and a JSON body carrying the event data, so an authenticated user can make the server send repeated attacker-shaped requests to internal endpoints, including link-local metadata addresses. The request is blind: callWebhook discards the result and writes only a success line or the axios error to the server log, so the response is not returned through the API.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Low
niche self-hosted read-it-later 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
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.

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