From c572f8729e0f614cd618cf78b52da8a620c668d0 Mon Sep 17 00:00:00 2001 From: rory Date: Thu, 22 Oct 2026 15:26:58 -0700 Subject: [PATCH 1/2] ci: block compromised Java certificates Protect the selected JVM before dependency downloads and other Java network operations. Keep Gradle on the protected JDK so cached or automatically downloaded toolchains cannot bypass the blocklist. --- .github/workflows/buildAndroid.yml | 14 ++++++++++ .../publishReactNativeAndroidArtifacts.yml | 14 ++++++++++ .../publishReactNativeiOSArtifacts.yml | 25 +++++++++++++++++ .github/workflows/remote-build-android.yml | 28 +++++++++++++++++++ 4 files changed, 81 insertions(+) diff --git a/.github/workflows/buildAndroid.yml b/.github/workflows/buildAndroid.yml index 8bdba2f7e5f3..29b0ed83908e 100644 --- a/.github/workflows/buildAndroid.yml +++ b/.github/workflows/buildAndroid.yml @@ -122,6 +122,20 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e + - name: Block compromised Java certificates + uses: Expensify/GitHub-Actions/block-compromised-java-certificates@d8dfc3ddd4d8626206653c6168ca8d094547749a + + - name: Restrict Gradle to the protected JDK + run: | + # Prevent cached or downloaded toolchains from bypassing the certificate blocklist. + mkdir -p "$HOME/.gradle" + cat >> "$HOME/.gradle/gradle.properties" <> "$HOME/.gradle/gradle.properties" <> "$GITHUB_OUTPUT" diff --git a/.github/workflows/publishReactNativeiOSArtifacts.yml b/.github/workflows/publishReactNativeiOSArtifacts.yml index 56aebc1d2322..691b841ffe59 100644 --- a/.github/workflows/publishReactNativeiOSArtifacts.yml +++ b/.github/workflows/publishReactNativeiOSArtifacts.yml @@ -234,6 +234,31 @@ jobs: path: /tmp/ios-artifacts merge-multiple: true + - name: Get Java version + id: get-java-version + uses: ./.github/actions/composite/getJavaVersion + + - name: Setup Java + # v5.2.0 + uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 + with: + distribution: oracle + java-version: ${{ steps.get-java-version.outputs.version }} + + - name: Block compromised Java certificates + uses: Expensify/GitHub-Actions/block-compromised-java-certificates@d8dfc3ddd4d8626206653c6168ca8d094547749a + + - name: Restrict Gradle to the protected JDK + run: | + # Prevent cached or downloaded toolchains from bypassing the certificate blocklist. + mkdir -p "$HOME/.gradle" + cat >> "$HOME/.gradle/gradle.properties" <> "$HOME/.gradle/gradle.properties" < Date: Thu, 22 Oct 2026 16:29:26 -0700 Subject: [PATCH 2/2] ci: reuse shared Gradle JDK restrictions Adopt the merged GitHub-Actions Gradle opt-in instead of duplicating its toolchain restrictions in each workflow. Keep remediation after setup/cache restoration and before Java network use. --- .github/workflows/buildAndroid.yml | 15 +++------------ .../publishReactNativeAndroidArtifacts.yml | 15 +++------------ .../workflows/publishReactNativeiOSArtifacts.yml | 15 +++------------ .github/workflows/remote-build-android.yml | 15 +++------------ 4 files changed, 12 insertions(+), 48 deletions(-) diff --git a/.github/workflows/buildAndroid.yml b/.github/workflows/buildAndroid.yml index 29b0ed83908e..81305fe28dec 100644 --- a/.github/workflows/buildAndroid.yml +++ b/.github/workflows/buildAndroid.yml @@ -123,18 +123,9 @@ jobs: uses: gradle/actions/setup-gradle@50e97c2cd7a37755bbfafc9c5b7cafaece252f6e - name: Block compromised Java certificates - uses: Expensify/GitHub-Actions/block-compromised-java-certificates@d8dfc3ddd4d8626206653c6168ca8d094547749a - - - name: Restrict Gradle to the protected JDK - run: | - # Prevent cached or downloaded toolchains from bypassing the certificate blocklist. - mkdir -p "$HOME/.gradle" - cat >> "$HOME/.gradle/gradle.properties" <> "$HOME/.gradle/gradle.properties" <> "$HOME/.gradle/gradle.properties" <> "$HOME/.gradle/gradle.properties" <