GCVE-1988-2026-0390
Vulnerability from gna-1988 – Published: 2026-10-02 04:57 – Updated: 2026-10-02 04:57
VLAI
EPSS
VEX
Title
[NotCVE-2026-0015] Input Leap through 3.0.3 input-leapd Unauthenticated IPC Command Execution Allows Local Privilege Escalation to SYSTEM
Summary
----------------------------------------------------------------------------
NotCVE Advisory — NotCVE-2026-0015
----------------------------------------------------------------------------
[-] Summary:
Missing authentication for a critical function in the input-leapd daemon of
Input Leap, the open-source keyboard and mouse sharing tool, allows a
local, low-privileged user on Windows to execute arbitrary commands as
NT AUTHORITY\SYSTEM by sending a single IPC command message to the
daemon's unauthenticated listener on 127.0.0.1:24801. The command persists
and runs again after a service restart or reboot. CVSS:3.1 7.8
(AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H).
[-] Affected:
Input Leap on Windows from v2.4.0 through 3.0.3 (the final release), where
input-leapd is registered as a service. The input-leap/input-leap
repository was archived read-only on 26 July 2026; no fixed version exists
or is expected.
[-] Technical Description:
IpcServer::listen() binds a TCPListenSocket to 127.0.0.1:24801 (IPC_HOST
and IPC_PORT in src/lib/ipc/Ipc.h). IpcServer::handle_client_connecting()
accepts the socket and wraps it in an IpcClientProxy with no check of the
peer's identity, session or integrity level; the only thing that tells
clients apart is the type each one declares for itself in the kIpcMsgHello
handshake.
IpcClientProxy::parseCommand() reads a length-prefixed command string and
a trailing one-byte elevate flag from the stream, and
DaemonApp::handle_ipc_message() passes both to the watchdog unchanged:
m_watchdog->setCommand(command, cm.elevate());
There is no allowlist, no check that the command is an Input Leap binary,
and no authorisation check on the elevate flag. With the flag set,
MSWindowsWatchdog::getUserToken() locates winlogon.exe, duplicates its
primary token (OpenProcessToken, DuplicateTokenEx) and the watchdog calls
CreateProcessAsUser() with the attacker's command line. winlogon.exe runs
as NT AUTHORITY\SYSTEM, so the new process does too.
handle_ipc_message() also stores the input with ARCH->setting("Command")
and ARCH->setting("Elevate"). DaemonApp::mainLoop() reads both back at
daemon start ("using last known command") and calls setCommand() again, so
the command is re-executed as SYSTEM after a restart or reboot without
further action by the attacker.
Preconditions: the input-leapd service is installed; beyond that, only
local code execution under any account. ArchDaemonWindows::installDaemon()
registers the service with SERVICE_AUTO_START as LocalSystem, the listener
is opened unconditionally, and no administrative rights, file write or
desktop session are needed.
The sibling project Deskflow fixed the equivalent defect in 1.26.0.161
(CVE-2026-41477); that fix does not apply to Input Leap, which uses a TCP
socket rather than a named pipe and so has no ACL on the endpoint. The
same class of defect in the ancestor Barrier 2.4.0 is NotCVE-2026-0010.
Mitigation until a fork ships a fix: stop and disable the input-leapd
service on hosts where Input Leap is not in use.
Weaknesses:
CWE-306: Missing Authentication for Critical Function
CWE-862: Missing Authorization
CAPEC-69: Target Programs with Elevated Privileges
[-] Credit:
Reported by Christopher Duram
(https://www.linkedin.com/in/christopherduram/).
[-] Full Details and Updates:
https://notcve.org/notcve/NotCVE-2026-0015
[-] Main References:
https://github.com/input-leap/input-leap
https://github.com/input-leap/input-leap/blob/v3.0.3/src/lib/ipc/IpcClientProxy.cpp
https://github.com/deskflow/deskflow/security/advisories/GHSA-6rx5-g478-775c
[-] About NotCVE:
NotCVE (https://notcve.org) assigns public, timestamped NotCVE IDs to
vulnerabilities not acknowledged by vendors. Vendor will not assign a CVE?
Request a NotCVE: https://notcve.org/form/ · Contributors:
https://notcve.org/hall/
_______________________________________________
Sent through the Full Disclosure mailing list
https://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Assigner
References
12 references
Impacted products
1 product
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| unknown | Input Leap |
Affected:
unknown
|
guessed |
Relationships
reference
GCVE-1988-2026-0390 (this record)
- related CVE-2026-41477
{
"containers": {
"cna": {
"affected": [
{
"product": "Input Leap",
"vendor": "unknown",
"versions": [
{
"status": "affected",
"version": "unknown"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "advisories"
}
],
"descriptions": [
{
"lang": "en",
"value": "----------------------------------------------------------------------------\nNotCVE Advisory \u2014 NotCVE-2026-0015\n----------------------------------------------------------------------------\n\n[-] Summary:\nMissing authentication for a critical function in the input-leapd daemon of\nInput Leap, the open-source keyboard and mouse sharing tool, allows a\nlocal, low-privileged user on Windows to execute arbitrary commands as\nNT AUTHORITY\\SYSTEM by sending a single IPC command message to the\ndaemon\u0027s unauthenticated listener on 127.0.0.1:24801. The command persists\nand runs again after a service restart or reboot. CVSS:3.1 7.8\n(AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H).\n\n[-] Affected:\nInput Leap on Windows from v2.4.0 through 3.0.3 (the final release), where\ninput-leapd is registered as a service. The input-leap/input-leap\nrepository was archived read-only on 26 July 2026; no fixed version exists\nor is expected.\n\n[-] Technical Description:\nIpcServer::listen() binds a TCPListenSocket to 127.0.0.1:24801 (IPC_HOST\nand IPC_PORT in src/lib/ipc/Ipc.h). IpcServer::handle_client_connecting()\naccepts the socket and wraps it in an IpcClientProxy with no check of the\npeer\u0027s identity, session or integrity level; the only thing that tells\nclients apart is the type each one declares for itself in the kIpcMsgHello\nhandshake.\n\nIpcClientProxy::parseCommand() reads a length-prefixed command string and\na trailing one-byte elevate flag from the stream, and\nDaemonApp::handle_ipc_message() passes both to the watchdog unchanged:\n\n m_watchdog-\u003esetCommand(command, cm.elevate());\n\nThere is no allowlist, no check that the command is an Input Leap binary,\nand no authorisation check on the elevate flag. With the flag set,\nMSWindowsWatchdog::getUserToken() locates winlogon.exe, duplicates its\nprimary token (OpenProcessToken, DuplicateTokenEx) and the watchdog calls\nCreateProcessAsUser() with the attacker\u0027s command line. winlogon.exe runs\nas NT AUTHORITY\\SYSTEM, so the new process does too.\n\nhandle_ipc_message() also stores the input with ARCH-\u003esetting(\"Command\")\nand ARCH-\u003esetting(\"Elevate\"). DaemonApp::mainLoop() reads both back at\ndaemon start (\"using last known command\") and calls setCommand() again, so\nthe command is re-executed as SYSTEM after a restart or reboot without\nfurther action by the attacker.\n\nPreconditions: the input-leapd service is installed; beyond that, only\nlocal code execution under any account. ArchDaemonWindows::installDaemon()\nregisters the service with SERVICE_AUTO_START as LocalSystem, the listener\nis opened unconditionally, and no administrative rights, file write or\ndesktop session are needed.\n\nThe sibling project Deskflow fixed the equivalent defect in 1.26.0.161\n(CVE-2026-41477); that fix does not apply to Input Leap, which uses a TCP\nsocket rather than a named pipe and so has no ACL on the endpoint. The\nsame class of defect in the ancestor Barrier 2.4.0 is NotCVE-2026-0010.\nMitigation until a fork ships a fix: stop and disable the input-leapd\nservice on hosts where Input Leap is not in use.\n\nWeaknesses:\nCWE-306: Missing Authentication for Critical Function\nCWE-862: Missing Authorization\nCAPEC-69: Target Programs with Elevated Privileges\n\n[-] Credit:\nReported by Christopher Duram\n(https://www.linkedin.com/in/christopherduram/).\n\n[-] Full Details and Updates:\nhttps://notcve.org/notcve/NotCVE-2026-0015\n\n[-] Main References:\nhttps://github.com/input-leap/input-leap\nhttps://github.com/input-leap/input-leap/blob/v3.0.3/src/lib/ipc/IpcClientProxy.cpp\nhttps://github.com/deskflow/deskflow/security/advisories/GHSA-6rx5-g478-775c\n\n[-] About NotCVE:\nNotCVE (https://notcve.org) assigns public, timestamped NotCVE IDs to\nvulnerabilities not acknowledged by vendors. Vendor will not assign a CVE?\nRequest a NotCVE: https://notcve.org/form/ \u00b7 Contributors:\nhttps://notcve.org/hall/\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-306",
"description": "CWE-306",
"lang": "en",
"type": "CWE"
},
{
"cweId": "CWE-862",
"description": "CWE-862",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-10-02T04:57:26Z",
"orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
"shortName": "VULNARCHIVE"
},
"references": [
{
"tags": [
"technical-description"
],
"url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Sep/68"
},
{
"tags": [
"technical-description"
],
"url": "https://seclists.org/fulldisclosure/2026/Sep/68"
},
{
"url": "https://github.com/deskflow/deskflow/security/advisories/GHSA-6rx5-g478-775c"
},
{
"url": "https://github.com/input-leap/input-leap"
},
{
"url": "https://github.com/input-leap/input-leap/blob/v3.0.3/src/lib/ipc/IpcClientProxy.cpp"
},
{
"url": "https://nmap.org/mailman/listinfo/fulldisclosure"
},
{
"url": "https://notcve.org"
},
{
"url": "https://notcve.org/form/"
},
{
"url": "https://notcve.org/hall/"
},
{
"url": "https://notcve.org/notcve/NotCVE-2026-0015"
},
{
"url": "https://seclists.org/fulldisclosure/"
},
{
"url": "https://www.linkedin.com/in/christopherduram/"
}
],
"source": {
"defect": [
"https://seclists.org/fulldisclosure/2026/Sep/68"
],
"discovery": "EXTERNAL"
},
"title": "[NotCVE-2026-0015] Input Leap through 3.0.3 input-leapd Unauthenticated IPC Command Execution Allows Local Privilege Escalation to SYSTEM",
"x_gcve": [
{
"recordType": "reference",
"relationships": [
{
"destId": "CVE-2026-41477",
"type": "related"
}
],
"vulnId": "GCVE-1988-2026-0390",
"x_vulnarchive": {
"archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Sep/68",
"automated": true,
"contentSha256": "09ff9afd1696fc211e18cba5265ddcbc0aa9bba040c99ee7f3d9da113075eef0",
"evidenceScore": 8,
"messageId": "",
"originalUrl": "https://seclists.org/fulldisclosure/2026/Sep/68",
"policy": "vulnarchive-1",
"sourceFormat": "text/html",
"sourcePublishedAt": "2026-09-25T16:51:50Z"
}
},
{
"recordType": "advisory",
"vulnId": "gcve-1988-2026-0390"
}
]
}
},
"cveMetadata": {
"assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
"assignerShortName": "VULNARCHIVE",
"datePublished": "2026-10-02T04:57:26Z",
"dateUpdated": "2026-10-02T04:57:26Z",
"state": "PUBLISHED",
"vulnId": "GCVE-1988-2026-0390"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Loading…
Loading…
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
Loading timeline…
Loading…
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Loading…
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.