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.

Reply via email to