Skip to content

Commit

Permalink
ci: Read build matrix JSON explicitly (#59)
Browse files Browse the repository at this point in the history
Because we used require() to read build-matrix.json, the file could be
replaced with build-matrix.json.js, allowing code injection into our CI
pipelines. This fixes this vulnerability by reading the JSON text with
the fs module, then explicitly parsing it, rather than relying on
require().

This exploit was discovered by a researcher, and the researcher's
activity was spotted within hours. Workflows were immediately suspended.
No evidence has been found of any tampering in this repository or its
releases.

Issue #57
  • Loading branch information
joeyparrish authored Dec 16, 2024
1 parent 7319390 commit 7f593bd
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ jobs:
// Use ENABLE_SELF_HOSTED to decide what the build matrix below
// should include.
const {hosted, selfHosted} = require("${{ github.workspace }}/repo-src/build-matrix.json");
const buildMatrix = JSON.parse(fs.readFileSync("${{ github.workspace }}/repo-src/build-matrix.json"));
const {hosted, selfHosted} = buildMatrix;
const matrix = enableSelfHosted ? hosted.concat(selfHosted) : hosted;
// Output a JSON object consumed by the build matrix below.
Expand Down

0 comments on commit 7f593bd

Please sign in to comment.