Tyrimai / S5
Kas skelbia patvirtinimus PyPI ir npm saugyklose – ir kas liovėsi?
Santrauka
PEP 740 patvirtinimai (attestations) leidžia bet kam patikrinti, kad PyPI failą sukūrė konkreti saugykla ir darbo eiga (workflow). Įprasta patvirtinimų neskelbti. 2026 m. spalio 2 d. išmatavome:
- 15 000 dažniausiai atsisiunčiamų PyPI projektų visą įkėlimų istoriją (hugovk 2026 m. spalio 1 d. sąrašas);
- kiekvieno patvirtinimus skelbiančio projekto publikuotojo tapatybę (PyPI Integrity API);
- 1500 npm paketų imtį.
Iš 14 995 projektų, kuriuos galėjome išanalizuoti, 11 336 (75,6 %) niekada neįkėlė failo su patvirtinimu.
Paplitimas. Naujausia versija turi patvirtinimą 3479 iš 14 995 projektų (23,2 %), o tarp projektų, kurių naujausia versija pirmą kartą įkelta po 2024 m. spalio 1 d., – 31,1 %. Pagal reitingo intervalus:
| vietos reitinge | naujausia versija su patvirtinimu |
|---|---|
| 1–100 | 59,0 % |
| 10 001–15 000 | 20,3 % |
Projektų, kurių naujausia versija turi patvirtinimą, dalis išaugo nuo 4,0 % (2024 m. lapkričio pabaigoje) iki 23,2 % (2026 m. rugsėjo pabaigoje). Mūsų rezultatai sutampa su Trail of Bits Are we PEP 740 yet? duomenimis dėl 359 iš 360 jo paketų.
Projektai, kurie liovėsi. 148 projektai įkėlė failą su patvirtinimu, o vėliau išleido versiją be jo. 138 projektų versijų linija, kurią įdiegia pip, turėjo patvirtinimus, bet jos naujausia versija neturi nė vieno: tai 3,8 % iš 3659 projektų, kurie kada nors skelbė patvirtinimus. Pagal priežastį:
| priežastis | projektai |
|---|---|
| įrankio ar darbo eigos pakeitimas | 96 |
| vienas pavienis leidimas | 15 |
| atkurta po naujausio leidimo | 1 |
| nežinoma | 26 |
53 įrankio ar darbo eigos pakeitimų atvejais publikavimo darbo eiga dabar vykdo uv publish be patvirtinimo žingsnio. Pavyzdžiai, kurių kiekvieną pagrindžia commit įrašas, nurodytas paper.md §5.3: fastapi, typer, fastmcp ir supabase. Liovimasis rodo leidimo įrankių pasikeitimą, o ne kompromitavimą.
Publikuotojo pakeitimai. Bent 307 patvirtinimus skelbiantys projektai pakeitė publikuotoją. Iš 188 pakeitimų, kai pasikeitė saugykla ar publikuotojo rūšis:
- 160 patvirtina vieši duomenys;
- 16 dera su paties projekto metaduomenimis;
- 12, 5 projektuose, nepatvirtinti.
npm. 30,8 % iš 1000 populiariausių paketų skelbia kilmės duomenis (provenance); 4 iš 459 paketų, kurie kada nors tai darė (0,9 %), liovėsi.
Ankstesni darbai. Artimiausias esamas matavimas – Trail of Bits stebėjimo priemonė, kuri apima 360 populiariausių PyPI paketų ir vertina jų naujausią leidimą. Šis tyrimas papildomai pateikia pasiskirstymą už šių 360 paketų ribų, istoriją, liovimosi atvejus ir jų priežastis bei publikuotojų auditą (paper.md §2).
Automatizavimas ir peržiūra. Tyrimą atliko ir tekstą parašė DI agentai. Jį patikrino nepriklausomas DI recenzentas (paper.md §4.1).
Cituokite šį tyrimą
EasyxLab (2026). Who publishes attestations on PyPI and npm — and who stopped? Study S5. EasyByte Hub S. Coop. Mad. https://github.com/easybytehub/easyxlab/tree/main/studies/s5-pypi-attestations@techreport{easyxlab_s5,
title = {Who publishes attestations on PyPI and npm — and who stopped?},
author = {{EasyxLab}},
institution = {EasyByte Hub S. Coop. Mad.},
number = {S5},
year = {2026},
url = {https://github.com/easybytehub/easyxlab/tree/main/studies/s5-pypi-attestations}
}