Collect publisher provenance attestations for PyPI and npm packages
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 65/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- HTML
- Estrellas
- 70
- Forks
- 74
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 7
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aboutcode-org/purldb
-
purlcli failsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
aboutcode-org/purldb#891 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Incorrect set comparison between package names and PURLs in NPM sync logicPosiblemente ocupada @MuhammadBilal64 la tomó hace 25 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
aboutcode-org/purldb#890 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
PypiVersionAPI.get_latest_date() crashes when a release entry is missing upload_time_iso_8601Posiblemente ocupada @drawliin la tomó hace 208 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
aboutcode-org/purldb#863 ·
Los mantenedores suelen responder en 1 día
-
Add doctest and tests for clearcode coordinate helpersPosiblemente ocupada @drawliin la tomó hace 216 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
aboutcode-org/purldb#861 ·
Los mantenedores suelen responder en 1 día
-
Preserve version ordering in packagedb VersionResponsePosiblemente ocupada @drawliin la tomó hace 217 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
aboutcode-org/purldb#857 ·
Los mantenedores suelen responder en 1 día
Todos los issues de aboutcode-org/purldb
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
memory_patch_page drops the `#` of headings like `## Notes on C#`Posiblemente ocupada @viniciusdsandrade la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
akitaonrails/ai-memory#1859 ·
Los mantenedores suelen responder en 1 día
-
ds-bot collides with dsh-argp: tool "recall" is already registered, Bot layer never activatesAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Fei2411/DeepSeek-Bot#703 ·
-
first-timers-only good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 94/100
career-ops-hq/career-ops#6260 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
be-BOP-io-SA/be-BOP#2817 ·
Los mantenedores suelen responder en 5 días