Vuonna 2026 raportoitiin päivässä 131% enemmän CVE:itä kuin edellisenä vuonna.
← Takaisin sanastoon

Package URL

Package URL (purl) on standardoitu merkkijono, joka yksilöi ohjelmistopaketin ekosysteemin, nimiavaruuden, nimen ja version perusteella, esimerkiksi pkg:npm/[email protected].

Päivitetty viimeksi: 11. marraskuuta 2026

Package URL (purl) on ohjelmistopaketin standardoitu tunniste, joka nimeää paketin samalla tavalla kuin sen oma ekosysteemi: pkg:type/namespace/name@version?qualifiers#subpath. Siitä tuli Ecma-standardi, ECMA-427, joulukuussa 2025 (1. painos, Ecma TC54), ja määrittelyä ylläpidetään osoitteessa package-url/purl-spec.

Miten purl muodostuu

Jokainen purl alkaa skeemalla pkg. Tyyppi on ekosysteemi tai paketinhallintatyökalu (npm, pypi, cargo, deb, maven ja niin edelleen). Nimiavaruus on valinnainen ryhmittely, kuten npm-scope, Maven-ryhmä tai Linux-jakelu. Sen jälkeen tulevat nimi ja versio. Määreet lisäävät tietoja, joita ekosysteemi tarvitsee täsmälleen oikean paketin yksilöimiseen, kuten arkkitehtuurin tai jakelun julkaisun, ja alipolku osoittaa paketin sisälle.

pkg:npm/%40angular/[email protected]
pkg:pypi/[email protected]
pkg:cargo/[email protected]
pkg:deb/ubuntu/[email protected]+dfsg-1ubuntu2.1?arch=arm64&distro=noble

Viimeinen kertoo enemmän kuin "cpio 2.15": se on Ubuntun oma buildi Noble-julkaisulle arm64-arkkitehtuurilla. Tällä on merkitystä, koska jakelut takaisinsiirtävät tietoturvakorjauksia omiin versioihinsa, joten sama upstream-versio voi olla haavoittuva yhdessä jakelussa ja korjattu toisessa.

Miksi haavoittuvuuksien täsmäytys riippuu siitä

Pakettikohtaisesti järjestetyt tietoturvatiedotetietokannat tuntevat komponentin sen ekosysteemin ja nimen perusteella. OSV-skeema edellyttää ecosystem- ja name-kentät jokaiselle haavoittuvalle paketille ja kutsuu purl-kenttäänsä "valinnaiseksi mutta suositelluksi"; myös GitHubin tietoturvatiedotteet listataan ekosysteemin paketeittain. Kun SBOM:n komponentilla on purl, työkalu voi täsmäyttää sen näihin tiedotteisiin tarkasti. Ilman sitä työkalun on arvattava nimen tai CPE:n perusteella, tai se ei täsmäytä mitään, ja haavoittuvuus jää raportoimatta.

Vertailemassamme Yocto-buildissa build-järjestelmän oma SBOM listasi satoja Rust-crateja pelkkinä .crate-tiedostoina, joilla oli latauspaikka mutta ei pkg:cargo-purlia, joten näitä crateja ei voitu täsmäyttää Rustin tietoturvatiedotteisiin (katso Yocto-buildit). Uudemmat Yocto-julkaisut lisäävät ekosysteemikohtaiset purlit Cargo- ja Go-lähteille.

Package URL vs. CPE

Package URLCPE
Kuka määrittää nimenPaketin ekosysteemiNVD:n CPE-sanakirja
YksilöiPaketin rekisterissä tai jakelussaTuotteen, myös laitteistot ja käyttöjärjestelmät
Muotopkg:type/namespace/name@versioncpe:2.3:part:vendor:product:version:...
StandardiECMA-427NISTIR 7695 (CPE 2.3)
KäyttäjätOSV, GitHubin tietoturvatiedotteet, SBOM-työkalutNVD, monet skannerit
Tyypillinen ongelmaPuuttuu vendoroidulta tai käsin listatulta koodiltaMonitulkintaiset toimittaja- ja tuotenimet; ei CPE-tietoja monille uusille CVE:ille

Nyrkkisääntö: anna jokaiselle paketille, jolla on ekosysteemi, purl, ja käytä CPE:tä sille, jolla ekosysteemiä ei ole, kuten kaupallisille ohjelmistoille, laiteohjelmistoille ja laitteistolle. Toisiinsa sopimattomat tunnisteet ovat yksi tärkeimmistä virheellisten löydösten syistä, kuten kerrotaan sivulla haavoittuvuuskohinan vähentäminen.

Package URL:t SBOM:eissa

Sekä CycloneDX että SPDX sisältävät purlin komponenttia kohden. CISA:n 2026 Minimum Elements toteaa, että komponenttitunnisteissa tulisi käyttää yleisiä tunnisteita "kuten Common Platform Enumeration (CPE) ja Package-URL (PURL)", ja Saksan BSI TR-03183-2 edellyttää tällaisia tunnisteita jokaiselle komponentille, jolle niitä on. Puuttuva purl on pikemminkin kentän laatuongelma kuin aukko SBOM:n kattavuudessa: komponentti on listattu, mutta mikään tietoturvatiedotetietokanta ei pysty hakemaan sitä.

CRACI tallentaa package URL:n jokaiselle paketille, jonka buildi hakee, myös jokaiselle Yocto-buildin Rust-cratelle, joten sen SBOM:t voidaan täsmäyttää tietoturvatiedotteisiin. Katso buildin aikana tallennetut SBOM:t.