Alles über SPDX 3.0
31.08.2023
Ingenieurwesen
(Dieser Beitrag wurde erstmals im September 2023 erstellt und im April 2024 nach der offiziellen Veröffentlichung von SPDX 3.0 aktualisiert).
SPDX ist eine der drei SBOM-Spezifikationen, die von NTIA/CISA empfohlen werden.
Am 16. April hat das SPDX-Team offiziell die Version 3.0 von SPDX veröffentlicht.
In einem gewaltigen Sprung von SPDX 2.3 bietet diese Version eine Vielzahl von Funktionen, die neue SBOM-Anwendungsfälle abdecken und bestehende Fähigkeiten vereinfachen.
Lasst uns eintauchen.
SPDX-Profile
Die Flexibilität von SPDX 3.0 ist in einer neuen Abstraktion namens Profil enthalten.
SPDX-Profile beschreiben einen speziellen Anwendungsfall für das SPDX-Dokument. Beispielsweise kann ein Sicherheitsprofil von Produktsicherheits-Spezialisten verwendet werden, während Vertreter von Rechts- und Compliance-Teams ein Lizenzprofil analysieren.
Daher kann ein SBOM, der nur für einen bestimmten Anwendungsfall anwendbar ist, entscheiden, die Details, die für ein anderes Profil gelten, nicht auszufüllen.

Um dies zu erreichen, werden die SPDX-Felder der Version 2.3 (mit einigen Änderungen) in drei Gruppen unterteilt:
SPDX-Kernmodell: Dieses Modell umfasst grundlegende Felder wie die Informationen über den Agenten des Dokuments (Person, Organisation oder Tool), Dokumentelemente und deren Beziehungen sowie andere Informationen, die für das Dokument relevant sind.
SPDX-Softwareprofil: umfasst software-spezifische Felder wie Paketdetails, enthaltene Dateien und Abhängigkeiten zwischen Softwarekomponenten.
SPDX-anwendungsspezifisches Profil: Dieses Feldset hängt vom betrachteten Profil ab und enthält spezifische Informationen zu jedem der sechs unterstützten Profile.
Jedes anwendungsspezifische Profil verfügt über seinen Konformitätspunkt für Profile, der im Wesentlichen die erforderlichen Felder für dieses spezielle Profil erklärt.
Ein SPDX-Dokument kann mehrere Profile zusammenfassen, was die Notwendigkeit vereinfacht, mehrere SBOMs mit unterschiedlichen Feldern für verschiedene Stakeholder auszufüllen.
Beispiele:
Die Konformität des Lizenzprofils erfordert, dass alle Pakete das abgeschlossene Lizenzfeld enthalten.
SPDX-Kernmodell + SPDX-Softwareprofil + Lizenzprofil ist funktional gleichwertig mit SPDX 2.3.
SPDX-Kernmodell + SPDX-Softwareprofil + KI Profil ist ein neuer KI-Anwendungsfall, der mit SPDX 3.0 abgedeckt ist.
SPDX 3.0 beginnt mit sechs Anwendungsfällen, die durch seine Profile abgedeckt sind:
Sicherheit, Lizenzierung, KI, Daten, Build, Lite
Sicherheitsprofil
Das Sicherheitsprofil ist dazu gedacht, die Entdeckung und Offenlegung von Schwachstellen, deren Schweregrad, Auswirkungen, Ausnutzungsrisiken und Sanierungspläne zu kommunizieren.
Während SPDX 2.3 einen Mechanismus zum Verknüpfen mit externen Schwachheitsdaten über die externe Referenzeigenschaft bereitstellte, unterstützt SPDX 3.0 das Sicherheitsprofil, um schnell wechselnde Schwachheitsdaten aus der Softwarezusammensetzung, die als Softwareprofil gespeichert ist, einzubetten.
Das Sicherheitsprofil umfasst Schwachstellenelemente, um spezifische Details wie ID, Zusammenfassung, externe Referenzen usw. zu detaillieren, zusammen mit einer neuen Reihe von Feldern zur Übermittlung von CVSS2, CVSS3, CVSS4 und SSVC-Schwachheitsbewertungen.
Es fügt auch Felder hinzu, um EPSS oder Ausnutzbarkeit einzubetten oder zu verlinken, (insbesondere nützlich zur Aufzeichnung der Ausnutzbarkeit von CISA KEV) und externe Sicherheitsinformationen wie Sicherheitsberichte, Verweise auf Patches oder benutzerdefinierte Sicherheitsinformationen.
Lizenzprofil

