browser leaks old location data to web pages
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Oxide |
Invalid
|
Undecided
|
Alexandre Abreu | ||
webapps-sprint |
In Progress
|
High
|
Alberto Mardegan | ||
location-service (Ubuntu) |
In Progress
|
High
|
Alberto Mardegan | ||
webbrowser-app (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
visit a web page that requests your current location, for example http://
The problem here is that I authorised the web page to know where I am now. I am OK with giving my current position to the web page requesting it. I *didn't* authorise it to know where I was yesterday or this morning, and I might have reasons to not want it to know where my house is, even though I am fine with it knowing where I am right now.
The web browser app should not reveal GPS locations that are older than the decision to allow location to be shared with the page.
Related branches
- PS Jenkins bot: Approve (continuous-integration)
- Ubuntu Phablet Team: Pending requested
-
Diff: 431 lines (+273/-8)9 files modifiedsrc/location_service/com/ubuntu/location/CMakeLists.txt (+1/-0)
src/location_service/com/ubuntu/location/service/daemon.cpp (+2/-1)
src/location_service/com/ubuntu/location/service/implementation.cpp (+2/-0)
src/location_service/com/ubuntu/location/service/implementation.h (+5/-0)
src/location_service/com/ubuntu/location/service/position_obfuscator.cpp (+68/-0)
src/location_service/com/ubuntu/location/service/position_obfuscator.h (+74/-0)
tests/CMakeLists.txt (+1/-0)
tests/acceptance_tests.cpp (+19/-7)
tests/obfuscator_test.cpp (+101/-0)
Changed in oxide: | |
assignee: | nobody → Alexandre Abreu (abreu-alexandre) |
status: | New → In Progress |
Changed in location-service (Ubuntu): | |
assignee: | nobody → Alberto Mardegan (mardy) |
Changed in webapps-sprint: | |
assignee: | nobody → Alberto Mardegan (mardy) |
milestone: | none → sprint-20 |
Changed in webapps-sprint: | |
milestone: | sprint-20 → sprint-21 |
Changed in webapps-sprint: | |
milestone: | sprint-21 → sprint-22 |
Changed in location-service (Ubuntu): | |
status: | New → In Progress |
Changed in webapps-sprint: | |
status: | New → In Progress |
Changed in location-service (Ubuntu): | |
importance: | Undecided → High |
Changed in oxide: | |
status: | In Progress → Invalid |
Changed in webapps-sprint: | |
importance: | Undecided → Critical |
importance: | Critical → High |
Changed in webapps-sprint: | |
milestone: | sprint-22 → sprint-23 |
Changed in webapps-sprint: | |
milestone: | sprint-23 → sprint-24 |
According to the specification¹, when the 'maximumAge' parameter of a call to getCurrentPosit ion() is not explicitly set, its value defaults to 0, which instructs the user agent to request a new position, and not return a cached one.
However pages that call getCurrentPosit ion() with a maximumAge parameter > 0 might get a cached location, without your explicit consent.
That said, I had a look at the code at http:// www.where- am-i.net/, and it appears getCurrentPosit ion() is called without a maximumAge parameter, so it should not disclose a cached location, instead it should always try to get a fresh position.
Assuming this is correctly implemented in chromium (which the browser’s web engine uses under the hood), the issue could be somewhere else in the stack (maybe the location provider returning a stale position with a fresh timestamp?). This is merely a conjecture, more investigation is needed. I’m tentatively adding an ubuntu- location- service task.
¹ https:/ /dev.w3. org/geo/ api/spec- source. html#position_ options_ interface