Back to Intelligence

CVE-2026-72693: Fedora 43 kbd openvt -u Local Privilege Escalation — Detection and Remediation

SA
Security Arsenal Team
September 4, 2026
8 min read

Fedora 43 shipped a kbd security update, tracked as FEDORA-2026-3a1183df4c, for CVE-2026-72693. The upstream fix is narrow but important: it makes openvt -u process matching more conservative after a flaw that could allow local unauthorized privilege gain.

This is not a remote initial-access bug from the information released. The defensive risk is post-compromise and local-session abuse: if an attacker already has an unprivileged shell on a Fedora 43 host, unsafe process matching in a console-management utility can become a privilege-boundary problem. Treat this as a priority local privilege-escalation patch for multi-user systems, jump boxes, build runners, VDI/terminal servers, and any host where untrusted users can execute code.

The supplied Fedora/LinuxSecurity advisory does not include a CVSS vector or NVD scoring detail, and it does not state confirmed in-the-wild exploitation. Do not wait for a public score to act: the impact phrase — local unauthorized privilege gain — is enough to prioritize remediation and focused hunting.

Technical analysis

Affected component and platform

kbd provides Linux virtual-console utilities. openvt is used to start a program on a new or specified virtual terminal. The security-relevant detail in this advisory is not a memory-corruption primitive; it is a logic weakness in how openvt -u matches processes. When a privileged or security-sensitive path relies on process identity, permissive matching can cause the wrong process to be trusted, selected, or acted upon.

From a defender's perspective, the exploit requirements appear to be:

  1. Local execution on an affected Fedora 43 system.
  2. Ability to invoke or influence openvt -u, directly or through a wrapper/script/service.
  3. Ability to shape the local process table so that matching logic selects an attacker-influenced process.
  4. A vulnerable kbd build before the Fedora 43 fix.

The most likely real-world exposure is not manual administrator use of openvt; it is automation. Review privileged scripts, console/session helpers, provisioning tasks, kiosk/terminal launchers, and old hardening or accessibility tooling that shells out to openvt. If a root-owned wrapper calls openvt -u while an unprivileged user can create lookalike processes, a logic-matching flaw can become a privilege-escalation primitive.

Exploitation status

At publication time, the supplied advisory does not report a public PoC, confirmed active exploitation, or CISA KEV inclusion. That should be read as "no confirmed exploitation in this advisory," not "safe." Verify current status against NVD, CISA KEV, Fedora Update System, and your threat-intel feeds during triage.

Detection & response

Patch first, then hunt. Because this is a local Linux logic flaw, the highest-value telemetry is process execution with full command line, parent/child relationships, user context, package state, and auditd/execve logs. If you collect Linux Syslog/CEF into Sentinel or run Defender for Endpoint on Linux, hunt across both.

YAML
---
title: Fedora kbd openvt -u Invocation With Suspicious Command
id: 9c4a7f21-6bd3-4c35-a6d8-cve202672693a
status: experimental
description: Detects invocation of openvt with the -u option together with commands commonly used for interactive shells, script execution, or post-compromise activity. Relevant to CVE-2026-72693 hunting on Fedora 43 kbd.
references:
  - https://linuxsecurity.com/advisories/fedora/fedora-43-kbd-2026-3a1183df4c
  - https://attack.mitre.org/techniques/T1548/
author: Security Arsenal
date: 2026/05/21
tags:
  - attack.privilege_escalation
  - attack.t1548
logsource:
  category: process_creation
  product: linux
detection:
  selection_image:
    Image|endswith: '/openvt'
  selection_u:
    CommandLine|contains:
      - ' -u '
      - ' -u'
      - '--user'
  selection_suspicious:
    CommandLine|contains:
      - 'bash'
      - ' sh'
      - 'zsh'
      - 'fish'
      - 'python'
      - 'perl'
      - 'ruby'
      - 'nc '
      - 'ncat'
      - 'socat'
      - 'curl'
      - 'wget'
      - 'base64'
  condition: selection_image and selection_u and selection_suspicious
falsepositives:
  - Legitimate console launchers and kiosk/session scripts that use openvt to start shells
  - Administrative automation on terminal servers