Dieses Profil ist das nächste, was es zu SPDX2.3 gibt, und deckt umfangreich Lizenz- und Urheberrechtsfelder aus SPDX2.3 ab. Das zugrunde liegende Modell wurde aktualisiert, um dem Modell 3.0 zu entsprechen, und dabei wurden die Felder über verschiedene Arten von Artefakten hinweg - Paket, Datei und Schnipsel - konsistent gestaltet.
SPDX 3.0 fügt auch die Möglichkeit hinzu, benutzerdefinierte Lizenzausnahmen als Lizenzzusätze hinzuzufügen.
Beispiel: MIT WITH AdditionRef-My-Own-Custom-Exception ist nur in SPDX 3.0 gültig.
KI-Profil

SPDX 3.0 unterstützt den Aufbau eines SBOM für KI-Anwendungen mit dem KI-Profil.
Dieses Profil umfasst Inventarkomponenten, Abhängigkeiten, andere KI-spezifische Referenzen sowie Sicherheits- und ethische Überlegungen im Zusammenhang mit der Anwendung.
Das KI-Profil enthält Felder zur Offenlegung der Attribute und des Verhaltens des zugrunde liegenden Modells, wie z.B. Modellarchitektur, Größe, erforderliche Ressourcen, einschließlich rechnerischer und energetischer Nutzung, Modellbeschränkungen, Methoden zur Datenvorverarbeitung des Modells und Erklärbarkeit des Modells.
Das KI-Profil enthält auch Sicherheitsüberlegungen, verwendet jedoch die allgemeine Risikoabschätzungsmethodik der EU und das Risikoassessment des EU-KI-Gesetzes.
Datenprofil

Um neben KI zu arbeiten, konzentriert sich das SPDX-Datenprofil (im Schema-Modell als Datensatz bezeichnet) wiederum auf Felder, um Attribute und das Verhalten der zugrunde liegenden Trainings- und Testdaten zu beschreiben, wie z. B. Datenentstehungsprozesse, Größe, Datenrauschen, Sensoren, die die Daten erzeugen, beabsichtigte Verwendung, bekannte Vorurteile, Sensitivitätsindikator, Verwendungsverfahren zur Anonymisierung und Vertraulichkeit der Daten.
Das Datenprofil ist für Datenwissenschaftler, Ingenieure und Governance-Beauftragte gedacht, um die Art der verwendeten Daten, die damit verbundenen Compliance- und regulatorischen Risiken zu verstehen und Systeme zu entwerfen, die resistent gegenüber Daten-Manipulationstechniken sind.
Profil erstellen

Dies ist ein weiterer neuer Satz von Feldern, um die build-spezifischen Informationen des Produkts zu übermitteln. Das Profil zielt darauf ab, die Sicherheit, Reproduzierbarkeit und Prüfbarkeit der Builds zu verbessern. Das Profil ist inspiriert von SLSA und reproduzierbaren Builds. Es kann Details wie Build-ID, Start- und Endzeiten, Umgebung, Argumente, Build-Tools und Versionen, Build-Schritte in einer Pipeline und Hashes des Artefakts unter anderem erfassen.
Lite-Profil

