Repository navigation
build(deps-dev): bump electron from 43.8.0 to 43.8.1 - #58
Conversation
Bumps [electron](https://github.com/electron/electron) from 43.8.0 to 43.8.1. - [Release notes](https://github.com/electron/electron/releases) - [Commits](electron/electron@v43.8.0...v43.8.1) --- updated-dependencies: - dependency-name: electron dependency-version: 43.8.1 dependency-type: direct:development ... Signed-off-by: dependabot[bot] <support@github.com>
5352cd2 to
af8f709
Compare
qawatake
left a comment
There was a problem hiding this comment.
Update review: electron 43.7.9 → 43.8.1 (security update, GHSA-jr5w-w6x2-84p9)
Reviewed head: af8f709f338a4c73bce799e9c4aba21b6ad35a57 (base cd4bb0b8d5ecdfff90feaecae1a954e018806c78, i.e. main after #56)
Final verdict: On hold — waiting for the repository owner's decision on the release-age gate (see Blocking conditions)
Risk: Medium — axes hit: supply chain (electron 43.8.1 was published 2026-10-20, 4 days ago, and the @electron-internal/extract-zip 1.0.6 it pulls in on 2026-10-22, 2 days ago; both are younger than the repository's 7-day minimum-release-age, which dependabot disabled for this security update; electron ships without npm provenance). The other axes are low: patch release, e2e runner only, no untrusted input, rollback is reverting the lockfile, e2e covers the path, licenses permissive.
Review type: Comment
Release/deploy: Not needed (no-release) — reason: electron and extract-zip only run / unpack the e2e runner binary and never enter main.js / styles.css / manifest.json. This repository ships no artifact at all (no releases or tags, main.js gitignored). I add no-release for the same reason as on #55 / #56.
Changes reviewed (2.1)
- Primary sources read: electron GitHub release v43.8.1 (and v43.7.10 / v43.7.11 / v43.8.0 as reviewed in #56), releases.electronjs.org/releases.json, advisory GHSA-jr5w-w6x2-84p9 and commit
817c43f9; electron/extract-zip release v1.0.6 and compare v1.0.5...v1.0.6; undici release v7.30.1 and compare v7.30.0...v7.30.1; npm registry metadata, provenance attestations and tarball diffs of every moved package. - Version range covered: electron 43.8.0 → 43.8.1 and @electron-internal/extract-zip 1.0.5 → 1.0.6 (dependabot rebased this PR onto
mainafter #56 landed electron 43.8.0 and undici 7.30.1; the earlier head5352cd2also carried those). The lockfile diff contains exactly these two packages; the set of package names is unchanged. - Breaking / behavior changes: electron 43.8.1 (vs 43.8.0): applies the SPKI blocklist for the compromised eMudhra intermediate certificates, in Chromium and in the embedded Node (
fix: apply the certificate SPKI blocklist to Node and add entries, #55130; this is the GHSA-jr5w-w6x2-84p9 mitigation); link-opened windows now use the opener's session andwebPreferences(#55049);setCertificateVerifyProcis applied to concurrent first requests (#55047). Chromium 150.0.7871.250, Node 24.22.0 and V8 are unchanged vs 43.8.0. 43.7.9 → 43.8.0: as in #56 (Node 24.21.0 → 24.22.0, crash fixes, no breaking changes). extract-zip 1.0.6: bumps the Rustzipcrate to 9.0.3 for RUSTSEC-2026-0367/0368/0369 (the native.nodebinaries are rebuilt;index.js,binding.js,*.d.tsbyte-identical) and relicenses BSD-2-Clause → MIT (newLICENSEfile). undici is no longer part of this PR (7.30.1 already onmainvia #56).
Impact and adequacy of the PR (2.2, 2.3)
| Change | Affected location / none | Evidence | PR handling adequate? |
|---|---|---|---|
| SPKI blocklist (GHSA-jr5w-w6x2-84p9) | TLS trust of the e2e Obsidian process launched from the npm electron binary (tests/e2e-setup/setup.ts, tests/e2e/sample.spec.ts) |
Nothing in this repo configures certificate verification (grep `setCertificateVerifyProc | certificate-error |
link-opened windows / setCertificateVerifyProc race |
None | grep `window.open | setWindowOpenHandler |
| extract-zip 1.0.6 (rebuilt native unzip) | install.js of electron, which unpacks the downloaded electron-v43.8.1-darwin-arm64.zip on first require('electron') |
e2e log on this head: Downloading Electron binary... then the suite ran, so the new binary unpacked correctly |
Yes |
| Files dependabot does not touch | None | No version of these packages is hardcoded in workflows, scripts or configs (grep `43.7.9 | 43.8.0 |
Verification (2.4)
- CI on this head (https://github.com/qawatake/obsidian-e2e-sample/actions/runs/40096052691): all jobs passed, with
electron 43.8.1installed (install summary in the logs) and the e2e suite green (e2e:setup/e2e:test/e2e:cleanupeach "1 passed"). This CI ran on 2026-10-24 (after the rebase, against the currentmaincd4bb0band after both advisories were published), andpnpm audit --audit-level=highreported "No known vulnerabilities found": this is the only open lockfile change in the repository whose audit is green against the current advisory database;mainitself still fails on GHSA-jr5w-w6x2-84p9 alone. I read the logs. - Merge state: CLEAN on the current
main(cd4bb0b) at review time. - Additional checks I did: tarball diff electron 43.8.0 → 43.8.1 (only
package.jsonversion, theelectron.d.tsheader comment andchecksums.jsondiffer;cli.js,index.js,install.jsbyte-identical);checksums.jsonof 43.8.1 equals the GitHub releaseSHASUMS256.txtfor all 75 entries; tarball diff extract-zip 1.0.5 → 1.0.6 (JS and.d.tsidentical, 9 native binaries differ,LICENSEadded,package.jsonversion + license field).
Rollback, supply chain, license (2.5, 2.6, 2.7)
- Rollback: revert the lockfile /
package.jsonchange. No persistent data involved. - Supply chain: electron 43.8.1 — no npm provenance (none for any 43.x); publisher
electron-nightly, maintainers unchanged; integrity matches the registry; GitHub release bysudowoodo-release-bot[bot]; annotated tagv43.8.1→ commit817c43f9, GPG-verified, by Samuel Attard (Electron maintainer), contained in43-x-y; the binary it downloads is verified againstchecksums.json, which equals the releaseSHASUMS256.txt. Published 2026-10-20T02:54Z: 4 days, below the 7-day gate; without provenance the compensating checks 1–3 of the guideline (provenance, publish-path continuity, commit = tag) cannot be met for the npm package itself, only for the GitHub release assets via the checksum match. extract-zip 1.0.6 — npm provenance fromelectron/extract-zip.github/workflows/release.ymlonrefs/heads/main, github-hosted, commitade400e3= tagv1.0.6=gitHead, the same path as 1.0.5; commits in the range are GPG-verified (claude[bot]/dependabot[bot], merged by the Electron team); scripts unchanged (prepublishOnlyonly, not run on install), no dependencies. Published 2026-10-22T05:22Z: 2 days. Dependabot resolved the lockfile with--config.minimum-release-age=0(its job log), so the gate did not apply. - License: electron MIT → MIT (LICENSE identical); extract-zip BSD-2-Clause → MIT (permissive → permissive, no obligation change for an unpublished dev dependency).
Blocking conditions
- Hit: supply-chain risk unresolved under the repository's own policy.
.github/dependabot.ymlstates that a fix version gets no special trust and should age pastminimum-release-ageunless the advisory is severe and the vulnerable path is actually reachable from this plugin. electron 43.8.1 (4 days, no provenance) and extract-zip 1.0.6 (2 days) are inside the gate. Whether GHSA-jr5w-w6x2-84p9 (high, CVSS 7.4: trust in compromised intermediate CAs by the e2e runner's Chromium/Node) is reachable enough here to take them early is the repository owner's decision, not the reviewer's.
Requests
- None for dependabot. For the repository owner, one of:
a. Accept now on the compensating evidence above (identical JS, release checksum match, extract-zip provenance) and merge.
b. Wait: electron 43.8.1 passes the gate at 2026-10-27T02:54Z, extract-zip 1.0.6 at 2026-10-29T05:23Z. Nothing needs to be redone then; confirm the head is unchanged and merge.
Until thenmain'spnpm auditkeeps failing on GHSA-jr5w-w6x2-84p9 alone (undici is fixed by #56).
Unverified / notes for other reviewers (2.9)
- The npm
electrontarball cannot be tied to a GitHub commit (no provenance, nogitHead). - The rebuilt extract-zip native binaries were not reproduced; trust rests on the provenance attestation.
- Whether a TLS man-in-the-middle against the e2e process on a GitHub-hosted runner is realistic was not assessed beyond "network traffic exists".
|
Addendum to the review above (reachability, for the "take it early or wait" decision):
|
qawatake
left a comment
There was a problem hiding this comment.
Update review: electron 43.8.0 → 43.8.1
Final decision: Proceed (実施)
Risk: Medium — axes: change type (patch with documented behavior changes, none applicable to this repo), supply chain (electron publishes no npm provenance; compensated, see below; 43.8.1 is 11 days old)
Review type: Approve
Release/deploy: Not needed (no-release) — electron is a devDependency used only to run Obsidian in the e2e tests; it is external in esbuild and not bundled. Built base (main cd4bb0b) and this PR merged onto main with pnpm build: main.js and manifest.json are byte-identical (artifact = main.js,manifest.json passed explicitly; this repo has no hardenDeps declaration) (artifact-diff exit 0).
Changes reviewed (2.1)
- Primary sources: release notes v43.8.1, advisory GHSA-jr5w-w6x2-84p9 (high; patched in 43.x = 43.8.1), compare v43.8.0...v43.8.1 (12 commits, behind 0), and the npm tarball diff 43.8.0 → 43.8.1. Upstream research was done once for electron@43.8.1 and reused here; basis for reuse: same version and the lockfile integrity in this PR (
sha512-Qa6/xXOD…RcQ==) equals the registrydist.integrityfor electron@43.8.1. - Version range: 43.8.0 → 43.8.1 (no intermediate versions).
- Breaking / behavior changes:
- [security] eMudhra intermediate-certificate SPKI blocklist now also applied to Node's tls/https/fetch (TLS to those certs now fails).
- [behavior] windows opened from links (
window.open/target=_blank) now use the opener's session andwebPreferences. - [fix]
setCertificateVerifyProcnow applied to requests concurrent with the first request to a host. - No breaking API change in the release notes or commit list.
- Transitive change in the lockfile:
@electron-internal/extract-zip1.0.5 → 1.0.6 (electron's^1.0.1dependency re-resolved). Checked separately: 1.0.6 = upstream tag v1.0.6 (ade400e, on main), changes are a Rustzip9.0.3 bump for RUSTSEC-2026-0367/0368/0369, a CI gate, and a relicense BSD-2-Clause → MIT. - No other package in the lockfile changed; lockfile package-name set is identical before/after.
Impact and adequacy (2.2, 2.3)
| Change | Affected / not affected | Basis | PR handling adequate? |
|---|---|---|---|
| Cert blocklist for Node TLS | Not affected | e2e opens a local vault only; no TLS to third-party hosts in tests | Yes (no change needed) |
| Link-opened windows inherit opener session/webPreferences | Not affected | git grep over the whole repository for window.open, setWindowOpenHandler, _blank: no hits. The plugin imports electron only as an esbuild external (runtime is Obsidian's own Electron) |
Yes |
setCertificateVerifyProc fix |
Not affected | not used (git grep setCertificateVerifyProc: no hits) |
Yes |
| extract-zip 1.0.6 | Used only by electron's binary download (install.js) |
lockfile snapshot | Yes |
Verification (2.4)
- CI on this PR head (af8f709, run 40096052691):
build,e2eandtest-e2e-toolspassed; at that timepnpm audithad no findings. Thebuildfailures currently seen on the other open PRs are thepnpm audit --audit-level=highstep failing on GHSA-jr5w-w6x2-84p9 (electron <43.8.1), i.e. the advisory this PR fixes. - e2e:
setup-obsidian.shreports "Electron 43.8.1 matches Obsidian's bundled major (43.8.3)"; Playwright e2e:setup1 passed, e2e:test1 passed, e2e:cleanup1 passedon macOS. - Run locally on this PR merged onto current main (this PR's base is current main), pnpm 10.34.7 / Node 24.22.1 via mise:
pnpm install --frozen-lockfileOK,check-toolchainOK,check-actions-pinnedOK,check-config-schemaOK,pnpm audit --audit-level=highexit 0 (main: exit 1 with the electron high; remaining 2 moderates are pre-existing@electron/asar > minimatch/glob, unchanged),pnpm lintOK,pnpm typecheckOK,pnpm buildOK,check-bundled-depsOK. - Artifact diff (base main vs. merged head): identical.
Rollback, supply chain, license (2.5, 2.6, 2.7)
- Rollback: revert this commit; no persistent side effects (dev-only binary).
- Supply chain:
- Same package name; repository
electron/electron; publisherelectron-nightly(same as 43.8.0 and other recent lines); tag v43.8.1 (annotated, deref817c43f9) exists with a release; lockfile integrity = registry integrity; no lifecycle scripts (43.8.x tarballs have noscripts);dependenciesstring unchanged; MIT. - electron publishes no npm provenance (never has, including the 43.8.0 we run today), so 2.6 compensating checks 1–3 cannot be satisfied. Decision: not treated as an unresolved supply-chain risk for this repo. Reasoning:
- The age criterion of the main 2.6 table is met at its lower bound (published 2026-10-20, 11 days; also past this repo's
minimum-release-ageof 7 days), so we are not on the "take before the waiting period" path where provenance is mandatory. - Independent-channel evidence: the npm tarball changes only
checksums.json,electron.d.tsandpackage.json(no JS change inindex.js/cli.js/install.js); the binary is fetched from the GitHub release and verified againstchecksums.json, and all 75 entries ofchecksums.jsonmatch the GitHub releaseSHASUMS256.txt. A registry-only compromise would have to show up in exactly those files. - Exposure is dev-only: the binary runs on dev machines and in the macOS e2e job (
contents: readtoken); nothing reaches users (artifact identical). - No alternative: staying on 43.8.0 keeps the same provenance gap plus a known high advisory.
- Monitoring / stop condition: if a compromise or regression report appears for electron 43.8.x, revert this commit and pin 43.8.0 until resolved.
- The age criterion of the main 2.6 table is met at its lower bound (published 2026-10-20, 11 days; also past this repo's
- extract-zip 1.0.6: trusted publisher with SLSA provenance, workflow
electron/extract-zip/.github/workflows/release.yml@refs/heads/main, commitade400e= tag v1.0.6 (same repo/workflow as 1.0.5 → continuous); no install scripts (onlyprepublishOnly).
- Same package name; repository
- License: electron MIT → MIT. extract-zip BSD-2-Clause → MIT (both permissive; acceptable for this MIT plugin and dev-only use).
Block conditions
- Hit: none.
Requests
- None.
Unverified / notes for reviewers (2.9)
- The npm tarball ↔ git commit link for electron (no gitHead/provenance) and the signature of
SHASUMS256.txtwere not verified; binary contents cannot be inspected. Accepted as a known constraint for the reasons above. - Overlap: #60 (npm-minor-patch group) also bumps electron (→ 43.8.3). This PR is landed first because #60 is blocked on a Biome config change; after this merges, #60's electron part becomes 43.8.1 → 43.8.3.
Bumps electron from 43.8.0 to 43.8.1.
Release notes
Sourced from electron's releases.
Commits
817c43ffix: apply the certificate SPKI blocklist to Node and add entries (43-x-y) (#...9afe078docs: fix code block line highlighting after docs reformats (#55103)076d6dbtest: replace fix_crypto_tests_to_run_with_bssl.patch with upstream backport ...3b068bftest: re-enable Node.js tests that now pass with BoringSSL (#55094)60f928ebuild: stop overriding node GN declare_args defaults in patch (#55076)14c73d1build: update PGO profiles (#55092)7ceb2c0fix: avoid misaligned char16_t reads in crdtp string deserialization (#55063)06f1c1fci: use Cloudflare DNS directly on macOS runners (#55068)a68de91fix: use the opener's session and webPreferences for windows opened from link...6a2b850ci: skip native builds when installing deps for type generation (#55065)