Back to Intelligence

Chromium 154.0.8037.57 for Fedora 45: Patching CVE-2026-95277 Use-After-Free and Three Additional Critical Vulnerabilities — Detection and Remediation Guide

SA
Security Arsenal Team
September 27, 2026
12 min read

On the surface, a browser update advisory is routine. In practice, it is one of the highest-leverage patching events in any enterprise — because the browser is the single largest attack surface most users touch every day, and because modern exploit chains routinely begin with a compromised renderer process before escalating to sandbox escape and full host compromise.

Fedora has released Chromium 154.0.8037.57 for Fedora 45, addressing four distinct critical vulnerabilities:

  • CVE-2026-95274 — Improper output encoding in DevTools
  • CVE-2026-95275 — Incorrect reference resolution in MediaStream
  • CVE-2026-95276 — Improper input validation in Themes
  • CVE-2026-95277 — Use after free in Views

The standout here is CVE-2026-95277. Use-after-free conditions in the Chromium Views UI layer are the class of bug that exploit developers actively weaponize: they offer reliable memory corruption primitives reachable from renderer context, and historically this category of bug has been a staple of chained exploits targeting Chrome and Chromium-based browsers. Any Fedora 45 workstation running a Chromium build older than 154.0.8037.57 should be treated as exposed until patched.

Technical Analysis

Affected Products and Versions

ItemDetail
ProductChromium (open-source browser)
Fixed version154.0.8037.57
PlatformFedora 45 (all architectures shipping the chromium package)
AdvisoryFedora 45 Chromium Update

While this advisory targets Fedora 45 specifically, the underlying bugs exist in upstream Chromium — meaning other distributions and Chromium-based browsers tracking the same upstream branch are affected until they ship the equivalent build. Defenders managing mixed fleets (RHEL/EPEL, Ubuntu, Arch, openSUSE) should verify their distribution's Chromium channel independently.

Vulnerability Breakdown

CVE-2026-95277 — Use after free in Views

Views is Chromium's UI framework, responsible for rendering browser chrome elements: windows, dialogs, menus, buttons. A use-after-free occurs when an object is freed while a dangling pointer to it is later dereferenced. From an attacker's perspective, UAF in a UI component is attractive because:

  1. UI objects churn constantly during normal browsing (tab switching, dialog creation, theme changes) — providing frequent allocation/deallocation cycles useful for heap grooming.
  2. If reachable from a compromised renderer, it provides a path out of the sandbox; if reachable directly via crafted content interacting with UI state, it can corrupt memory in the browser process itself.

From a defender's perspective, the exploitation requirements are the standard browser-bug model: a user must visit attacker-controlled content (malicious site, compromised legitimate site, malvertising, or a watering-hole target). No local access or authentication is required beyond the victim browsing to hostile content.

CVE-2026-95274 — Improper output encoding in DevTools

Insufficient encoding of output in the DevTools component creates injection risk in developer-facing surfaces. In enterprise environments where developers routinely open DevTools against production sessions, improper output encoding can be leveraged for code execution in the DevTools context or for session/token theft when a developer inspects attacker-influenced content. Developer workstations are disproportionately valuable targets — they hold source code, cloud credentials, and CI/CD access.

CVE-2026-95275 — Incorrect reference resolution in MediaStream

MediaStream handles WebRTC audio/video capture. Incorrect reference resolution in this component risks type confusion or unauthorized reference access during media capture operations — a bug class that has previously enabled both memory corruption and privacy-impacting capture of media streams the user did not authorize.

CVE-2026-95276 — Improper input validation in Themes

The Themes component processes potentially attacker-supplied styling data. Improper input validation here opens paths for malformed theme data to trigger unexpected behavior, including memory-safety issues in parsing code or injection into the browser UI layer.

Exploitation Status

At the time of this writing, there are no publicly confirmed in-the-wild exploits or PoC code for these four CVEs, and none have been added to the CISA Known Exploited Vulnerabilities catalog. That said, treat the absence of public exploitation as a window, not a comfort: Google's own threat intelligence reporting over the past two years has repeatedly shown browser UAF bugs moving from patch to active exploitation in days, and exploit brokers monitor Chromium security releases precisely because the patch diff reveals the bug. Assume motivated actors are reverse-engineering this update now.

Detection & Response

