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…
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.
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.
Loading…