Collect publisher provenance attestations for PyPI and npm packages
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 65/100
Direzione di ricerca
Start with the PyPI collector code to understand how distribution files are fetched. Look for the Integrity API endpoint pattern. Use sigstore-python for verification. Create tests with fixtures to avoid network calls. The first step is to fetch and store publisher provenance in extra_data, then verify the bundle.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
PyPI and npm both publish signed provenance for many packages now, and PurlDB doesn't collect it yet. As far as I can tell nothing in purldb, scancode-toolkit, scancode.io or vulnerablecode reads it today.
What's available:
- PyPI (PEP 740). Per-file attestations from the Integrity API:
https://pypi.org/integrity/<project>/<version>/<filename>/provenance. Forsigstore4.5.0 it returns a publisher ofkind: GitHub,repository: sigstore/sigstore-python,workflow: release.yml, plus a Sigstore bundle. - npm.
dist.attestationsin the registry metadata points to SLSA v1 provenance. For[email protected]that'shttps://registry.npmjs.org/-/npm/v1/attestations/[email protected].
Why it'd be useful here: the attestation says which repository and workflow actually built the artifact, and a Sigstore signature backs that up. PurlDB already stores vcs_url from package metadata, but that's whatever the publisher typed. Having both lets you compare them. A package whose declared vcs_url doesn't match the repository that built it is worth a flag. That seems relevant to the malicious-package tracking planned in aboutcode-org/vulnerablecode#2438, and to filtering by vcs_url (#903).
A rough first step, which I'm happy to do:
- In the PyPI collector, fetch the provenance for each distribution file when it exists, and store the publisher fields (kind, repository, workflow, environment) in
extra_data. No schema change. - Verify the bundle with sigstore-python before storing anything, and record whether it verified. An unverified claim shouldn't look the same as a verified one.
- Tests with recorded fixtures, so nothing hits the network.
npm could follow the same pattern after that. If you'd rather have this in its own model or a separate pipeline instead of extra_data, tell me and I'll build it that way.
A bit about me: I've contributed to sigstore-python (#1846, merged), and I maintain a GitHub Action that attests code-review coverage with Sigstore. So verification is the part I'm most comfortable with.
- Lingua principale
- HTML
- Stelle
- 70
- Fork
- 74
- Merge medio
- 2g 4h
- PR unite (30g)
- 7
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di aboutcode-org/purldb
-
purlcli failsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
aboutcode-org/purldb#891 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Incorrect set comparison between package names and PURLs in NPM sync logicForse già presa @MuhammadBilal64 l’ha presa 25 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
aboutcode-org/purldb#890 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
PypiVersionAPI.get_latest_date() crashes when a release entry is missing upload_time_iso_8601Forse già presa @drawliin l’ha presa 208 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
aboutcode-org/purldb#863 ·
I maintainer di solito rispondono entro 1 giorno
-
Add doctest and tests for clearcode coordinate helpersForse già presa @drawliin l’ha presa 216 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
aboutcode-org/purldb#861 ·
I maintainer di solito rispondono entro 1 giorno
-
Preserve version ordering in packagedb VersionResponseForse già presa @drawliin l’ha presa 217 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
aboutcode-org/purldb#857 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di aboutcode-org/purldb
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
I maintainer di solito rispondono entro 1 giorno
-
Support .aac audio uploadsForse già presa @julien731 l’ha presa oggi. Apertafeature
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
nimblehq/audio-transcriber#153 ·
-
[Bug]: Anthropic Responses converter forwards empty text blocks, upstream rejects with 400Forse già presa @david-choi-querypie l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
area:core bug priority:p2
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
aomarai/minecraft-mcp#247 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100