level: medium
---
title: Privileged Shell Or Elevation Tool Spawned By openvt
id: 3e8d1b54-aa61-4a19-9a31-cve202672693b
status: experimental
description: Detects shells or privilege-elevation tools spawned as children of openvt. Useful as a high-signal hunt after patching CVE-2026-72693 and when investigating local privilege-boundary abuse.
references:
  - https://linuxsecurity.com/advisories/fedora/fedora-43-kbd-2026-3a1183df4c
  - https://attack.mitre.org/techniques/T1059/
  - https://attack.mitre.org/techniques/T1548/
author: Security Arsenal
date: 2026/05/21
tags:
  - attack.execution
  - attack.privilege_escalation
  - attack.t1059
  - attack.t1548
logsource:
  category: process_creation
  product: linux
detection:
  selection_parent:
    ParentImage|endswith: '/openvt'
  selection_child:
    Image|endswith:
      - '/sh'
      - '/bash'
      - '/zsh'
      - '/fish'
      - '/su'
      - '/sudo'
      - '/doas'
  condition: selection_parent and selection_child
falsepositives:
  - Normal use of openvt to launch a shell on a virtual terminal by administrators or session software
level: medium
KQL — Microsoft Sentinel / Defender
let lookback = 14d;
union isfuzzy=true
(
  Syslog
  | where TimeGenerated > ago(lookback)
  | where SyslogMessage has "openvt" and SyslogMessage has "-u"
  | project TimeGenerated, Computer, HostName, ProcessName, SyslogMessage, SeverityLevel, Facility
  | extend Source = "Syslog"
),
(
  DeviceProcessEvents
  | where TimeGenerated > ago(lookback)
  | where FileName =~ "openvt" or ProcessCommandLine has "openvt"
  | where ProcessCommandLine has "-u" or ProcessCommandLine has "--user"
  | project TimeGenerated, DeviceName, AccountName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine, InitiatingProcessAccountName, SHA256
  | extend Source = "MDE"
)
| extend SuspiciousCommand = tostring(extract(@"(?i)(openvt.*-u.*(bash| sh|zsh|fish|python|perl|ruby|nc |ncat|socat|curl|wget|base64))", 1, coalesce(ProcessCommandLine, SyslogMessage)))
| where isnotempty(SuspiciousCommand) or Source == "MDE"
| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated), Sources=make_set(Source), Commands=make_set(coalesce(ProcessCommandLine, SyslogMessage), 20) by Computer=coalesce(Computer, DeviceName), Account=coalesce(AccountName, InitiatingProcessAccountName)
| order by LastSeen desc;
VQL — Velociraptor
-- Hunt endpoints for openvt -u execution and potentially suspicious child commands.
-- Scope to Linux clients that may run Fedora 43 kbd before FEDORA-2026-3a1183df4c.
SELECT Pid, Ppid, Name, Exe, CommandLine, Username, CreateTime
FROM pslist()
WHERE Exe =~ '/openvt$'
  AND CommandLine =~ '(^|\\s)-u(\\s|$)|--user'
  AND CommandLine =~ '(?i)(bash| sh|zsh|fish|python|perl|ruby|nc |ncat|socat|curl|wget|base64)'
ORDER BY CreateTime DESC
Bash / Shell
#!/usr/bin/env bash
# Fedora 43 kbd / CVE-2026-72693 verify-and-remediate helper.
# Run as root or via sudo. It reports state, refreshes metadata, upgrades kbd, and re-checks.
set -euo pipefail

CVE='CVE-2026-72693'
UPDATE='FEDORA-2026-3a1183df4c'

need_root() {
  if [ "${EUID:-$(id -u)}" -ne 0 ]; then
    echo "[-] Run as root or with sudo." >&2
    exit 1
  fi
}

need_root

echo "[*] OS release"
cat /etc/os-release | egrep '^(NAME|VERSION|VERSION_ID)=' || true
if ! grep -qi 'Fedora' /etc/os-release; then
  echo "[-] This script is intended for Fedora; validate manually on derived distributions." >&2
fi

echo "[*] Current kbd package"
rpm -q kbd || true

