Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain low-privileged local account on macOS host
-
DeliveryPre-plant socket at /var/tmp/iTerm2.socket.<pid>
-
ExploitVictim launches iTerm2 and restores session
-
ExecutionHand over attacker pty via SCM_RIGHTS
-
ImpactCapture restored terminal session contents
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a local, unprivileged account on the same macOS host (PR:L) - there is no remote vector. The victim must trigger iTerm2's mono-server session restoration so the client calls iTermFileDescriptorClientConnect() against a socket in the world-writable, sticky P_tmpdir (/var/tmp). The attacker must pre-create a socket with the predictable name iTerm2.socket.<pid> before the client connects and win the TOCTOU race (including predicting the child pid), then pass an attacker-controlled pty master via SCM_RIGHTS. Limiting factors that reduce realistic risk: a local account is mandatory, session restoration must occur, the pid is predictable-but-not-known in advance, the exploit is a timing race (unreliable), and it affects only iTerm2 versions before 3.6.12; the patched client rejects any peer whose euid differs from the user's. |
| Impact | This is a medium-severity, locally-exploitable information-disclosure flaw (CVSS 5.5, CWE-200) that is a low-to-moderate real-world priority rather than an urgent one. All low-urgency signals align: the CVSS vector is AV:L/PR:L (an authenticated local user on the same macOS host, not remote), and CISA's SSVC decision framework rates Exploitation: none, Automatable: no, Technical Impact: partial - i.e. no observed exploitation and not mass-automatable. No KEV listing and no EPSS score are present in the input, consistent with a non-widespread, targeted-access issue. The main conflict is attack complexity: the input vector asserts AC:L, but the commit evidence shows the attack is a TOCTOU socket-squatting race in world-writable /var/tmp against a predictable-but-unknown name (iTerm2.socket.<pid>) that also depends on the victim triggering session restoration - mechanics that argue for AC:H and lower reliability than AC:L implies; verify complexity against the mechanism. Data quality is weak: the CPE (cpe:2.3:a:n/a:n/a) and EUVD affected versions ('n/a n/a') are placeholders, so only the description anchors the <3.6.12 boundary. A gist is referenced and may be a PoC/writeup, but no working exploit is confirmed in structured data. Net: real but gated by local access and a race - prioritize for shared/multi-user Macs, deprioritize for single-user workstations. |
| Exploit ScenarioDerived | On a shared or multi-user macOS host, a low-privileged local user pre-creates a UNIX socket at /var/tmp/iTerm2.socket.<pid> before the victim's iTerm2 launches. When the victim starts iTerm2 and a session is restored, the client connects to the attacker's squatted socket, and the attacker hands over an attacker-controlled pty master via SCM_RIGHTS, man-in-the-middling the restored terminal and capturing its contents. A referenced gist (NSEcho) may contain proof-of-concept or writeup material, but no exploit is confirmed in CISA KEV; exploitation is local (AV:L) and gated by a timing race. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 07, 2026
Information disclosure in iTerm2 for macOS before 3.6.12 allows a local, unprivileged attacker to man-in-the-middle the terminal's mono-server session-restoration handshake and obtain sensitive session data (CVSS 3.1 base 5.5, CWE-200). The flaw lives in iTermFileDescriptorClientConnect(), which connects to a predictably named rendezvous socket (iTerm2.socket.<pid>) inside the world-writable, sticky shared temp directory (/var/tmp); an attacker who pre-creates that socket and wins a timing race can pass an attacker-controlled pty master back to the client via SCM_RIGHTS and read/interpose the restored session. Exploitation requires a local account on the same host, session restoration to be triggered, pid prediction and a race to be won, which is why this is a low-to-moderate priority rather than an urgent one; no public exploit has been identified at time of analysis and CISA SSVC records Exploitation: none, Automatable: no, Technical Impact: partial (the flaw is not in CISA KEV). The vendor fix is included in iTerm2 3.6.12.
RemediationAI
Vendor-released patch: upgrade iTerm2 to 3.6.12 or later - the fix is present in upstream commit 1260814ac9c12aeb3a5cbfb26d00c72ff9e79327 and the vulnerable code path is closed in builds at or above 3.6.12; verify the installed version via iTerm2 > About iTerm2 and update through the app's built-in updater or the official release page. Until upgrade is possible, the most effective compensating control is to break the exploit precondition rather than rely on path inspection: disable session restoration (Preferences > General > 'Restore sessions after restart' / avoid 'Save and restore windows and sessions'), because the vulnerable connect() only runs during mono-server restoration - the trade-off is the loss of automatic session/window restoration for that user. Because the attack requires a local account on the same macOS host, restrict shell access and avoid running untrusted processes or other users' accounts on machines where iTerm2 is used interactively; this is a deployment-hygiene control with no product-side side effects but limited value on multi-user workstations. Note that the newly added lstat() ownership/non-socket check is explicitly documented upstream as a cheap early reject only and is TOCTOU-racy, so downgrades or back-ports that reproduce only the lstat() check without the getpeereid() peer-credential validation should be treated as unfixed. Defensive monitoring can flag the pre-creation step by watching /var/tmp for socket files named iTerm2.socket.* whose owning uid differs from the legitimate user; this generates noise where iTerm2 already legitimately creates these sockets, so alerts should key on foreign ownership only. No vendor-published workaround beyond updating is referenced in the supplied advisories (https://nvd.nist.gov/vuln/detail/CVE-2026-88514).
Affected VersionsENISA
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
iTerm2 uses a 'mono-server' architecture in which a client process reconnects to an existing server instance during session restoration by way of a UNIX domain socket rendezvous. That socket is created under P_tmpdir (/var/tmp) - a world-writable, sticky directory - with the predictable name iTerm2.socket.<pid>. Because the path is predictable and the directory is writable by any local uid, an attacker can pre-create a socket at that name before the client launches, then act as the peer: the client connects, and the attacker sends a file descriptor (an attacker-controlled pty master) over the connection using SCM_RIGHTS, letting them interpose on the 'restored' session and expose session content. The root cause class is CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor), with the underlying mechanism being a path-based trust decision subject to a TOCTOU race (CWE-367) - the fix commit explicitly notes that its added lstat() check is 'inherently TOCTOU with the connect() that follows' and is only an early reject, not a security boundary. The authoritative defense added upstream is a getpeereid() check performed after connect(): the kernel reports the credentials of the peer on the established connection, so the client can reject before it recvmsg()s the SCM_RIGHTS fd regardless of what the pathname resolved to. The patch also refuses to connect when the path is not a socket or is owned by a different euid, setting ENOTSOCK/EPERM for clearer diagnostics. Note that the getpeereid() check does not defend against a same-uid process, which is not considered a security boundary on macOS. The supplied CPE data is a placeholder (cpe:2.3:a:n/a:n/a) and EUVD lists no discrete version identifiers, so version scoping must come from the advisory text: all iTerm2 releases before 3.6.12 on macOS.
Know when macOS 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
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
Local same-host account needed (PR:L); exploitation is a TOCTOU socket-squatting race on a predictable pid name (AC:H); it discloses terminal session contents (C:H) and is scoped as information disclosure, so I:N/A:N.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
Lifecycle Timeline
3DescriptionCVE.org
An issue in iTerm2 macOS before 3.6.12 allows a local attacker to obtain sensitive information.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
An unauthenticated remote code execution vulnerability exists in Remote for Mac, a macOS remote control utility develope
Out-of-bounds write in Apple's iOS, iPadOS, and macOS file-parsing code lets remote attackers achieve arbitrary code exe
Apple's kernel across all platforms (iOS, macOS, watchOS, visionOS, tvOS) contains a memory corruption vulnerability (CV
The issue was addressed with improved checks. Rated high severity (CVSS 7.0). Actively exploited in the wild (cisa kev)
A logic issue was addressed with improved restrictions. Rated high severity (CVSS 7.8), this vulnerability is no authent
In Sudo before 1.9.12p2, the sudoedit (aka -e) feature mishandles extra arguments passed in the user-provided environmen
A race condition was addressed with additional validation. Rated high severity (CVSS 7.0), this vulnerability is no auth
This issue was addressed with improved checks. Rated critical severity (CVSS 10.0), this vulnerability is remotely explo
A carefully crafted request body can cause a buffer overflow in the mod_lua multipart parser (r:parsebody() called from
Cross-Site Request Forgery (CSRF) vulnerability in Laundry on Linux, MacOS allows to perform an Account Takeover. This i
A vulnerability was found in LibTIFF. Rated high severity (CVSS 8.8), this vulnerability is remotely exploitable, no aut
Use of Out-of-range Pointer Offset in GitHub repository vim/vim prior to 8.2.4440. Rated high severity (CVSS 8.8), this
EUVD-2026-94359
GHSA-4mr7-8qv3-cm83
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB