RESOLVED FIXED242889
Canvas' security should not take into account Single Origin (for videos and images)
https://bugs.webkit.org/show_bug.cgi?id=242889
Summary Canvas' security should not take into account Single Origin (for videos and i...
Jean-Yves Avenard [:jya]
Reported 2022-07-19 01:14:29 PDT
Per canvas' spec: https://html.spec.whatwg.org/multipage/canvas.html#the-image-argument-is-not-origin-clean an object image is not origin-clean if: HTMLOrSVGImageElement image's current request's image data is CORS-cross-origin. HTMLVideoElement image's media data is CORS-cross-origin. HTMLCanvasElement ImageBitmap image's bitmap's origin-clean flag is false. And as per the security's policy: https://html.spec.whatwg.org/multipage/canvas.html#security-with-canvas-elements "To mitigate this, bitmaps used with canvas elements and ImageBitmap objects are defined to have a flag indicating whether they are origin-clean. All bitmaps start with their origin-clean set to true. The flag is set to false when cross-origin images are used." And various methods will reject their promise according to this origin-clean flag. Such as getImageData: https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-getimagedata 2. If the CanvasRenderingContext2D's origin-clean flag is set to false, then throw a "SecurityError" DOMException. `CanvasRenderingContext::wouldTaintOrigin` is the method used to determine if a particular object can be used with a canvas. Image: https://searchfox.org/wubkat/rev/3c7828ddd50109debe235dded88a94e66d33e879/Source/WebCore/html/canvas/CanvasRenderingContext.cpp#132-133 ``` if (!image->hasSingleSecurityOrigin()) return true; ``` Videos: https://searchfox.org/wubkat/rev/3c7828ddd50109debe235dded88a94e66d33e879/Source/WebCore/html/canvas/CanvasRenderingContext.cpp#154-155 ``` if (!video->hasSingleSecurityOrigin()) return true; ``` This requirement that an object used with a canvas has a single origin isn't found in the canvas spec ; only that the data is CORS-cross-origin The current implementation prevents drawing into a canvas a video that was served across multiple mirrors as is commonly found in the media world. The check that hasSingleSecurityOrigin must be true should be removed.
Attachments
Radar WebKit Bug Importer
Comment 1 2022-07-19 01:14:53 PDT
Jean-Yves Avenard [:jya]
Comment 2 2022-11-27 16:50:37 PST
EWS
Comment 3 2022-11-30 17:23:49 PST
Committed 257207@main (2c5193d0471c): <https://commits.webkit.org/257207@main> Reviewed commits have been landed. Closing PR #6844 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.