Post-exploitation detection is your safety net for the window between disclosure and patch completion. The highest-fidelity behavioral signal for browser exploitation on Linux is the same one we've relied on in every browser-compromise IR engagement I've led: the browser process (or its renderer/sandbox children) spawning processes it never should spawn — shells, interpreters, download utilities, or writing executables to user-writable locations.

SIGMA Rules

YAML
---
title: Chromium Renderer Spawning Shell or Interpreter on Linux
id: 3f7a1c94-8b2e-4d51-9c63-5a1e7f2b8d90
status: experimental
description: Detects Chromium browser or renderer processes spawning shells, interpreters, or download utilities — a high-fidelity indicator of successful browser exploitation such as a use-after-free chain (e.g., CVE-2026-95277) escaping or abusing the renderer.
references:
  - https://linuxsecurity.com/advisories/fedora/fedora-45-chromium-2026-735231f9e0
  - https://attack.mitre.org/techniques/T1203/
  - https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/01/14
tags:
  - attack.execution
  - attack.exploitation_for_client_execution
  - attack.t1203
  - attack.t1059
logsource:
  category: process_creation
  product: linux
detection:
  selection_parent:
    ParentImage|endswith:
      - '/chrome'
      - '/chromium'
      - '/chromium-browser'
      - '/chrome_crashpad_handler'
  selection_child:
    Image|endswith:
      - '/bash'
      - '/sh'
      - '/zsh'
      - '/dash'
      - '/python'
      - '/python3'
      - '/perl'
      - '/curl'
      - '/wget'
      - '/nc'
      - '/ncat'
      - '/socat'
      - '/base64'
      - '/chmod'
  condition: selection_parent and selection_child
falsepositives:
  - Developer workflows launching terminals from Chromium-based IDEs (rare on pure Chromium browser)
  - Legitimate 'open in terminal' extensions
level: high
---
title: Executable Dropped by Chromium Process in User-Writable Path
id: 8c2e5b17-4f3a-4d90-a671-9e3c2f1a7b45
status: experimental
description: Detects Chromium writing executable files to user-writable directories such as /tmp, /dev/shm, or user home — consistent with post-exploitation payload staging after a browser memory-corruption exploit.
references:
  - https://linuxsecurity.com/advisories/fedora/fedora-45-chromium-2026-735231f9e0
  - https://attack.mitre.org/techniques/T1204.002/
author: Security Arsenal
date: 2026/01/14
tags:
  - attack.execution
  - attack.t1204.002
logsource:
  category: file_event
  product: linux
detection:
  selection_source:
    Image|endswith:
      - '/chrome'
      - '/chromium'
      - '/chromium-browser'
  selection_path:
    TargetFilename|startswith:
      - '/tmp/'
      - '/dev/shm/'
      - '/var/tmp/'
      - '/run/user/'
  filter_downloads:
    TargetFilename|contains:
      - '/Downloads/'
  condition: selection_source and selection_path and not filter_downloads
falsepositives:
  - Browser cache and temporary rendering artifacts (mitigate by alerting on execute-bit set via auditd execve correlation)
level: medium
---
title: Outbound Connection from Chromium to Rare Port Followed by Process Spawn
id: 61d4a8f2-7c9b-4e15-b382-6f0a3d5c9e21
status: experimental
description: Detects Chromium establishing outbound connections to uncommon high ports in close proximity to unexpected child process creation — a pattern consistent with exploit delivery followed by C2 callback.
references:
  - https://linuxsecurity.com/advisories/fedora/fedora-45-chromium-2026-735231f9e0
  - https://attack.mitre.org/techniques/T1071.001/
author: Security Arsenal
date: 2026/01/14
tags:
  - attack.command_and_control
  - attack.t1071.001
logsource:
  category: network_connection
  product: linux
detection:
  selection:
    Image|endswith:
      - '/chrome'
      - '/chromium'
      - '/chromium-browser'
    DestinationPort:
      - 4444
      - 5555
      - 6666
      - 8443
      - 9001
      - 1337
      - 31337
  filter_localhost:
    DestinationIp|startswith:
      - '127.'
      - '::1'
  condition: selection and not filter_localhost
falsepositives:
  - Local development servers and proxy configurations
  - Legitimate applications on non-standard ports
level: medium

KQL — Microsoft Sentinel / Defender

Fedora workstations ship telemetry to Sentinel via Syslog/CEF ingestion (auditd execve events are the key source here). This query hunts for Chromium spawning suspicious child processes — the same behavioral signal as the first Sigma rule, tuned for the Syslog table:

