Low watch CVSS 4.4 chrome Logic Error 📄 Reporter bug report 🔧 Commit mapped

Overview

Low
Severity
4.4
CVSS
No
Exploited ITW
Fixed
Fix Status
ImpactInappropriate implementation in Downloads
DescriptionInappropriate implementation in Downloads
ComponentDownloads
Sub-componentUI>Browser>Downloads
Bug ClassLogic Error
Action tierwatch — logic/policy bug — security-relevant, no memory-unsafety
Computed by PatchGap's deterministic exploitability ruler from the fixing commit. patch-now = RCE-class & attacker-reachable in a default config, or exploited in the wild; watch = real security signal below that bar; noise = no security relevance.
Tracker405727341
Fix commit8be46d66315f (chromium/src) +2/-2
CWECWE-290
CVSS vectorCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:L
CISA KEVNot listed
CreditedHafiizh
Reported2025-03-24 · bounty $3000 (per vendor advisory)
Fix landed2025-10-14 (public git)
Disclosed2025-12-02
Patch gap49 days — fix public in source before the advisory

Background

Download bubble
the toolbar UI that lists recent downloads. Its row views (download_bubble_row_view.cc) let the user open a downloaded file by clicking or pressing Enter.
`InputEventActivationProtector`
a views helper (input_protector_) whose IsPossiblyUnintendedInteraction returns true for input that arrives too soon after a UI element appears (500 ms here, per the commit message), so the input is ignored.
`allow_key_events`
a parameter of IsPossiblyUnintendedInteraction. When it is true, key events skip the timing protection and only mouse or gesture events are filtered.
Enterjacking
a clickjacking variant in which a page gets the user to press Enter (or other keys) repeatedly, so a keypress lands on a browser dialog or bubble that just appeared and confirms an action the user did not intend.

Root Cause Analysis

The download bubble row view guarded its activation handlers with input_protector_->IsPossiblyUnintendedInteraction(event, /*allow_key_events=*/true).

As a result, mouse clicks within the protection window were ignored, but keyboard activation (for example Enter) was always accepted. Because activating a row can open the downloaded file or call bubble_controller_->ProcessDownloadButtonPress, a keystroke arriving just after the bubble appeared could trigger that action. This breaks the invariant that every input must pass the “too soon after showing” check.

The patch changes both call sites to /*allow_key_events=*/false, so key events now get the same 500 ms delay as clicks, which tightens the check. The commit message explicitly calls this a partial mitigation, because 500 ms may not catch every unintended keypress.

Key insight
The activation protector was explicitly configured to let key events through, so keyboard input bypassed the delay that defends against mistaken activation. The fix passes allow_key_events=false, so keyboard activations in the protection window are dropped like clicks.

Attack Path

  1. Prime the user to press keys An attacker page persuades the user to press or hold Enter (or similar keys), for example through a game or a fake prompt.
  2. Trigger a download While the user is pressing keys, the page starts a download, which causes the download bubble to show.
  3. Keypress reaches the bubble row Before the patch, IsPossiblyUnintendedInteraction(event, true) did not filter key events, so a keystroke arriving immediately after the bubble appeared reached the row’s activation handler.
  4. Unintended open of the download The handler continues to open or act on the downloaded item, or calls ProcessDownloadButtonPress, without the user meaning to. Whether that then runs attacker content depends on file type and OS handling (inferred).

Impact Assessment

An attacker web page could, through user-interaction tricks, get the user to unknowingly open a just-downloaded file or trigger a download-bubble button action in the browser UI. Preconditions are ordinary web content in a stock build plus significant user interaction: the user must be pressing keys at the right moment, and the bubble row must receive the key event (focus behaviour is not shown in the diff). The vendor severity is Low. Any code execution resulting from opening the file is (inferred) and depends on the file type and OS protections.

Files Changed

  • chrome/browser/ui/views/download/bubble/download_bubble_row_view.cc

Audit Directions

  • `allow_key_events=true` on security-sensitive confirmations
    Search for IsPossiblyUnintendedInteraction(..., /*allow_key_events=*/true) and similar opt-outs on permission prompts, dangerous-download warnings, extension install dialogs, and other bubbles that can be raised from web content.
  • Focus-stealing surfaces raised by web actions
    Find UI that a page can make appear (downloads, permission chips, file pickers, payment sheets) and that takes default focus with an Enter-activatable default action.
  • Fixed-delay protections
    As the commit notes, 500 ms is not a complete defence. Look for designs that require a fresh keydown after the UI appears, or a deliberate focus change, rather than relying only on elapsed time.
From 8be46d66315fc47df5634d7cface5b62d7673b26 Mon Sep 17 00:00:00 2001
From: Lily Chen <[email protected]>
Date: Tue, 14 Oct 2025 13:12:42 -0700
Subject: [PATCH] Protect download bubble from unintended key events

This change considers key events when protecting the download bubble row
view from unintended user input. Clicking (or pressing Enter) on the
download bubble row view may result in opening a downloaded file. The
existing InputEventActivationProtector prevents clicks too soon after
showing the download bubble (500 ms). After this change, key events are
subject to the delay as well.

This is only a partial mitigation for a number of variants of
"enterjacking" on the download bubble, because the 500 ms delay may not
be sufficient to catch all unintended keypresses.

Bug: 392375329, 405727341, 421348748, 421877606
Change-Id: Ia6252f397966dd1d5cb539bf5c58f348effebadc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7041986
Reviewed-by: Daniel Rubery <[email protected]>
Auto-Submit: Lily Chen <[email protected]>
Commit-Queue: Lily Chen <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1529740}
---

diff --git a/chrome/browser/ui/views/download/bubble/download_bubble_row_view.cc b/chrome/browser/ui/views/download/bubble/download_bubble_row_view.cc
index c4548ce..1e53672 100644
--- a/chrome/browser/ui/views/download/bubble/download_bubble_row_view.cc
+++ b/chrome/browser/ui/views/download/bubble/download_bubble_row_view.cc
@@ -638,7 +638,7 @@
     return;
   }
   if (input_protector_->IsPossiblyUnintendedInteraction(
-          event, /*allow_key_events=*/true)) {
+          event, /*allow_key_events=*/false)) {
     return;
   }
   if (info_->has_subpage()) {
@@ -657,7 +657,7 @@
     const ui::Event& event) {
   if (!bubble_controller_ || !info_->model() ||
       input_protector_->IsPossiblyUnintendedInteraction(
-          event, /*allow_key_events=*/true)) {
+          event, /*allow_key_events=*/false)) {
     return;
   }
   bubble_controller_->ProcessDownloadButtonPress(info_->model()->GetWeakPtr(),
Loading diff…

Original Bug Report

reported by [email protected]

clickjacking (enterjacking) download notification when a window.alert() is closed

Security Bug

VULNERABILITY DETAILS when opening a window alert() and at the same time the popup window is downloading a file and window.alert() is closed the focus changes to the file that has been downloaded (download notification) this causes the file to be opened

VERSION Chrome Version: Version 136.0.7084.0 (Official Build) canary (64-bit) Operating System: Windows OS

REPRODUCTION CASE

  1. open enterjack3.html
  2. do enter 3-4 times fastly

CREDIT INFORMATION Externally reported security bugs may appear in Chrome release notes. If this bug is included, how would you like to be credited? Reporter credit: [goes here]

View on issue tracker