Skip to content

Update libwebrtc to 150.7871.04 (drop compromised eMudhra roots) - #1043

Merged
davidliu merged 1 commit into
mainfrom
erikh-claude/keen-curie-72811p
Oct 23, 2026
Merged

davidliu merged 1 commit into
mainfrom
erikh-claude/keen-curie-72811p

Conversation

@erikhortsch

@erikhortsch erikhortsch commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

What changed

  • gradle/libs.versions.toml: webrtc (io.github.webrtc-sdk:android-prefixed) 150.7871.01 → 150.7871.04. This is the only pin in the repo.
  • .changeset/webrtc-150-7871-04-emudhra-roots.md: patch changeset for client-sdk-android.

Why

On 2026-10-20 the keys of eight eMudhra intermediate CAs were disclosed as compromised. These intermediates are cross-signed by AAA Certificate Services. libwebrtc checks TURN/TLS server certificates against its own compiled-in roots (rtc_base/ssl_roots.h). In 150.7871.01 that list still contains AAA, so a TURN/TLS server that presents a certificate from one of these intermediates is accepted. All 7 AAA-cross-signed test chains from the disclosure pass openssl verify against the .01 roots, and none pass against the refreshed roots.

150.7871.04 includes webrtc-sdk/webrtc fd5c784 ("Update ssl_roots.h (#317)", a cherry-pick of upstream webrtc-review 510080), which removes AAA from that list. It was built from webrtc-sdk/webrtc-build#83 and is on Maven Central.

Other changes in .04 (Android-relevant, since .01)

API compatibility

CI builds against the published 150.7871.04. Diffuse shows one method change in the bundled WebRTC classes, and no other differences in the SDK AAR.

  • JavaAudioDeviceModule.prewarmRecording(AudioProcessingOptions) (030ad13): the return type changes from void to boolean. AudioRecordPrewarmer.kt:49 ignores the result, so source is unaffected. The method ships inside the same AAR the SDK depends on, so there is no binary mismatch for apps.
  • FrameCryptorFactory.createFrameCryptorKeyProvider (a545de4): the existing 8-argument overload is kept and calls a new 9-argument overload (..., int keySize) with keySize = 128. The SDK calls the 8-argument form (KeyProvider.kt:58), so E2EE keeps 128-bit keys.
  • CryptoOptions (5d83551): adds Builder.setEnableAes128Sha1_80CryptoCipher (default true) and a getter. The SDK only copies an existing CryptoOptions (PeerConnectionExt.kt:61), so this is purely additive for us.

Generated by Claude Code

150.7871.04 drops the AAA Certificate Services root from libwebrtc's
compiled-in TURN/TLS trust anchors (rtc_base/ssl_roots.h), so
certificates issued by the compromised eMudhra intermediates that are
cross-signed by it are rejected.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BsJ5Refi6x7GqXMqH4gJ4i
@changeset-bot

changeset-bot Bot commented Oct 22, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: fe3cf0b

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
client-sdk-android Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link
Copy Markdown
Contributor Author

build fails resolving io.github.webrtc-sdk:android-prefixed:150.7871.04, which isn't published to Maven yet. The configuration-cache warning above it in the log is unrelated. The PR's change is fine; it's waiting on the dependency.

The fix is the release itself. Once webrtc-sdk/webrtc-build#83 merges and 150.7871.04 is published, CI should pass without any change here. I'll re-run CI then. Until then this PR stays a draft.


Generated by Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

Dependency diff:

-\--- io.github.webrtc-sdk:android-prefixed:150.7871.01
+\--- io.github.webrtc-sdk:android-prefixed:150.7871.04 FAILED

@github-actions

Copy link
Copy Markdown
Contributor

Diffuse output:

OLD: diffuse-source-file
NEW: livekit-android-sdk-release.aar

 AAR      │ old      │ new      │ diff 
──────────┼──────────┼──────────┼──────
      jar │    3 MiB │    3 MiB │  0 B 
 manifest │  1.5 KiB │  1.5 KiB │  0 B 
 lint-jar │ 12.7 KiB │ 12.7 KiB │  0 B 
    other │  2.4 KiB │  2.4 KiB │  0 B 
──────────┼──────────┼──────────┼──────
    total │    3 MiB │    3 MiB │  0 B 

 JAR     │ old   │ new   │ diff      
─────────┼───────┼───────┼───────────
 classes │  1707 │  1707 │ 0 (+0 -0) 
 methods │ 21992 │ 21992 │ 0 (+1 -1) 
  fields │  5708 │  5708 │ 0 (+0 -0)
AAR
 size │ diff │ path    
──────┼──────┼─────────
  0 B │  0 B │ (total)
JAR
METHODS:

   old   │ new   │ diff      
  ───────┼───────┼───────────
   21992 │ 21992 │ 0 (+1 -1) 
  
  + livekit.org.webrtc.audio.JavaAudioDeviceModule prewarmRecording(AudioProcessingOptions) → boolean
  
  - livekit.org.webrtc.audio.JavaAudioDeviceModule prewarmRecording(AudioProcessingOptions)

@erikhortsch
erikhortsch marked this pull request as ready for review October 23, 2026 07:27

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@davidliu
davidliu merged commit 31c0797 into main Oct 23, 2026
8 of 9 checks passed
@davidliu
davidliu deleted the erikh-claude/keen-curie-72811p branch October 23, 2026 12:57
@davidliu davidliu mentioned this pull request Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants