Repository navigation
🔐 deps: turbo 2.x closes two advisories instead of deferring them to November - #241
Closed
Juma Allan (jumaallan) wants to merge 4 commits into
Closed
Juma Allan (jumaallan) wants to merge 4 commits into
Juma Allan (jumaallan) wants to merge 4 commits into
Conversation
…erred turbo 1.13.4 carried GHSA-3qcw-2rhx-2726 and GHSA-hcf7-66rw-9f5r, allowlisted until November because the fix is a major. Upgrading to 2.10.10 resolves both, so the two entries come out of osv-scanner.toml rather than being re-dated. turbo 2 renames turbo.json's top-level pipeline key to tasks; the official codemod confirms that rename is the only change this config needs. CI parses turbo's --dry=json output to read a task's cache status, so that contract was checked explicitly against both build tasks and still holds.
Contributor
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
🔍 Semgrep Security Scan Results✅ No security findings detected by |
turbo 2 defaults envMode to strict, which passes task processes only the variables declared in env/globalEnv/passThroughEnv. The gradle build therefore lost ANDROID_HOME and failed with 'SDK location not found', which is how build-android went red on the previous commit. envMode: loose restores turbo 1's behaviour — every variable reaches the task — so the ambient toolchain paths the native builds depend on (ANDROID_HOME, JAVA_HOME, DEVELOPER_DIR) are available again. Declaring each one in passThroughEnv would be tighter, but it trades a known-good configuration for a list that is easy to leave a hole in; worth doing separately, with someone watching the first runs.
Juma Allan (jumaallan)
enabled auto-merge (squash)
August 14, 2026 15:59
|
This PR is stale because it has been open 14 days with no activity. Remove stale label or comment or this will be closed in 7 days. |
Juma Allan (jumaallan)
requested a review
from Harun Wangereka (wangerekaharun)
September 2, 2026 13:30
…fter the August triage vm2 3.11.5 (via release-it → proxy-agent → degenerator), browserslist 4.25.1 (via Babel) and decode-uri-component 0.2.2 (via @react-navigation/core → query-string) picked up eight advisories since osv-scanner.toml was re-triaged on 2026-08-14, and the audit has been red on main since 2026-08-31. All three are dev-only and reachable by a lockfile refresh, which the allowlist's own rule says to prefer over listing them: vm2 and browserslist move within their parents' ranges (3.12.0, 4.28.8); decode-uri-component's fix is outside query-string's ^0.2.2, so it is pinned through resolutions like fast-xml-parser already is. yarn lint, typecheck, test and prepare pass.
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.
User description
Story: N/A — dependency security
Summary
turbo 1.13.4 carries two advisories, GHSA-3qcw-2rhx-2726 and GHSA-hcf7-66rw-9f5r. They were
allowlisted in
osv-scanner.tomluntil November because the fix is a major version. Thisupgrades to 2.10.10 and removes the entries, so they are fixed rather than deferred.
turbo.json's top-levelpipelinekey becomestasks, which turbo 2 requires. The officialcodemod (
@turbo/codemod migrate --from 1.13.4 --to 2.10.10 --dry) reports 13 transforms withevery one unchanged or skipped except that rename, so nothing else in this config needs to move.
The two
IgnoredVulnsblocks for turbo come out ofosv-scanner.toml. Nothing else in that filechanged.
Three transitive dev-only packages picked up eight advisories after the August triage, which is why the audit has been red on
mainsince 31 August:vm23.11.5,browserslist4.25.1 anddecode-uri-component0.2.2. All three are reachable by a lockfile refresh, so they move to 3.12.0, 4.28.8 and 0.5.0 instead of joining the allowlist;decode-uri-componentis pinned throughresolutionsbecause its fix sits outsidequery-string's^0.2.2.Verified the advisories are actually gone rather than merely unlisted: scanning with no config at
all reports neither GHSA anywhere in the tree.
The risk worth checking here was CI's contract with turbo, since
ci.ymlparses turbo's JSON todecide whether to restore a cache:
That still works under turbo 2 — confirmed field by field for both
build:iosandbuild:android:the top level still has
tasks, and each task still exposescache.status.Known Issues
inputsis hashed: 1.13.4 hashed nothing for it, 2.xexpands it to every file beneath.
turbo.json's negations still sayexample/…while theworkspace directory is
sample/, andbuild:iosis declared insample/package.json, soinputsresolve relative tosample/— meaning bareiosnow pulls insample/ios/Pods(19,501 inputs locally, versus 67 without Pods) and
!example/ios/Podsexcludes nothing.Measured consequence: the iOS cache probe hashes before
pod installand the build hashesafter, so
build:ioswill always report MISS and the "Cache cocoapods" step will keep running.CI still passes and the probe output stays small (~10 KB, well under the argv limit), so this is
slower, not broken.
I deliberately did not fix the globs in this PR. Correcting them changes cache keys, and a
wrong correction risks the opposite failure — a false cache hit that skips a build that should
have run. That is worse than a slow build, and it deserves its own change with someone watching
the first few runs.
build:android/build:ioscompiles. Only--dry=jsonwas exercised, whichis what CI's probe uses; the compile steps themselves are untouched by this diff.
Test Instructions
The Security Audit workflow (OSV Scanner over
yarn.lock) is the check that was red onmain; it should be green on this branch.Lint passes with the three pre-existing
no-bitwisewarnings insample/src/HomeScreen.tsx,unchanged by this work.
Screenshot
N/A — no UI changes.
PR Type
Enhancement
Description
Upgrade turbo devDependency to
^2.10.10Rename
turbo.jsonpipelinekey totasksDrop two turbo advisory allowlist entries
Diagram Walkthrough
File Walkthrough
package.json
Bump turbo devDependency to 2.xpackage.json
turbodevDependency from^1.10.7to^2.10.10.turbo.json
Migrate turbo config to turbo 2 schematurbo.json
pipelinekey totasks, as required by turbo 2.osv-scanner.toml
Remove turbo advisory allowlist entriesosv-scanner.toml
IgnoredVulnsentry forGHSA-3qcw-2rhx-2726.IgnoredVulnsentry forGHSA-hcf7-66rw-9f5r.deferred.