GCVE-1988-2026-0390

Vulnerability from gna-1988 – Published: 2026-10-02 04:57 – Updated: 2026-10-02 04:57
VLAI
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
VULNARCHIVE GNA GNA-1988
GNA scorecard E 38/100 over 445 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
unknown Input Leap Affected: unknown
guessed Create a notification for this product.
Credits
Relationships
reference GCVE-1988-2026-0390 (this record)

{
  "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"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

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…

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…