CVE-2026-4439: Out of bounds memory access in llvm::UFWriterVolcanic::GenerateKernels via WebGL (on Pixel 10)
Categories
(Core :: Graphics, defect, P1)
Tracking
()
People
(Reporter: jayjayjazz, Assigned: emilio)
References
Details
(Keywords: csectype-bounds, reporter-external, sec-high, Whiteboard: [pp3][adv-main152+][adv-esr115.37+][adv-esr140.12+])
Attachments
(9 external files)
Actual results:
Google released a new version of Chrome fixing some security flaws. [1]
CVE-2026-4439: Out of bounds memory access in WebGL [2]
Severity by Google is "Critical".
Change description:
<<<
Optionally validate GL_MAX_*_UNIFORM_BLOCKS at compile time.
These were validated at link time but some drivers have compiler crashes
when compiling shaders with too many uniform blocks.
<<<
[3]
Affected files:
include/GLSLANG/ShaderLang.h
include/platform/autogen/FeaturesGL_autogen.h
include/platform/gl_features.json
src/compiler/translator/Compiler.cpp
src/compiler/translator/ParseContext.cpp
src/compiler/translator/ParseContext.h
src/compiler/translator/ShaderLang.cpp
src/libANGLE/Compiler.cpp
src/libANGLE/renderer/gl/ShaderGL.cpp
src/libANGLE/renderer/gl/renderergl_utils.cpp
src/tests/gl_tests/GLSLValidationTest.cpp
util/autogen/angle_features_autogen.cpp
util/autogen/angle_features_autogen.h
Commit, which addresses this security flaw: [4]
[1] https://chromereleases.googleblog.com/2026/03/stable-channel-update-for-desktop_18.html
[2] https://issues.chromium.org/issues/475877320
[3] https://chromium-review.googlesource.com/c/angle/angle/+/7653195
[4] https://chromium.googlesource.com/angle/angle.git/+/05459080c9a323e89a52209efb799d6dc5b68a86
Expected results:
For me, it looks like Firefox is having the affected code in its tree. Could you check, if Firefox is also affected?
| Reporter | ||
Updated•7 months ago
|
Updated•7 months ago
|
Updated•7 months ago
|
Comment 1•7 months ago
|
||
We are most likely affected, I don't see any validation preventing this issue in our WebGL code.
Comment 2•7 months ago
|
||
Ashley, what would be the next steps here? Should we apply patches to our vendored angle or revendor it?
Comment 3•7 months ago
|
||
https://chromium-review.googlesource.com/c/angle/angle/+/7568089 commit comment says
Optionally validate GL_MAX_*_UNIFORM_BLOCKS at compile time.
These were validated at link time but some drivers have compiler crashes
when compiling shaders with too many uniform blocks.
https://chromium-review.googlesource.com/c/chromium/src/+/7568129 touches some gpu/ files not covered in the first patch, with the similar comment. This one mentions the OS being Android, which maybe also applies to the "some drivers" of the first patch?
Validate uniform block count limits at compile time on IMG.
Normally these limits are validated at link time but the IMG compiler
has issues when these limits are exceeded. Validate at compile time
instead.
Comment 4•7 months ago
|
||
The Chrome reporter tested on pixel 10 update 01.06, and it looks like the problem they're working around is in the Mali GPU driver.
Updated•7 months ago
|
Updated•7 months ago
|
Comment 5•7 months ago
|
||
We should assume Firefox would be affected on devices with those drivers since ANGLE itself wasn't doing anything wrong. We could easily get this into a Fenix 149.0.x point release, but would we need an ESR-140 fix also? We don't have Fenix ESR releases, but would the same Mali drivers be used by any version of Linux?
Updated•7 months ago
|
Updated•7 months ago
|
Comment 8•7 months ago
|
||
Not sure if this is useful but I attempted to backport the angle commit listed in the first comment https://chromium.googlesource.com/angle/angle.git/+/05459080c9a323e89a52209efb799d6dc5b68a86
Build seems to be working, tests pending.
Comment 9•7 months ago
|
||
The bug is marked as tracked for firefox149 (release), tracked for firefox150 (beta) and tracked for firefox151 (nightly). However, the bug still isn't assigned.
:bhood, could you please find an assignee for this tracked bug? If you disagree with the tracking decision, please talk with the release managers.
For more information, please visit BugBot documentation.
Comment 10•7 months ago
|
||
Marking as sec-high instead of sec-crit because it's limited to specific Android devices and the PoC is not public
Comment 11•7 months ago
|
||
(In reply to Timothy Nikkel (:tnikkel) from comment #8)
Not sure if this is useful but I attempted to backport the angle commit listed in the first comment https://chromium.googlesource.com/angle/angle.git/+/05459080c9a323e89a52209efb799d6dc5b68a86
Build seems to be working, tests pending.
I don't think the patch above is actually turning on validatePerStageMaxUniformBlocks
Comment 12•7 months ago
|
||
(In reply to Jeff Muizelaar [:jrmuizel] from comment #11)
I don't think the patch above is actually turning on validatePerStageMaxUniformBlocks
Thanks. I don't really know this code but here is an attempt at doing that
https://treeherder.mozilla.org/jobs?repo=try&revision=dded04d239bacade04e94dfe811dae98d262244f
It has an android build if someone has a pixel 10 to test with.
Comment 13•7 months ago
|
||
Jamie, do you have a Pixel 10 you can verify the fix on?
Comment 14•7 months ago
•
|
||
On a Pixel 10 with the latest nightly GVE installed from mozregression I get a segfault when opening the attached testcase.
With Timothy's build I do not get a segfault, and I see this error message in logcat:
03-31 11:04:59.107 20568 20582 W Isolated Web Content: [JavaScript Warning: "WebGL warning: linkProgram: Must have a compiled vertex shader attached:
03-31 11:04:59.107 20568 20582 W Isolated Web Content: SHADER_INFO_LOG:
03-31 11:04:59.107 20568 20582 W Isolated Web Content: ERROR: 0:4: '' : uniform block count greater than per stage maximum uniform blocks
03-31 11:04:59.107 20568 20582 W Isolated Web Content: "]
So it seems like it works to me
Comment 15•7 months ago
|
||
Also note the Pixel 10 has an Imagination PowerVR GPU, not Mali. That's what the "IMG" in the commit messages in comment 3 refers to. I just want to confirm that the reference to "Mali" in comment 4 was just a mistake (Pixels 6 through 9 did indeed have Mali GPUs so easily done!) rather than there also being a bug on Mali that we must additionally fix?
Comment 16•7 months ago
|
||
I double-checked and I can't find any mention of Mali (or any other driver) specifically; I must have assumed that based on Pixel-related driver bugs we've run into on older Pixel devices.
Comment 17•7 months ago
|
||
Okay thanks for checking, I'll work on figuring out how to turn my patches into something landable.
Updated•7 months ago
|
Updated•6 months ago
|
Updated•6 months ago
|
Updated•6 months ago
|
Comment 19•6 months ago
|
||
ni myself to remind myself to finish this off and get a landable angle cherry pick.
Comment 20•6 months ago
|
||
(In reply to Timothy Nikkel (:tnikkel) from comment #19)
ni myself to remind myself to finish this off and get a landable angle cherry pick.
Next week is the last full week of beta for Fx151.
:tnikkel, any updates since Comment 19? Is this likely to make Fx151?
Updated•6 months ago
|
| Assignee | ||
Comment 21•5 months ago
|
||
| Assignee | ||
Comment 22•5 months ago
|
||
| Assignee | ||
Comment 23•5 months ago
|
||
| Assignee | ||
Comment 24•5 months ago
|
||
Comment on attachment 9592081 [details]
(secure)
Security Approval Request
- How easily could an exploit be constructed based on the patch?: not very easily
- Do comments in the patch, the check-in comment, or tests included in the patch paint a bulls-eye on the security problem?: No
- Which branches (beta, release, and/or ESR) are affected by this flaw, and do the release status flags reflect this affected/unaffected state correctly?: all
- If not all supported branches, which bug introduced the flaw?: none
- Do you have backports for the affected branches?: Yes
- If not, how different, hard to create, and risky will they be?: should apply cleanly
- How likely is this patch to cause regressions; how much testing does it need?: has been upstream for a while
- Is the patch ready to land after security approval is given?: Yes
- Is Android affected?: Yes
Updated•5 months ago
|
Updated•5 months ago
|
Comment 25•5 months ago
|
||
Comment 26•5 months ago
•
|
||
https://hg-edge.mozilla.org/mozilla-central/rev/0fa628a6af70
https://hg-edge.mozilla.org/mozilla-central/rev/3dd3a25d6c4c
Please request Beta and ESR140 uplift on these when you get a chance, though I'm not entirely sure how that works for ANGLE cherry-picks.
| Assignee | ||
Comment 27•5 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D303752
Updated•5 months ago
|
| Assignee | ||
Comment 28•5 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D303753
Updated•5 months ago
|
| Assignee | ||
Comment 29•5 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D303752
Updated•5 months ago
|
| Assignee | ||
Comment 30•5 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D303753
Updated•5 months ago
|
| Assignee | ||
Comment 31•5 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D303752
Updated•5 months ago
|
| Assignee | ||
Comment 32•5 months ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D303753
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Comment 33•5 months ago
|
||
| uplift | ||
Comment 34•5 months ago
|
||
| uplift | ||
Updated•5 months ago
|
Comment 35•5 months ago
|
||
| uplift | ||
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Updated•5 months ago
|
Updated•4 months ago
|
Updated•4 months ago
|
Updated•1 month ago
|
Description
•