New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 692001 link

Starred by 2 users

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug-Regression
Team-Security-UX


Participants' hotlists:
dmurph-shortlist-bugs


Sign in to add a comment

Blob created via createObjectURL throws net::ERR_ACCESS_DENIED when accessed via DOM

Reported by philipjm...@gmail.com, Feb 14 2017

Issue description

Steps to reproduce the problem:
1. Go to https://blueimp.github.io/jQuery-File-Upload/
2. Select Add files
3. Choose Camcorder
4. Record short video
5. Video display doesn't work

What is the expected behavior?
Video should be displayed

What went wrong?
GET blob:https://blueimp.github.io/0711024c-2423-4272-ace1-ae93315d0e35 net::ERR_ACCESS_DENIED

Did this work before? Yes Nexus 5x and all other devices that I've tried.

Does this work in other browsers? Yes

Chrome version: 55.0.2883.91  Channel: stable
OS Version: 6.0.1; Nexus 5 Build/M4B30Z
Flash Version: --

I have two separate Nexus 5 devices that I factory reset with no more than the default apps installed and the issue is reproducible. If I uninstall the Google Camera (well, revert it back to its original version the issue is gone). This seems to indicate that this Google Camera version is the culprit. 

Latest Google Camera Version (not working): 3.2.045 (2821762-30)
Revered Google Camera Version (working): 2.7.008 (2130300-30)

 
BTW, this might be related to this defect:

https://bugs.chromium.org/p/chromium/issues/detail?id=253465

However, this is purely an issue with attaching via the HTML "input" tag and the camera app, and not using getUserMedia. 

Also, attaching pictures (live via camera, or pre-taken via Documents), or video pre-taken via Documents, all work correctly. 

The issue is only when you choose to attach a camcorder live recorded video.

Owner: tedc...@chromium.org
Status: Assigned (was: Unconfirmed)
Cc: tedc...@chromium.org
Owner: dalecur...@chromium.org
Cc: emir...@chromium.org
Owner: mcasas@chromium.org
Hmm, my N5 won't update Camera beyond the working version you've listed. Where did you get that latest version? 
Cc: mcasas@chromium.org
Owner: dalecur...@chromium.org
Whoops, didn't mean to change owners yet.
Just from official Play Store. Have left device in work, but can send on screenshots tomorrow if that helps.
Also, with these two Nexus 5 devices, note that I factory reset both of them, let them update, and then tested. My region is Ireland if that makes any difference.
Hmm, I don't have an entry in the play store for camera on my N5. It's still cycling through monthly update patches right now, maybe once it's fully updated it'll let me install an updated version.

Comment 9 by mcasas@chromium.org, Feb 14 2017

Components: -Blink>Network Blink>MediaRecording Blink>FileAPI
Blobs are specified in the File API, correcting Components.
Yes, it takes a while. I applied all security patches and app updates. BTW, just after the phone reset this worked fine. It was only after all the updates including this latest Camera App version was applied that it stopped working. 

Comment 11 Deleted

BTW, is there some delay in publishing Chrome version 56 to the Play Store? It mentions on https://en.wikipedia.org/wiki/Google_Chrome_version_history that 56.0.2924 was published 2017-02-01 (Android) (17 days ago), however, I still only see version 55.
I've noticed that this is also an issue for even doing an upload through a form without using the Blob createObjectURL API.

"https://www.kaltura.com/api_v3/index.php Failed to load resource: net::ERR_ACCESS_DENIED"

The issue again is only an issue if attaching from Camera App. If I attach a pre-recorded video all is good.
I also have two separate Nexus **5X** devices (the issue that I've reported is against Nexus **5** devices). 

One of the 5X devices has Android 6.0.1 installed and I'm also seeing the blob "GET blob:https://my-test-server/e02f9fd0-9d3a-4a0e-b6bb-73f74c7a50ec net::ERR_ACCESS_DENIED" error. Chrome version is 56.0.2924.87 and Camera version is 3.2.045 (2821762-40). 

The other Nexus 5X device has Android 7.1.1 installed with Chrome 55.0.2883.91 and Camera version 4.2.035.141213305. It is working fine. 

Just as I was writing this comment the second device received the Chrome 56 update. I can confirm that it still works correctly.
Cc: dalecur...@chromium.org
Components: Internals>Permissions
Owner: ----
Status: Untriaged (was: Assigned)
Issue seems to be that Chrome doesn't have storage permission. As soon as I went into permissions and flipped that the file uploaded just fine. I'm not sure why the difference in Camera version matters.

+Internals>Permissions folks to figure out why we're not requesting the Storage permission at in this case.
Sweet. I can confirm on the Nexus 5 this does indeed resolve the issue. I wonder if the camera changed where it was saving the temporary file between versions from a less secure to a more secure location that now requires Chrome to have permissions. Actually, checking my own Nexus 5x, the storage permission is on, so maybe the camera thing is just a red herring. Either way, great spot - thanks for tracking this down.
Owner: mek@chromium.org
Status: Assigned (was: Untriaged)
Agree with #9, it sounds more like a FileAPI problem. Let's keep the internals>permissions component label for now just in case.

+mek@, could you take a look to see if this is related to FileAPI?

Comment 18 by mek@chromium.org, Mar 2 2017

Cc: mek@chromium.org
Owner: dmu...@chromium.org
dmurph: you know more about our blob implementation than I do. I wonder if enabling blobs being (attempted to be) paged to disk could have started causing this issue?
Labels: dmurph-shortlist-bugs
Will investigate when I have time. Strange that this happens - maybe we need to disable disk caching until we have storage permission? How does the browser even work w/o this permission?
Components: -Internals>Permissions Internals>Permissions>Model
Cc: dmu...@chromium.org
Owner: ----
Status: Available (was: Assigned)
Who works on permissions? We need to decide if:
1. We disable blob paging to disk if we don't have a storage permission, or
2. Require a storage permission.

I'd prefer 2 so the chrome experience is consistent, especially for debugging.


Labels: -dmurph-shortlist-bugs
Cc: dk...@chromium.org
+dknox can you help? Do you know anyone who has dealt with permissions? Basic problem is that the Blob feature is broken for Chrome apps that didn't get the storage permission, as when we try to save stuff to disk it fails. Or maybe reading only fails?

We need the storage permission for the disk paging to work, see above 2 options.
Cc: mea...@chromium.org
+meacer any chance you could have a look?
Cc: dominickn@chromium.org raymes@chromium.org
Adding raymes and dominickn who are more knowledgeable about permissions than me.
So I asked some more knowledgeable folks - and it sounds like this permission should only matter for external storage like SD cards or user storage. We should have permissions for our own app's storage, and this is necessary for stuff like indexeddb.

AFAIK, we do not yet support putting chrome's storage into a different location like an SD card that requires permissions.
This is an Android level permission rather than a web API permission, so raymes and I won't be of much assistance. Android-level storage permissions expertise should come from either the Storage team or the Chrome on Android team.
So this shouldn't be a blob issue - as the blob storage directory is in the app directory.

It sounds like we're given a file object, where the file itself is hosted on the user's storage, like the 'sdcard' storage. This is why we can't access it.
I think Chrome requests the SD card permission on install, so in theory we should be able to access files on the SD card? But perhaps there's an additional layer of permissions we don't have.
Labels: Hotlist-EnamelAndFriendsFixIt
Labels: -Hotlist-EnamelAndFriendsFixIt
Components: Blink>Storage>FileAPI
Components: -Blink>FileAPI
Cc: -mcasas@chromium.org
Components: -Blink>MediaRecording
Removing MediaRecording label since it doesn't apply.

Sign in to add a comment