KQL — Microsoft Sentinel / Defender
// Hunt: Chromium process spawning shells/interpreters/download tools (post-browser-exploit behavior)
// Requires: auditd execve logs ingested via Syslog/CEF connector
let SuspiciousChildren = dynamic(["bash", "/bin/sh", "dash", "zsh", "python", "python3", "perl", "curl", "wget", "nc", "ncat", "socat"]);
Syslog
| where TimeGenerated > ago(7d)
| where Facility == "user" or SyslogMessage has "EXECVE" or SyslogMessage has "execve"
| where SyslogMessage has_any ("chromium", "chrome")
| extend RawMsg = SyslogMessage
| where SuspiciousChildren |> any_of(fun -> RawMsg has fun)
| parse RawMsg with * "ppid=" PPID:string " " *
| parse RawMsg with * "comm=\"" ChildComm:string "\"" *
| project TimeGenerated, Computer, ProcessName, ChildComm, RawMsg
| summarize EventCount = count(), DistinctChildren = dcount(ChildComm), SampleCommands = make_set(RawMsg, 5) by Computer, bin(TimeGenerated, 1h)
| order by TimeGenerated desc

For environments with the Azure Monitor agent collecting process events, correlate against outbound connections:

KQL — Microsoft Sentinel / Defender
// Correlate: Chromium network connections to rare ports within 10 minutes of child process creation
let BrowserChildren =
Syslog
| where TimeGenerated > ago(7d)
| where SyslogMessage has "chromium" and SyslogMessage has_any ("bash", "curl", "wget", "python")
| summarize FirstChild = min(TimeGenerated) by Computer;
CommonSecurityLog
| where TimeGenerated > ago(7d)
| where ApplicationProtocol in ("http", "https") or isnotempty(DestinationPort)
| where DestinationPort in (4444, 5555, 6666, 8443, 9001, 1337, 31337)
| join kind=inner BrowserChildren on $left.DeviceName == $right.Computer
| where TimeGenerated between (FirstChild .. FirstChild + 10m)
| project TimeGenerated, DeviceName, SourceIP, DestinationIP, DestinationPort, FirstChild
| order by TimeGenerated desc

Velociraptor VQL

For DFIR triage of suspected-compromised Fedora endpoints, hunt live process trees for Chromium children that should not exist, and simultaneously check installed package version for patch state:

VQL — Velociraptor
-- Hunt: Chromium post-exploitation indicators on Fedora 45 endpoints
-- Identifies suspicious Chromium child processes AND checks chromium package version
LET suspicious_procs = SELECT Pid, Ppid, Name, CommandLine, Exe, Username, CreateTime,
       getprocess(Ppid=Pid).Name AS ParentName
FROM pslist()
WHERE (ParentName =~ '(?i)chrom(e|ium)'
   OR Ppid IN (SELECT Pid FROM pslist() WHERE Name =~ '(?i)chrom(e|ium)'))
  AND (Name =~ '(?i)^(bash|sh|zsh|dash|python[0-9.]*|perl|curl|wget|nc|ncat|socat)$'
   OR CommandLine =~ '(?i)(curl|wget|bash -i|/dev/tcp|base64 -d|chmod \+x)')

LET chromium_version = SELECT * FROM execve(
   argv=['/bin/bash', '-c', 'rpm -q chromium 2>/dev/null || chromium --version 2>/dev/null'])

SELECT 'suspicious_child_process' AS FindingType, Pid, Ppid, ParentName, Name,
       CommandLine, Exe, Username, CreateTime, NULL AS Stdout
FROM suspicious_procs
UNION ALL
SELECT 'chromium_version_check' AS FindingType, NULL AS Pid, NULL AS Ppid,
       NULL AS ParentName, NULL AS Name, NULL AS CommandLine, NULL AS Exe,
       NULL AS Username, NULL AS CreateTime, Stdout
FROM chromium_version
VQL — Velociraptor
-- Forensic artifact: enumerate recently executed files in user-writable staging dirs
-- Run on hosts flagged by the process-tree hunt above
SELECT FullPath, Size, Mtime, Ctime,
       hash(path=FullPath).SHA256 AS SHA256
FROM glob(globs=['/tmp/*', '/dev/shm/*', '/var/tmp/*'])
WHERE NOT IsDir
  AND Mtime > now() - 86400 * 7
  AND (Mode =~ 'x' OR FullPath =~ '(?i)\\.(elf|so|sh|py)$')
ORDER BY Mtime DESC

Remediation

