Repository navigation
Publish Guava and OkHttp overrides on provider runtime edges - #320
Merged
Merged
Conversation
featured-firebase-provider now requires Guava 33.8.0-android and featured-appmetrica-provider now requires OkHttp 4.12.0 so published consumer runtime metadata no longer keeps the vulnerable transitive pins.
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #224
Recount
Recounted on
developata4efcc3(2026-11-07), not from the May 2026 text of 33 and not from the default-branch Dependabot list. Default branch ismain, which is behinddevelopand does not include the AppMetrica provider. Open Dependabot alerts onmainwere 79 Maven alerts when this was recounted. Reachability verdict is disabled. That list is not the work list.Published consumer runtime edges that were still vulnerable:
featured-firebase-providerpublishesimplementationfirebase-analytics. CatalogfirebaseBom34.19.0pins analytics23.2.0.play-services-measurement-api23.2.0declarescom.google.guava:guava:31.1-androidas a normal compile dependency. Advisories: GHSA-xxph-c9ww-hj94 / CVE-2026-102554 (high), GHSA-7g45-4rm6-3mm3 (medium), GHSA-5mg8-w23w-74h3 (low).firebase-bomdoes not manage Guava. BOM35.1.0/ analytics24.0.0still has the same path, so the BOM was not bumped.featured-appmetrica-providerpublishesimplementationcom.yandex.varioqub:config:0.10.0, the latest Maven Central version. That runtime edge requirescom.squareup.okhttp3:okhttp:3.12.0, not strictly, and therefore Okio1.15.0. Advisories: GHSA-3cqm-mf7h-prrj / CVE-2021-0341 (high) and GHSA-w33c-445m-f8w7 / CVE-2023-3635 (medium). Varioqub0.8.0and0.9.0pin the same OkHttp.Fix
The providers now publish coordinates that were already on the consumer classpath:
featured-firebase-providerpublishesimplementationcom.google.guava:guava:33.8.0-android.featured-appmetrica-providerpublishesimplementationcom.squareup.okhttp3:okhttp:4.12.0, which depends on Okio3.6.0.33.7.2-androidis the first Android flavor that clears the three Guava advisories.33.8.0-androidis the selected pin: it exists on Maven Central andget_dependency_vulnerabilitiesfor it is empty.get_vulnerability_pathsfor OkHttp4.12.0is empty and not partial. A local-only constraint would not reach POM consumers; the published runtime metadata carries the explicit version. Highest-wins and nearest-wins both select that direct request over the transitive pins.Firebase Analytics stays. The provider has published that runtime edge since the module was added. Varioqub stays at
0.10.0. Replacing it would be a new product dependency. OkHttp4.9.2was not used because it still depends on vulnerable Okio2.8.0. OkHttp 5.x was not used because those jars do not containokhttp3/RequestBody. The Guava JRE flavor is not published.Already published
1.2.0still has the old edges. This change does not republish1.2.0, bumpVERSION_NAME, or cut a release.Not fixed, and why
The other open advisories are on the build, test, or plugin classpath, not on a published consumer runtime classpath:
kotlin-swift-export-embeddableare build or test tools.bcpg-jdk18on1.80is Dependabot-direct onmainbut absent from source and from thefeatured-gradle-plugin1.2.0POM.featured-gradle-plugincompileOnlyAGP pullskotlin-gradle-plugin2.2.10(GHSA-r937-wjx7-w2jp). Develop applies Kotlin2.4.20, past the fix at2.4.20-Beta1, andcompileOnlyis not in the published plugin POM.33.4.8-jrevia Robolectric is test-only.io.appmetrica.analytics:analyticsis not a published provider dependency.Verification
No committed unit test can show this bug.
:providers:firebase:testand:providers:appmetrica:testpass ondevelopwhile the published runtime variants still require the vulnerable coordinates. This repository has no publication-metadata test place, and a provider test that only compiles or mocks the SDKs would pass on the buggy behavior. The check is generatedmavenpublication metadata, without signing or publishing, then resolution of those runtime variants plus OSV.Pass check, run on this branch:
featured-firebase-providerhascom.google.guava:guava33.8.0-androidat runtime scope. VariantreleaseVariantReleaseRuntimePublicationrequires that version.featured-appmetrica-providerhascom.squareup.okhttp3:okhttp4.12.0at runtime scope. The same runtime variant requires that version.firebase-bom34.19.0selectsfirebase-analytics23.2.0and Guava33.8.0-android.play-services-measurement-api23.2.0still requests Guava31.1-android; the direct higher Android flavor wins.get_dependency_vulnerabilitiesfor33.8.0-androidis empty.0.10.0selects OkHttp4.12.0over the requested3.12.0, and Okio3.6.0.get_vulnerability_pathsfor OkHttp4.12.0is empty,partial: false,truncated: false.get_vulnerability_pathsis empty, not partial, and not truncated for firebase-config23.1.0, configcat-kotlin-client5.1.0, datastore-preferences1.3.0, kotlinx-serialization-json1.12.0, coroutines-core1.11.0, coroutines-android1.11.0, preference-ktx1.2.1, core-ktx1.19.1,androidx.compose.runtime:runtime1.12.1, andorg.jetbrains.skiko:skiko0.150.2.Also run, and not treated as the CVE pass:
spotlessCheck,:providers:firebase:test,:providers:appmetrica:test, andcheckAndroidApion both providers. All passed. Public signatures do not change, so the Android API dumps were not updated.Type of change
Checklist
./gradlew spotlessCheckpassesNotes for reviewers
No unit test was added. A test in the provider source sets cannot fail while the vulnerable published edges are still present. The failing check is the generated publication metadata plus resolution, recorded above.