Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker starts OAuth login with own account
-
DeliveryCraft gitify://oauth?code= callback link
-
ExploitLure victim to open link mid-login
-
ExecutionUnvalidated callback binds client to attacker
-
ImpactVictim sees attacker-controlled notifications
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Anti-CSRF tokens, SameSite cookies
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a Gitify user to have an in-flight GitHub OAuth login pending AND to open an attacker-supplied gitify://oauth?code=<attacker_authorization_code> deep link during that window, which Gitify accepts because performGitHubWebOAuth() omits any OAuth state check. Limiting factors: it is a timing-dependent race against a pending login (reflected as AT:P), it needs the victim to act on the attacker's link (UI:P passive interaction), and impact is bounded to low integrity - the victim's client is bound to the attacker's account and shows attacker-controlled notifications, with no read access to the victim's data or account takeover. No non-default configuration is needed; vulnerable behavior is present in default builds before v7.10.0. |
| Impact | This is a genuinely low-priority issue, and the signals are consistent rather than conflicting. The vendor-supplied CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:L/VA:N) scores only 2.3, and the metrics explain why: although the attacker is unauthenticated (PR:N) and the vector is network-reachable (AV:N), successful exploitation carries an attack requirement (AT:P) and requires passive victim interaction (UI:P) - specifically, the attacker must land a malicious callback during a victim's already-pending login. Impact is confined to low integrity (VI:L) with no confidentiality or availability consequence: the attacker binds the victim's client to the attacker's GitHub account, so the victim sees the attacker's notifications rather than losing their own data. No EPSS score, KEV listing, or public POC was provided in the input, so there is no evidence of active exploitation or mass-scanning interest; this is a classic low-CVSS, low-real-risk client-side CSRF rather than an urgent threat. The only firm risk-reducing fact is that a patch (v7.10.0) is confirmed available. |
| Exploit ScenarioDerived | While a Gitify user has a GitHub OAuth login in progress, an attacker lures them into opening a gitify://oauth?code= deep link carrying the attacker's own authorization code. Because performGitHubWebOAuth() never validates an OAuth state parameter, Gitify accepts the attacker's code and binds the client to the attacker's GitHub account, causing the victim's Gitify to display attacker-controlled notifications as if they were the victim's own. No public exploit was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 18, 2026
Gitify desktop builds prior to 7.10.0 perform the GitHub web OAuth flow without generating or validating an OAuth state value, so an attacker who supplies their own authorization code via a crafted gitify://oauth?code=... deep link can bind a victim's Gitify client to the attacker's GitHub account. The attacker then controls the notifications the victim sees, but gains no access to the victim's data and no account takeover - impact is limited to low integrity. Exploitation is unauthenticated (PR:N) but requires a race against an already-pending login (AT:P) and victim interaction with the attacker's link (UI:P). No public exploit code or CISA KEV entry was identified at time of analysis, and the issue is assessed as genuinely low priority.
RemediationAI
Upgrade Gitify to 7.10.0 or later (vendor-released patch: 7.10.0), which generates a CSPRNG-backed OAuth state per login attempt and refuses any gitify://oauth callback whose state does not match, and also discards unparseable callback URLs. Because the update is delivered through the normal release channel, verify the installed version in the app's about screen and prefer the official release artifact from https://github.com/gitify-app/gitify/releases/tag/v7.10.0. If upgrading is delayed, the practical compensating control is operational: avoid opening gitify:// links from untrusted sources (email, chat, issue comments) and avoid having a GitHub login in progress while doing so - the attack only lands during that narrow pending-login window, and there is no configuration flag that disables the vulnerable path, so the trade-off is user discipline rather than a technical mitigation. Administrators who deploy endpoint policy can also consider blocking or requiring confirmation for the gitify:// URL scheme handler at the OS level on managed macOS/Windows fleets (e.g. LaunchServices scheme restrictions or Windows protocol-handler policy), at the cost of breaking legitimate deep links such as notification actions.
Affected VersionsENISA
Affected Packages
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
Gitify is an Electron-based desktop client that displays GitHub notifications. Its login flow (src/renderer/utils/forges/github/flows.ts, performGitHubWebOAuth()) opens GitHub's OAuth authorization endpoint in the system browser and registers a handler for the custom gitify:// protocol/redirect URI to receive the authorization code back in the renderer process. OAuth 2.0 defines the state parameter specifically to defend against this class of attack: a per-attempt, unguessable, single-use value that the client sends to the authorization server and then verifies on the redirect. Prior to 7.10.0 Gitify omitted both steps, making the flow a textbook CWE-352 (cross-site request forgery) login-CSRF: the callback handler accepted any gitify://oauth?code= URI, so an attacker could deliver their own freshly issued authorization code during a victim's in-flight login and have the client exchange it, ending up authenticated as the attacker. The vendor fix (commit 10235b24) adds src/renderer/utils/auth/state.ts with generateOAuthState() returning crypto.randomUUID() - 122 bits of CSPRNG randomness - attaches it to the authorization URL, rejects callbacks whose state does not match (logging a warning and leaving the pending login intact), and additionally ignores unparseable callback URLs such as gitify://[ instead of tearing down the login attempt.
Know when Gitify 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
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Unauthenticated network CSRF (PR:N, AV:N) but requires victim interaction (UI:R) and a race against a pending login (AC:H); only integrity is affected and only slightly (I:L), with no C or A impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Gitify before 7.10.0 contains a login cross-site request forgery vulnerability that allows remote attackers to bind a victim's client to their account because performGitHubWebOAuth() omits OAuth state validation. Attackers can get a gitify://oauth?code= link with their own authorization code opened during a victim's pending login, causing Gitify to display attacker-controlled notifications as the victim's own.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.
EUVD-2026-103512
GHSA-gh5g-g72j-mxwx
NVD
CVE.org
EPSS
Exploit-DB