1. Patch Immediately

SQL
Update Chromium on all Fedora 45 systems to **154.0.8037.57** or later. The following Bash script updates the package, verifies the installed version, and flags any running Chromium processes still using the old binary (running instances keep the vulnerable code mapped until restarted — a frequently missed step):
Bash / Shell
#!/usr/bin/env bash
# Chromium 154.0.8037.57 patch and verification script - Fedora 45
# Addresses CVE-2026-95274, CVE-2026-95275, CVE-2026-95276, CVE-2026-95277

REQUIRED_VERSION="154.0.8037.57"

echo "[*] Current installed Chromium package:"
rpm -q chromium 2>/dev/null || echo "    chromium not installed"

echo "[*] Updating Chromium via dnf..."
sudo dnf upgrade --refresh -y chromium

echo "[*] Verifying installed version..."
INSTALLED=$(rpm -q --queryformat '%{VERSION}' chromium 2>/dev/null)
echo "    Installed: ${INSTALLED:-none}"

if [[ -z "$INSTALLED" ]]; then
    echo "[!] Chromium package not found. Nothing further to do."
    exit 0
fi

# Compare versions using sort -V
if [[ "$(printf '%s\n%s\n' "$REQUIRED_VERSION" "$INSTALLED" | sort -V | head -n1)" == "$REQUIRED_VERSION" ]]; then
    echo "[+] PASS: Installed version ($INSTALLED) meets or exceeds required ($REQUIRED_VERSION)"
else
    echo "[-] FAIL: Installed version ($INSTALLED) is below required ($REQUIRED_VERSION)"
    exit 1
fi

echo "[*] Checking for Chromium processes still running the OLD binary..."
STALE=$(ps -eo pid,comm,lstart | grep -E 'chrom(e|ium)' | grep -v grep || true)
if [[ -n "$STALE" ]]; then
    echo "[!] WARNING: Chromium processes are running. They must be fully restarted to load the patched binary:"
    echo "$STALE"
    echo "    Action: have users fully exit Chromium (all windows + background), then relaunch."
else
    echo "[+] No running Chromium processes detected."
fi

echo "[*] Confirming no deleted-binary mappings remain (old .so still in memory)..."
sudo lsof +L1 2>/dev/null | grep -iE 'chrom(e|ium)' || echo "[+] No stale deleted-binary mappings."

echo "[*] Done."

2. Enforce Fleet-Wide Compliance

  • Configuration management: Push the update via Ansible/Satellite/dnf-automatic. For managed fleets, set a compliance deadline of 72 hours for workstation browsers — browser CVEs warrant the fast ring, not the standard monthly cycle.
  • Inventory check: Query your asset inventory for any Fedora 45 system where rpm -q chromium returns a version below 154.0.8037.57 and ticket accordingly.
  • Other distributions: RHEL/EPEL, Ubuntu (snap/deb), and other Chromium consumers should confirm their channel has shipped the equivalent upstream build. The vulnerable code is upstream; the Fedora advisory is simply the packaging event.

3. Harden While You Patch

  • Enable dnf-automatic with security-only updates on Fedora workstations so future browser security releases apply without manual intervention: sudo dnf install dnf-automatic && sudo systemctl enable --now dnf-automatic-install.timer.
  • Where feasible, deploy Chromium under Flatpak for an additional namespace sandbox layer between the browser and the host — it does not fix these bugs, but it raises the cost of sandbox escape.
  • Confirm SELinux remains in Enforcing mode on all Fedora 45 systems (getenforce). SELinux confinement of browser-spawned processes has historically blunted post-exploitation actions in exactly the process-spawn scenarios the detection rules above target.

4. Monitor and Hunt During the Exposure Window

Deploy the Sigma rules to any Linux EDR/log pipeline covering Fedora endpoints, run the Sentinel KQL queries against the last 7 days of auditd data to retro-hunt for compromise prior to patching, and use the Velociraptor artifacts for triage on any host that cannot be patched within the 72-hour window. Prioritized users for retro-hunting: developers (DevTools exposure, CVE-2026-95274), executives (watering-hole targets), and anyone handling WebRTC-heavy workflows (MediaStream, CVE-2026-95275).

Bottom line: Four critical CVEs, one of them a use-after-free in a core UI component, in the most-targeted application class in enterprise security. The patch exists, it is available now through standard Fedora channels, and the only variable is how quickly your fleet applies it. Patch, restart the browser, and hunt the gap.

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.