EclipseFdn / EclipseFdn/open-vsx.org

Reproducible Builds

Open
#12,114 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
394
Forks
145
Avg merge
2d 19h
Merged PRs (30d)
3

Description

Hi!
Right now I am just a consumer of open-vsx. For some dumb reasons I just assumed that Open-VSX had reproducable builds. I noticed that at the end just binaries are uploaded.

It would be awesome to strive for something close to f-droid.org to prevent supply-chain-attacks through the Open-VSX Store. Yeah, you need to trust every publisher (thanks for implementing that!) - still you have no real way to trust them.

* On the one hand you need to trust the code (for small extensions you could manually look through the code - gets complicated for bigger repos).
* On the other hand you need to trust that the published code matches the compiled version.
* Also you need to trust the dependencies.

With this Feature Request I am just tackling trusting the binary matches the source. I think the anecdote of [lzma](https://github.com/tukaani-project/xz/commit/e93e13c8b3bec925c56e0c0b675d8000a0f7f754) shows that the attacker there only included the trigger for the vulnerability into the published binary, not into the source code. So state-actors might be afraid of this level of transparency if they can avoid it.

I acknowledge that having every app reproducible is a far way to go. I guess this are some steps in between like for example:
* [ ] Make a check if the binary is equal to one released by either a trusted GitLab CI Runner or a trusted GitHub Actions Runner (some random self-hosted runner is not trusted). Mark binaries accordingly in the UI.
* [ ] If a project automatically buildable with yarn is found, allow to download Artifacts from a CI controlled by you. (Maybe only for more popular extensions?; Are the build-actions typically named the same in packages.json across projects?)
* [ ] If this is to expensive in processing power, find a sponsor for them.
* [ ] Test a few projects on what the biggest hurdles for reproducibility are.
* [ ] Write documentation on how to build projects in a way that is reproducible with your infrastructure.
* [ ] Mark reproducible builds as reproducible in the UI.
* [ ] Require extensions to be reproducible.

Issues I think about are:
* How to know which Git-Tag matches which released version?
* Non-reproducible build-sections
* For zips, there seems to be https://salsa.debian.org/reproducible-builds/strip-nondeterminism/

Thanks for reading through this long bug report. I really hope there can be progress in creating a more secure Open-VSX.

Best,
Thomas

Contributor guide

No contributing guide indexed for this repository

Research direction

Begin by reviewing the extension publishing flow and the UI that displays binaries, then inspect how GitHub Actions and GitLab CI artifacts are handled. Compare a few yarn-buildable projects and document reproducibility hurdles, trusted-runner checks, and source-to-artifact matching before defining a focused first milestone.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, gitlab, typescript
Domain
build-system, devops, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.