New issue
Advanced search Search tips

Issue 677363 link

Starred by 2 users

Issue metadata

Status: Untriaged
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: ----
Type: Feature



Sign in to add a comment

Security: Post Request Query Parameters Persist in Memory Long After Request is Made

Reported by dxa4...@g.rit.edu, Dec 29 2016

Issue description

VULNERABILITY DETAILS
Browser "Remembers" post requests long after request is made, including login requests to common services such as Gmail, Dropbox, etc... long after the request is made. This enables an attacker to steal cleartext passwords out of memory long after the user has logged in. In the case of Gmail, I was able to extract my password out of memory at least 1 hour following a login request.

Several tools abuse this, by reading process memory, they are listed below
https://github.com/putterpanda/mimikittenz
https://github.com/dxa4481/mimikittenz4Linux
https://github.com/n1nj4sec/memorpy/blob/master/examples/mimikittenz.py

Ideally POST request parameters should be purged from memory immediately following the request to prevent an attacker from being able to retroactively run tools that extract bulk passwords out of memory.

VERSION
Chrome Version: [55.0.2883.87] + [stable]
Operating System: [Ubuntu 16.04] (Others too)

REPRODUCTION CASE

-Log into Gmail
-Run any of the tools listed above (here's mine https://github.com/dxa4481/mimikittenz4Linux)
 

Comment 1 by kenrb@chromium.org, Dec 31 2016

Cc: kenrb@chromium.org
Components: Security
Labels: -Type-Bug-Security -Restrict-View-SecurityTeam Type-Feature
Status: Untriaged (was: Unconfirmed)
Thanks for the report. I am removing security flags because this isn't a vulnerability (we are talking about exposure on an already exploited system), but I am also leaving the bug open for consideration as a possible security enhancement.

I suspect the exposure is too wide for us to really mitigate, in most cases. Once a client has been compromised, POST data is a convenient target but login credentials are usually saved locally anyway, making them similarly available for extraction. Also, we have to keep the session cookie available which is almost as valuable. Further, being able to extract data from memory would typically mean you could monitor the process and network stack going forward, stealing passwords the next time they are entered or used.  It seems questionable whether clearing specific data from memory would be worth the effort.

Comment 2 by dxa4...@g.rit.edu, Dec 31 2016

Thank you for the reply.

If you don't mind me asking, what is the use case for remembering post parameters up to an hour (or longer) following the login? Is that data ever used internally? Why does it float around?

I respect your decision to label this issue as not a security issue, however I will add a few extra resources, the first being the Verizon breach report (https://regmedia.co.uk/2016/05/12/dbir_2016.pdf) showing 63% of confirmed data breaches involved weak, default or stolen passwords. The issue isn't just with the web services, it's with a more systemic problem of password reuse, which makes the passwords far more valuable than session tokens.

I'll also point to the Mimikatz tool (https://github.com/gentilkiwi/mimikatz) which dumps cleartext windows passwords, and also requires system level access, however is widely used by criminals and nation state actors alike over other means you mentioned such as network monitoring, keylogging, and token stealing. The ultimate response from Microsoft was to no longer persist login credentials in memory for operating systems >=8.1 

All of this is likely information you already know, however I'm including it for any other onlookers now that the issue is open to the public.

Comment 3 by dxa4...@g.rit.edu, Jan 1 2017

I would also like to add I just tested this on an incognito window, and data remains in memory following the closing of the incognito window.

Comment 4 by kenrb@chromium.org, Jan 2 2017

It's not that there is necessarily a use case for retaining data in memory, it is more likely that the memory is being freed without also being re-allocated + overwritten for some time. The concern is simply that it would be a lot of effort to try to find every place where memory scrubbing before free() would make sense, with marginal benefit to users since the same data can be obtained in different ways in the event of a system compromise.

Comment 5 Deleted

Comment 6 Deleted

Comment 7 Deleted

Sign in to add a comment