Manchmal wird eine Revision eines Softwarekomponenten unter bestimmten Bedingungen erstellt, wie z. B. – einem Hotfix oder basierend auf der bedingten Aktivierung von Funktionen mit einer Änderung der zugrunde liegenden Bedingungen. Diese potenziell vorübergehenden Revisionen dienen als Übergang zwischen dem regulären Veröffentlichungszyklus und können daher mit Gültigkeitsdaten versehen sein.
Das Nutzungsprofil in SPDX3.0 adressiert diese spezifische Reihe von Anwendungsfällen, indem es Felder zur Offenlegung der beabsichtigten Nutzung, Lizenzbedingungen, Build-Bedingungen, Testbedingungen und Gültigkeitsdaten bereitstellt. Dieses Profil kann auch helfen, interne Builds zu unterscheiden, wie z. B. Builds während des Prototypings und uneingeschränkten Tests.
SPDX Vereinfachungen
Eines der Ziele von SPDX 3.0 war es, die Spezifikation zu vereinfachen und sie auf ein umfangreicheres Set von Anwendungsfällen auszuweiten. SPDX-Profile oben ist ein Beispiel für eine Vereinfachung, die ein SDPX-Dokument nach Anwendungsfällen aufschlüsselt und nur das Ausfüllen von Werten erfordert, die auf das spezifische Profil zutreffen (z. B. Sicherheitsanwendungsfälle vs. Lizenzierungsanwendungsfälle).
Darüber hinaus wurden einige andere Änderungen an SPDX 3.0 vorgenommen, die darauf abzielen, die Mängel von SPDX 2.3 zu beheben:
Feldnamespace: SPDX 3.0 führt einen Namespace ein, um Felder zu identifizieren, die spezifisch für einen bestimmten Anwendungsfall sind. Beispielsweise befinden sich die Kernanwendungsfälle im Namespace Core, die KI-Anwendungsfälle im Namespace AI und Detaillizenzanwendungsfälle unter ExpandedLicenses. Dies ermöglicht es Umsetzern und Prüfern, sich auf die Felder im Bereich ihres Anwendungsfalls zu konzentrieren.
Elementimporte: SPDX 2.3 verwendet ExternalDocumentReferences, um ein SPDX-Dokument mit einem anderen SPDX-Dokument zu verbinden. Mit 3.0 wurde die Funktionalität erweitert, um Element-externe Dokumente direkt unter Verwendung einer Kombination aus Namespace und Imports zu referenzieren. Dies ermöglicht den Anwendungsfall von häufig generierten kleinen Element-SPDX-Dokumenten, die von weniger häufig generierten SPDX-Metadatendokumenten referenziert werden. Ein referenzierter Anwendungsfall war es, mit jedem Pull Request ein Snippet-SPDX als Element zu generieren, während das ursprüngliche Repository mit vollem SBOM verfolgt wird.
PURL: PURL oder Paket-URL wurde auf eine oberste Ebene angehoben und vereinfacht die Identifizierung von Komponenten.
Agent: Eine neue Klasse Agent umfasst alles, was auf ein System wirken kann, wie z. B. eine Person, Organisation oder Software-Tools. Daher werden die Eigenschaften Creator und Supplier aus SPDX 2.3 sicher durch einen Agenten ersetzt.
JSON-Pluralisierung: SPDX 2.3 hatte Arrays, die als pluralisierte Strings dargestellt wurden (z. B. externalRefs). Mit 3.0 wird SPDX konsistente Feldnamen zwischen RDF und JSON verwenden.
Wo kann ich mehr lernen?
SPDX 3.0 lädt weiterhin zu Input und Feedback zur Spezifikation ein, und die Mailingliste oder Github-Repository des SPDX-Teams ist der beste Weg, um das Team zu erreichen.
Interlynk erforscht aktiv und baut Tools für sowohl SPDX als auch CycloneDX Ökosysteme und wir beantworten gerne alle Fragen, die Sie haben könnten. Zögern Sie nicht, uns unter hello@interlynk.io oder über interlynk.io zu kontaktieren.
