V roce 2026 o 131% více nahlášených CVE denně než loni.
← Zpět na slovník

Package URL

Package URL (purl) je standardní řetězec, který identifikuje softwarový balíček podle ekosystému, jmenného prostoru, názvu a verze, například pkg:npm/[email protected].

Poslední aktualizace: 11. listopadu 2026

Package URL (purl) je standardní identifikátor softwarového balíčku, který ho pojmenovává tak, jak to dělá jeho vlastní ekosystém: pkg:type/namespace/name@version?qualifiers#subpath. V prosinci 2025 se stal standardem Ecma, ECMA-427 (1. vydání, Ecma TC54), a specifikace se udržuje v repozitáři package-url/purl-spec.

Jak je purl sestaven

Každý purl začíná schématem pkg. Typ je ekosystém nebo správce balíčků (npm, pypi, cargo, deb, maven a další). Jmenný prostor je volitelné seskupení, například scope v npm, skupina v Mavenu nebo linuxová distribuce. Pak následují název a verze. Kvalifikátory přidávají údaje, které ekosystém potřebuje k určení přesného balíčku, například architekturu nebo vydání distribuce, a podcesta ukazuje dovnitř balíčku.

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

Poslední z nich říká víc než „cpio 2.15“: jde o vlastní build Ubuntu pro vydání Noble na arm64. To je důležité, protože distribuce backportují bezpečnostní opravy do vlastních verzí, takže stejná upstream verze může být v jedné distribuci zranitelná a v jiné opravená.

Proč na něm závisí párování zranitelností

Databáze bezpečnostních upozornění organizované podle balíčků poznají komponentu podle jejího ekosystému a názvu. Schéma OSV vyžaduje u každého dotčeného balíčku ecosystem a name a své pole purl označuje za „volitelné, ale doporučené“; bezpečnostní upozornění GitHubu jsou rovněž vedena podle balíčků ekosystému. Když komponenta v SBOM nese purl, nástroj ji může s těmito upozorněními spárovat přesně. Bez něj musí hádat podle názvu nebo CPE, nebo nespáruje nic a zranitelnost zůstane nenahlášena.

V buildu Yocto, který jsme porovnávali, uváděla vlastní SBOM build systému stovky crate v Rustu jen jako soubory .crate s umístěním ke stažení a bez purl pkg:cargo, takže tyto crate nebylo možné spárovat s bezpečnostními upozorněními pro Rust (viz buildy Yocto). Novější vydání Yocta přidávají purl ekosystému pro zdroje Cargo a Go.

Package URL vs CPE

Package URLCPE
Kdo určuje názevEkosystém balíčkuSlovník CPE od NVD
IdentifikujeBalíček v registru nebo distribuciProdukt, včetně hardwaru a operačních systémů
Formátpkg:type/namespace/name@versioncpe:2.3:part:vendor:product:version:...
StandardECMA-427NISTIR 7695 (CPE 2.3)
Kdo ho používáOSV, bezpečnostní upozornění GitHubu, nástroje SBOMNVD, mnoho skenerů
Typické selháníChybí u přibaleného nebo ručně uvedeného kóduNejednoznačné názvy dodavatelů a produktů; u mnoha nových CVE chybí data CPE

Praktické pravidlo: každému balíčku, který má ekosystém, přidělte purl a pro to, co ekosystém nemá, například komerční software, firmware a hardware, použijte CPE. Nesprávně spárované identifikátory jsou jednou z hlavních příčin chybných nálezů, jak popisujeme v článku jak snížit šum zranitelností.

Package URL v SBOM

CycloneDX i SPDX nesou u každé komponenty purl. Dokument 2026 Minimum Elements od CISA uvádí, že identifikátory komponent by měly používat běžné identifikátory, „jako jsou Common Platform Enumeration (CPE) a Package-URL (PURL)“, a německá BSI TR-03183-2 takové identifikátory vyžaduje u každé komponenty, pro kterou existují. Chybějící purl je problém kvality pole, nikoli mezera v úplnosti SBOM: komponenta je uvedena, ale žádná databáze bezpečnostních upozornění ji nedokáže vyhledat.

CRACI zaznamenává package URL pro každý balíček, který build stáhne, včetně každé crate v Rustu v buildu Yocto, takže jeho SBOM lze spárovat s bezpečnostními upozorněními. Podívejte se na SBOM z doby buildu.