New issue
Advanced search Search tips

Issue 747095 link

Starred by 3 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 2
Type: Bug
Team-Security-UX



Sign in to add a comment

HTTPBad Not Secure warning not removed on subframe navigation

Project Member Reported by elawrence@chromium.org, Jul 20 2017

Issue description

Chrome Version: 60.3112, 61.3144

What steps will reproduce the problem?
1. Verify chrome://flags#enable-site-per-process is disabled.
2. Visit http://webdbg.com/test/forms/combo2.html
3. Click Create the Input, Toggle Visibility.

OBSERVE: Omnibox "Not Secure" Warning shows. Yay.

4. Click the "HTTPS" link in that frame to navigate the frame away.

OBSERVE: The "Not Secure" chip remains.
EXPECT: "Not secure" chip removed because the form input no longer exists.

5. Enable chrome://flags#enable-site-per-process and repeat steps #2 through 4.

OBSERVE: The "Not Secure" chip disappears as expected.
 
Status: Available (was: Untriaged)
Alternatively in Step #4, use the "HTTP Same Origin" link to navigate the frame to a different page on the same origin, which reproduces the problem regardless of the state of siteisolation.
Cc: est...@chromium.org
On navigation, PasswordInputType::OnDetachWithLayoutObject() fires and decrements the password count.

That, in turn, calls into SendSensitiveInputVisibility() and that schedules a task to run SendSensitiveInputVisibilityInternal(). Between the time of scheduling the task and the target method running, the Document::Shutdown() method runs and clears frame_, such that SendSensitiveInputVisibilityInternal exits at the check:

  if (!GetFrame())
    return;

...without calling mojo::MakeRequest.

---
In terms of fixing... I don't know if there's a way we could cache off the Service interface at the point of scheduling the task? Or perhaps VisiblePasswordObserver should use one of the Navigation events to call RenderFrameHasNoVisiblePasswordFields in the same way as it does when a renderframe crashes?
Hrm. Maybe we ought to consider this intentional?

SSLManager::DidCommitProvisionalLoad(const LoadCommittedDetails& details) {
  if (!details.is_main_frame) {
    // If it wasn't a main-frame navigation, then carry over content
    // status flags. (For example, the mixed content flag shouldn't
    // clear because of a frame navigation.)

We also tell the user that the page contains a non-secure form or image after it no longer does (https://www.bayden.com/test/mixedcontent/), and we do the same thing for top-level non-secure images that are dynamically-removed without a cross-page navigation.

Comment 4 by est...@chromium.org, Nov 10 2017

Labels: Hotlist-EnamelAndFriendsFixIt

Comment 5 by est...@chromium.org, Feb 18 2018

Labels: -Hotlist-EnamelAndFriendsFixIt

Sign in to add a comment