echo "[*] openvt binary attributes"
OPENVT="$(command -v openvt || true)"
if [ -n "$OPENVT" ]; then
  stat -c '%A %U:%G %n' "$OPENVT"
  getcap "$OPENVT" 2>/dev/null || true
  if find "$(dirname "$OPENVT")" -maxdepth 1 -name openvt -perm /6000 -print -quit | grep -q .; then
    echo "[!] openvt has setuid/setgid bits. Validate why before changing anything."
  fi
else
  echo "[*] openvt not found in PATH."
fi

echo "[*] Checking update metadata for ${CVE} / ${UPDATE}"
dnf -y updateinfo list --refresh 2>/dev/null | egrep -i "${CVE}|${UPDATE}|kbd" || true

echo "[*] Applying kbd update"
dnf -y upgrade --refresh kbd

echo "[*] Post-update package state"
rpm -q kbd
rpm -q --changelog kbd 2>/dev/null | egrep -i -A4 -B4 "${CVE}|${UPDATE}|openvt" || true

echo "[*] Find privileged wrappers referencing openvt -u"
grep -RIl --exclude-dir={proc,sys,dev,run} 'openvt' /etc /usr/local /opt /root 2>/dev/null | while read -r f; do
  if grep -Eq 'openvt([^\n]*)([[:space:]]-u([[:space:]]|$)|--user)' "$f" 2>/dev/null; then
    echo "[review] $f"
  fi
done

echo "[*] Auditd watch suggestion: add execve auditing for openvt if not already covered by process logging."
echo "    Example: auditctl -a always,exit -F arch=b64 -S execve -F exe=/usr/bin/openvt -k priv_esc_openvt"

Remediation and hardening

  1. Patch Fedora 43 kbd now. Apply FEDORA-2026-3a1183df4c with sudo dnf upgrade --refresh kbd, or run a full sudo dnf upgrade --refresh during your normal window. The supplied advisory identifies the fixed update by Fedora update ID rather than a single NVR in the summary; use dnf updateinfo list --refresh and rpm -q --changelog kbd to confirm the installed build references CVE-2026-72693.
  2. Inventory openvt usage. Search /etc, /usr/local, /opt, systemd units, cron, Ansible/Terraform user-data, kiosk profiles, and session scripts for openvt, especially openvt -u or --user. Remove the -u dependency where it is not explicitly required.
  3. Constrain execution paths. Ensure no sudoers rule, polkit action, setuid helper, capability, or root cron job lets unprivileged users influence a privileged openvt -u invocation. If openvt unexpectedly has setuid/setgid bits or file capabilities, investigate before changing them and compare against package ownership with rpm -V kbd.
  4. Reduce local attack surface. For high-value servers, remove unneeded local shells, enforce least privilege for interactive login, require MFA at the access layer, lock down SSH with AllowUsers/AllowGroups, and disable unused console/session helper packages.
  5. Keep SELinux enforcing. Do not work around a local privilege-escalation fix by setting SELinux to permissive. If custom console tooling is involved, write targeted policy rather than broad unconfined domains.
  6. Add execution telemetry. Ensure auditd or equivalent captures execve with command lines, and forward logs to your SIEM. Watch for openvt -u, unexpected child shells, service-account parents, and kbd package changes.
  7. Validate after patching. Re-run rpm -q kbd, confirm the changelog references the CVE/update, execute a controlled openvt smoke test where legitimately used, and review any alerts generated during the patch window.
  8. Track authoritative status. Re-check NVD, CISA KEV, Fedora Update System, and the LinuxSecurity advisory for scoring or exploitation updates. If exploitation is later confirmed, escalate from routine local-privilege patch to IR priority on exposed multi-user hosts.

Operational takeaway

The fix is small, but the lesson is broad: local privilege boundaries often fail at process identity and matching logic, not only at memory safety. Patch Fedora 43 kbd, eliminate unnecessary openvt -u use in privileged automation, and make sure your Linux process telemetry can answer one question quickly: who ran openvt, as whom, from which parent, and what did it spawn?

Related Resources

Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub

Is your security operations ready?

Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.