https://bugs.kde.org/show_bug.cgi?id=520789
Bug ID: 520789
Summary: Plasma Browser Integration breaks cross-origin
isolation, disabling SharedArrayBuffer and breaking
Microsoft Teams audio/video
Classification: Plasma
Product: plasma-browser-integration
Version First unspecified
Reported In:
Platform: Ubuntu
OS: Linux
Status: REPORTED
Severity: major
Priority: NOR
Component: Chrome
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
The Plasma Browser Integration Chrome extension (v2.2) prevents cross-origin
isolation from being established on pages that serve Cross-Origin-Opener-Policy
and Cross-Origin-Embedder-Policy headers. This causes
window.crossOriginIsolated to be false and SharedArrayBuffer to be unavailable.
Microsoft Teams (teams.live.com) depends on SharedArrayBuffer for its
WebAssembly-based media processing pipeline, so with the extension enabled,
both camera and microphone are non-functional in Teams meetings on Chrome.
Firefox is unaffected because it does not require cross-origin isolation
headers to enable SharedArrayBuffer.
Steps to reproduce:
1. Install Plasma Browser Integration extension (v2.2) in Google Chrome
2. Navigate to https://teams.live.com and sign in
3. Start a "Meet now" meeting
4. Open the browser developer console and run:
console.log('crossOriginIsolated:', window.crossOriginIsolated);
console.log('SharedArrayBuffer:', typeof SharedArrayBuffer);
5. Observe that crossOriginIsolated is false and SharedArrayBuffer is undefined
6. Attempt to use camera or microphone in the meeting
Expected result:
- window.crossOriginIsolated should be true (the server sends COOP/COEP
headers)
- SharedArrayBuffer should be available (typeof SharedArrayBuffer ===
'function')
- Camera and microphone should function normally in Teams meetings
Actual result:
- window.crossOriginIsolated is false
- SharedArrayBuffer is undefined
- Teams displays "Your video isn't working - We couldn't access your camera"
- Microphone appears unmuted in the UI but the audio MediaStreamTrack reports
muted=true (no data flows)
- Teams' internal getUserMedia() calls succeed and return live tracks, but the
WASM media processing pipeline fails silently because SharedArrayBuffer is
unavailable
Verification:
- Disabling only the Plasma Integration extension and restarting Chrome
resolves the issue completely: crossOriginIsolated becomes true,
SharedArrayBuffer is available, and Teams camera/mic work normally
- Testing in Chrome incognito mode (extensions disabled) also works correctly
- All other installed extensions were tested individually; only Plasma
Integration causes this behavior
- navigator.mediaDevices.getUserMedia({video: true, audio: true}) succeeds
regardless of whether the extension is enabled, confirming Chrome itself can
access the hardware. The failure is in Teams' WASM pipeline which requires
SharedArrayBuffer
Root cause analysis:
The extension declares host_permissions: ["*://*/*"] and the "scripting"
permission, allowing it to inject content scripts into every page. Chrome's
cross-origin isolation requires that certain security invariants are maintained
for the entire browsing context. Content script injection by extensions with
broad host permissions can prevent Chrome from establishing cross-origin
isolation, even when the server correctly sends:
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp (or credentialless)
This is not specific to Teams — any site relying on cross-origin isolation and
SharedArrayBuffer will be affected.
Environment:
- OS: Ubuntu 24.04.4 LTS (kernel 6.17.0-29-generic)
- Chrome: 148.0.7778.215
- Plasma Browser Integration extension: 2.2
- plasma-browser-integration system package: 5.27.11-0ubuntu2
- KDE Plasma desktop: 5.27.x
- Audio: PipeWire 1.0.5
Related bugs:
- Bug 507473: Plasma browser integration breaks Teams screen sharing (same
extension, same app, different symptom)
--
You are receiving this mail because:
You are watching all bug changes.